Every change to your books is a commit you can read
Countbean keeps your accounts as a plain-text Beancount ledger inside a git repository, which means every change an agent makes is an ordinary commit — a diff you can read, and revert, without asking anyone.
The thing people ask first about AI bookkeeping is not “can it categorise a coffee”. It is: if it gets something wrong, will I be able to tell?
Your book is a text file in a git repository. Not a metaphor for one — an actual repository, which you can clone. Shipped When the agent records something it writes lines into that file and commits them, so the answer to “what changed” is the same answer developers have had for twenty years. You read the diff.
2026-08-13 * "Unknown merchant" ""
+ Expenses:Unknown 218.60 USD
+ Assets:Bank:Checking -218.60 USD
Two things follow from that, and they are worth more than they look.
The ledger refuses what does not balance
Every write goes through bean-check before it is committed.
Shipped Double-entry is not a convention here, it
is a gate: an entry whose postings do not sum to zero is rejected rather than
saved.
This is the difference that matters when an agent is doing the typing. It cannot quietly leave your books in a state that does not add up, because the thing it is writing into will not accept one.
Anything ambiguous is flagged, not guessed
A transaction the agent is unsure about gets a ! and stays pending.
Shipped
2026-08-13 ! "Unknown merchant" ""
Expenses:Unknown 218.60 USD
Assets:Bank:Checking -218.60 USD
Three questions at the end of a month beats thirty confident wrong entries, and a pending entry is visible in every report rather than hidden in one.
What this does not give you
Being honest about the edges, because a page that only lists strengths is not worth reading:
- There is no export route yet. Your book is an ordinary git repository and nothing is locked in, but the one-click button that hands you a copy is not built. Not built
- There are no bank feeds. You export a file or photograph a receipt. Not built That is also why every bank in every country works on your first day, with no integration list to be missing from.
- The importer is being rebuilt. Reading a CSV works today because the model reads it. A deterministic, server-side importer is being built. Building
None of the good parts are unique to us — it is what plain-text accounting has always been, and it is why engineers have kept books this way for years. What changed is that you no longer have to write the postings yourself.