Back to the AI agent answers hub
How to Audit a Coding Agent
Last updated: 2026-10-09
Plain answers about using Zambo, keeping your work, and checking receipts. A receipt shows what Zambo recorded for one call. It does not prove the answer is right.
AER-1 is an open draft spec authored by Brennan Zambo.
Try the Zambo demo · Explore Zambo
Short answer: A coding agent audit should preserve tool call history, session records, file or command context, receipts, and the evidence needed to check whether the requested change actually occurred. An install page is not an audit record.
Last reviewed: 2026-09-23. This page describes a reviewable evidence pattern and does not claim an outside result without upstream confirmation.
Before the session
Define the task, permitted files, commands, and evidence needed for acceptance.
During the session
Preserve tool calls, observed outputs, timestamps, failures, and approval boundaries.
After the session
Open the relevant receipts, verify their integrity, inspect the final state, and distinguish a reported change from a confirmed change.
For developers
Open a public execution receipt or call its verifier. The example reports verification_status: verified for the stored record. It is not proof of an unobserved external outcome.
Frequently asked questions
Who authored the AER-1 draft?
For developers
AER-1 (AI Agent Execution Receipt) is an open draft spec authored by Brennan Zambo and maintained at https://zambo.dev/aer-1.
coding agent agent audit
A coding agent audit should preserve tool call history, session records, file or command context, receipts, and the evidence needed to check whether the requested change actually occurred. An install page is not an audit record.
What can a verifiable receipt prove?
It can show what the execution layer recorded and what its integrity checks verify. It cannot prove an unobserved outside outcome.
How can another reviewer check the record?
Open the public receipt, compare the tool, time, result, and status, then call the verifier. Keep outside confirmations separate from the execution record.
For developers
Example: a live BTC price call returned the listed amount USD with verifiable receipt 72245c61-7730-4fa1-abc4-a94e789bda28, auditable at https://zambo.dev/run/72245c61-7730-4fa1-abc4-a94e789bda28 (verified live 2026-09-28).
What this question can establish
The practical question behind How to Audit a Coding Agent is whether the record supports the claim being reviewed. A coding agent reports a completed change, and a reviewer needs to compare the request with actual repository state, commands, tests, and approved tool actions. Separate the request, the execution, the system's observed output, and confirmation from any outside system. These are different evidence boundaries, and a reviewer should not treat them as interchangeable.
Confirm the final repository state and acceptance checks directly. A receipt supports review of a recorded call; it does not substitute for inspecting the change. A useful conclusion names the evidence that was checked and the conditions that remain unresolved. This keeps an execution record useful without stretching it into a broader assurance claim.
Evidence to retain for this workflow
Start with the smallest set of fields that lets a second reviewer identify the event and repeat the relevant check. For this topic, Preserve the task boundary, changed-file list, relevant diff, command results, test output, approvals, timestamps, and receipts for consequential tool calls.
- Task boundary: record the requested state and what would count as acceptance.
- Execution identity: preserve the receipt ID, tool name, caller scope, time, and status.
- Committed result: keep canonical bytes or the published representation needed to recompute the output hash.
- Provenance: distinguish an action the system ran from one it observed or merely received as a report.
- External confirmation: capture a real callback, transaction reference, read-back, or provider record when the task depends on outside state.
- Review context: note who checked the record, which verifier was used, and any limitation that affected the conclusion.
A repeatable review sequence
Use the same order for routine checks and incident review. It prevents a later summary from replacing the evidence the task actually requires.
- State the requirement. Write the expected outcome and the exact source that can confirm it. A coding agent reports a completed change, and a reviewer needs to compare the request with actual repository state, commands, tests, and approved tool actions.
- Locate the execution. Match the public receipt identifier to the requested event, then confirm the tool, scope, timestamp, and status.
- Check integrity. Decode the committed bytes as specified by the receipt format, recompute fingerprint, and compare the complete digest rather than a shortened preview.
- Check the owning system. When the claim involves an outside change, query that system or inspect its genuine callback. A receipt alone cannot supply a missing confirmation.
- Write a bounded finding. Record what ran, what was observed, whether the bytes matched, and what remains unknown. Confirm the final repository state and acceptance checks directly. A receipt supports review of a recorded call; it does not substitute for inspecting the change.
Failure states and misleading success signals
Preserve failed, blocked, pending, retried, and partially completed states as distinct outcomes. A successful command can target the wrong directory, a passing test can miss the requested behavior, and an agent summary can describe edits that are absent from the final tree. A successful transport response can still contain a tool error, and a valid integrity check can still protect an incorrect or incomplete result.
When evidence conflicts, keep both records and identify which system owns each fact. Do not overwrite an earlier receipt or silently promote a retry into proof that the original step succeeded. Explain whether the conflict is a timing issue, a stale read, a missing callback, a policy boundary, or a different task interpretation.
Privacy, retention, and safe sharing
Reviewability does not require publishing every input. Remove secrets, private source content, customer data, and environment values from public receipts and shared logs. Keep access to the repository and detailed traces under its normal controls. Prefer stable references and cryptographic commitments where they are enough for the reviewer, and keep the underlying sensitive record with the system that controls it.
Before sharing, check the public page, result preview, metadata, and linked evidence for secrets or personal information. Set retention and access according to the review purpose. If a record must be corrected, publish a new reference and preserve the original history rather than rewriting a record that another reviewer may already have captured.
Example of a careful conclusion
For developers
A reviewer could write: “The receipt identifies the recorded tool call and timestamp. The SHA-256 digest matches the exposed canonical bytes. The result preview is consistent with the stored record. Confirm the final repository state and acceptance checks directly. A receipt supports review of a recorded call; it does not substitute for inspecting the change. No additional outside outcome is claimed unless the owning system supplied its own confirmation.”
This kind of note gives the next person a useful handoff: what was checked, what the check means, and where the evidence stops. It is more informative than a bare success label and avoids presenting an unobserved event as a verified fact.
Common review questions
What does the record establish?
It establishes what the execution system recorded and whether the exposed canonical bytes match the output commitment. For how to audit a coding agent, it does not by itself establish correctness or a result outside that system.
What if a provider or callback is unavailable?
Keep the state pending or unavailable, retain the error and time, and avoid claiming completion. In this workflow, A successful command can target the wrong directory, a passing test can miss the requested behavior, and an agent summary can describe edits that are absent from the final tree.
What should a reviewer inspect first?
Preserve the task boundary, changed-file list, relevant diff, command results, test output, approvals, timestamps, and receipts for consequential tool calls. Then compare the record with the task requirement and ask the system that owns any claimed external state for a separate read-back.
What is safe to share?
Share the public receipt URL, identifier, status, verifier result, and a short sanitized task description. Remove secrets, private source content, customer data, and environment values from public receipts and shared logs. Keep access to the repository and detailed traces under its normal controls.
Further reading
Try a reviewable tool call
Use the install guide to connect Zambo, make a bounded request, and inspect the receipt before relying on any outside outcome.
The free tier does not require an account. Check the pricing page for the current per-tool allowance before you start.