History and undo

ShippedWorks today.

Every change to your book is an ordinary git commit — so the answer to “what changed” is a diff you can read, and undoing one is a revert.

The audit trail

Your book is a plain-text Beancount ledger inside a git repository. Every write — by you, by the agent, by the API — is committed. history lists them, each carrying what changed and when.

  2026-08-13 * "Unknown merchant" ""
+   Expenses:Unknown          218.60 USD
+   Assets:Bank:Checking     -218.60 USD

The gate

Every write runs through bean-check before it commits. An entry whose postings do not sum to zero is refused, not saved and flagged. An automated writer cannot leave the ledger in a state that does not add up.

Undo

revert reverses a commit. There is one real limitation, worth knowing before you need it:

Revert only reliably works on the tip. Reverting a middle commit fails with a git conflict once a later commit has appended to the same file. The tool leaves the ledger unchanged — which is correct — but a mistake buried in history has to be fixed forward with a compensating transaction, not undone.

That is how real accounting works anyway. It is still a limitation rather than a design choice, and it is stated here rather than discovered.

What there is not

No one-click export. The data is a git repository and nothing is trapped, but the route that hands you a bundle does not exist yet — tracked as #48.

Something here wrong or missing? Put it on the board — it is public, and the reply is in the thread.