Audit-first design: every run on the record
An append-only audit stream is not red tape — it is the difference between an agent you can ship and one you have to babysit.
If you cannot answer "what did this agent do, when, and how much did it cost?" in one query, you do not have an agent — you have a liability. Audit-first design means the audit event is written in the same transaction as the action, not retroactively.
Three states, one stream
Every run resolves to one of three statuses:
- allowed — the run executed and cost was metered.
- revoked — a policy (spend cap, lifecycle) stopped the run before it fired.
- failed — the run attempted but the model or tool errored.
Reviewing only allowed misses the most interesting events: every revoked row is a cap that worked. Every failed row is a route that needs a better fallback.
Make it filterable
The stream needs to answer per-agent, per-owner, and per-model questions. Stamp every event with agent_id and owner_id at write time — later, governance reports become a filter, not an investigation.