AI Agent Recordkeeping: What to Save From Every Run
Most teams keep the wrong artifact. They keep the transcript, which is the conversation about the work, and throw away the run record, which is the work. Six months later somebody asks what an agent did on a specific job and the team produces a chat export: editable, unordered, and silent about every call that happened outside the chat window.
Recordkeeping for agents is a solved shape. It is the same shape whether the run touched a customer export, a codebase, or a client deliverable, and it fits in seven fields. Save these at execution time, from the system that ran the call, and the record can defend itself. Save anything less and you are keeping a story, not a record.
The seven fields
- Caller. Which agent or session made the call. A record without an owner is a rumor. In a multi-agent job this is the field that separates "the system did it" into the specific worker that did.
- Tool. The exact capability invoked, not a category. "Searched" is not a record. The named tool, as called, is.
- Inputs. What the call was given. Half of every dispute about agent work is a dispute about what the agent was told, and this field settles it before it starts.
- Saved result. The result bytes, saved as returned, not paraphrased. The moment a result is summarized by the agent that produced it, the record stops being evidence and becomes testimony.
- Timestamp. When the call returned, from the executing system's clock, fixed into the record at save time.
- Sequence position. Where this call sits in its job. Audits are sequence questions: what happened before the export, what happened after the approval. A pile of timestamped calls with no job order still leaves the story arguable.
- A commitment over the result. A SHA-256 digest of the canonical result bytes, computed when the result is saved. This is the field that makes the other six worth keeping, because it makes silent edits detectable by anyone, forever, with no key and no account.
That is the whole checklist. On Zambo this is not a discipline a team has to maintain by hand: every call through the MCP endpoint at https://zambo.dev/mcp writes an AER-1 receipt for the run: who called, which tool, the saved result under commitment, timestamped and sequenced in its job, at a public link, the moment the call returns. The format is an open Internet-Draft (draft-zambo-aer1, revision -26) with a public corpus of 143 vectors and 146 checks, so the record's shape is testable by software that has never heard of your company.
What a good record looks like in the wild
Two calls from a reference-data check I ran this morning, each saving the value a review relied on. First, the BTC value as recorded:
https://zambo.dev/run/f3010bb2-7f88-4a1b-9294-006cf1912484
Then the ETH value:
https://zambo.dev/run/d14d50c0-1ded-4f0b-8872-53fb19d95b2c
And the two sealed into the single workflow record for the job, sequence and root commitment included:
https://zambo.dev/workflow/49c5adee-9045-4ffa-be2a-cf70b97e6f0f
Notice what is not there. Nothing in that chain needs my login, my database, or my continued existence as a vendor. An auditor, a client, or a regulator's technical staff can open the pages and recompute every digest themselves. Verification that requires the record-keeper's cooperation is not verification, it is a request.
Gaps are part of the record
The field teams forget is the one they cannot fake later: absence. If a step was supposed to run and no receipt exists for it, the sequence shows the hole. That is a feature. A record system that lets you backfill a missing step teaches everyone watching that the record is negotiable. A sequence with visible gaps tells the truth twice: once about what ran, and once about what did not. When you evaluate any recordkeeping setup, ask it one question: show me a run where a step was skipped. If it cannot produce the gap, it is a scrapbook.
Retention, in plain terms
Keep the receipts for at least as long as the work they describe can be questioned, which for client work means the life of the contract plus the dispute window, and for regulated work means whatever your retention schedule already says about equivalent human records. The receipts are small, the links are stable, and the public stream behind them currently holds 125,177 records and grows with every call. The cost side is not a reason to keep less: the free tier alone receipts 20 calls plus one wrap-up every day, and a $0.99 Day Pass covers an unlimited day of runs.
The boundary, stated once
A receipt proves the saved result was not changed after saving. It never proves the answer was right, and keeping receipts is not a compliance certification. What it is, is the difference between answering an audit from evidence and answering it from memory. Teams that run agents on real work get asked eventually. The only choice is whether the record was written when the work happened, by the machine that did it, or reconstructed later by the people being asked.
Save the seven fields at execution time, keep the gaps visible, and let anyone recompute. Your AI said it did the work. Here is the receipt.