Governance
What a defensible AI agent audit trail looks like
Most teams building agents have logging. Very few have evidence. The distinction is invisible right up until the moment it is the only thing that matters, and by then it is too late to add.
A log is written for whoever is debugging, tonight, with the context already in their head. An audit trail is written for someone who was not there, who will read it a year later, who has no context, and who may be adversarial. Those are different documents with different requirements, and a system can have excellent logs and no audit trail whatsoever.
This is what we think the second one requires. It is written for engineers and compliance officers at institutions where somebody eventually asks the question, and it deliberately understates what cryptography can do for you.
The rules already reach agent-generated records
A common assumption is that AI records sit in a regulatory gap awaiting new rules. In financial services that is not the case: the existing recordkeeping regime is technology-neutral and already applies.
- SEC Rule 17a-4 and FINRA Rule 4511 govern the retention, preservation, and integrity of business records. They do not care whether a human or a model produced the record. If an agent generates a communication or a record of a business transaction, the obligation attaches.
- The EU AI Act (Regulation 2024/1689) requires high-risk systems to automatically record events over their lifetime, with those obligations applying from August 2026.
- Sector supervisors increasingly expect a firm to demonstrate how an automated decision was reached, not merely that it was reviewed.
Which of these binds your institution, and how, is a question for your counsel and your examiners. The point here is narrower: nobody is waiting for a rule. The design question is live now.
Two useful reference points if you are building the vocabulary rather than the system: the NIST AI Risk Management Framework, and the FINOS AI governance framework, which is written from inside financial services rather than at it.
Six properties that separate evidence from logging
1. Every external call is recorded, including the model call
The unit of record is the call that left your boundary: actor, action, inputs, decision, timestamp. A model call is an external call and gets the same treatment as a payment instruction or a partner API request. This sounds obvious and is routinely missed, because inference feels like computation rather than like an outbound request. It is an outbound request.
Record which provider and which model served it, not just "the AI". A year later, "the model said" is not an answer, because the model that said it may no longer exist.
2. The record is append-only, and the privilege to write it is not the privilege to change it
An audit table that the application can update is not an audit table. The write path appends; nothing in the normal application role can modify or delete. This is a permissions design question before it is a storage question, and it is the property most often traded away for convenience during a deadline.
3. Tamper-evident, not tamper-proof
Chain the records: each entry includes a cryptographic hash of the previous entry, so altering or removing any historical record breaks the chain, and the break is detectable by recomputing it.
Be precise about what this buys. It makes tampering detectable. It does not make it impossible: an actor with enough access can rewrite the chain from the point of alteration forward. That is why the chain is necessary but not sufficient, and why it has to be paired with append-only storage, separated privileges, and periodically anchoring the chain head somewhere outside the system that produced it. A vendor who says "tamper-proof" is either simplifying or has not thought about it.
4. Reconstructable to the state at the time
The question an examiner asks is not "what did the system do", it is "why was that permitted". Answering it requires the record to capture the state the decision was made against: which policy version was in force, which model roster was configured, what the data classification was, which confirmation was obtained and by whom.
This is where most trails fail. They record the action perfectly and omit everything needed to evaluate it. Since the surrounding configuration will have changed by the time anyone looks, a record without version context is a record of an event nobody can assess.
5. Privacy-safe by construction
Prompts and completions are user data. Storing them in full, indefinitely, because they may help debugging is a privacy exposure that usually exceeds the compliance benefit and is difficult to unwind once the retention has happened.
The discipline is to store what establishes what happened and why it was permitted, with sensitive fields redacted, and to treat the audit trail as subject to the same data-handling rules as everything else rather than as an exempt zone. This is also the reason an audit trail and an observability pipeline should not be the same system: telemetry gets shipped to tools chosen for convenience, and audit records must not follow it there.
6. It records the gate, and the gate is real
The audit trail's most important entries are the ones about actions that did not execute on the model's own authority. For anything consequential, moving money, touching health data, committing to something irreversible, the record should show that a human confirmation was required, who gave it, and when.
Which means the gate has to exist. Three things distinguish a real one:
- The gated category is defined explicitly. "Money, health data, and irreversible bookings" is a boundary. "Sensitive actions" is marketing.
- The gate sits on execution, not intent. The agent stays free to assemble, compare, and draft. It is not free to commit.
- It cannot be switched off for convenience. A confirmation step with a "do not ask again" option is a speed bump with a bypass.
What this looks like when it is missing
The failure is rarely dramatic. It looks like this: an agent took an action nine months ago. The customer disputes it. You have a log line showing the action, a model name that has since been retired, no record of which prompt template version produced it, no record of the data classification the request carried, and a confirmation flag set to true with no indication of who set it. Everything is technically logged. Nothing is answerable.
The cost is not the fine. The cost is that you cannot distinguish "the system worked correctly and the customer is mistaken" from "the system did something it should not have", and in that ambiguity you concede.
How we build it
Stated concretely because it is inspectable rather than aspirational, and because it is a narrower claim than a case study.
In the platform this company builds, every model call is written to the compliance and audit trail as a matter of architecture: actor, action, inputs, decision, timestamp, with sensitive fields redacted, alongside which provider and model served it and what it cost. That is a structural rule rather than a configuration option, which is the only version of it that survives a deadline. The platform's internal tooling chains those records so that a modification to history is detectable. Nothing that moves money or commits an irreversible action executes on model output alone.
We are equally clear about what is not built. The reason a particular model was selected is not yet recorded anywhere in our own system, only the selection itself. That is a real gap, it is the sixth property applied to routing rather than to actions, and we would rather say so than let a reader assume otherwise. If you are evaluating any vendor on this dimension, it is the question worth asking: resolution is not policy.
A short checklist
- Is a model call recorded as an external call, with provider and model id?
- Can the application role modify an audit record? Try it.
- If a record were altered, how would you find out, and how long would it take?
- Does the record capture the policy and configuration version in force at the time?
- Is prompt content retained, and was that a decision or a default?
- For each consequential action class, does the record show who confirmed it?
- Is the audit trail a different system from your observability pipeline?
Nothing on this page is legal, regulatory, or compliance advice. It is how we build, and why.
Related reading
The routing counterpart to this piece is what model portability actually requires, and the deployment counterpart is hosted, private endpoint, or self-hosted. If this is a live problem in a regulated institution rather than a reading exercise, AI integration for financial services sets out the four constraints we design against, and the engagement model describes what a first conversation produces.