The more I think about autonomous AI agents, the more I believe we need to separate two things:
What the agent remembers
and
What the system can prove.
An AI agent can remember what happened during a session.
But that memory can disappear.
The session can end.
The context can be compressed.
The model can change.
The agent can be restarted.
None of that should affect our ability to answer:
That's why I think auditability has to exist outside the agent.
Consider a production deployment.
The agent says:
"I deployed version 2.4.1."
That's useful.
But it's not evidence.
A proper audit record should be independently stored:
Agent
↓
Requested Action
↓
Policy Evaluation
↓
Authorization Decision
↓
Human Approval (if required)
↓
Execution
↓
Result
↓
Audit Evidence
The agent can explain what it thinks happened.
The system should be able to prove what actually happened.
This distinction becomes even more important when multiple agents operate across multiple sessions.
Imagine Agent A makes a change.
Agent B reviews it.
Agent C deploys it.
The next day, Agent D investigates an incident.
Agent D shouldn't have to trust Agent A's memory.
It should be able to query an immutable history of decisions and actions.
That's the direction I'm exploring with NAEOS.
The audit trail should outlive the agent.
It should be independent of the model.
Independent of the session.
Independent of the agent's own memory.
Because once AI starts performing consequential actions, "the AI remembers doing it" isn't an acceptable audit mechanism.
This leads to a principle I'm increasingly convinced about:
Agent memory helps AI operate. Audit evidence helps organizations trust it.
Those are two completely different systems.
I'm curious how other builders see this.
If an AI agent modifies production infrastructure, what evidence would you require before trusting that action?
I would approach this by making the status of the information explicit, rather than asking the AI to keep deciding whether an old memory is still trustworthy.
More simply: put an index on the front page.
Give each record a timestamp and a visible status such as CURRENT, LEGACY, UNKNOWN, or STOP.
If a new record replaces an old one, I wouldn't delete or rewrite the old record. I would preserve it and add a reference such as "superseded by: Record 014."
That way, the history remains intact, but the AI doesn't have to infer whether an old decision is still the current instruction.
To me, the important part isn't making the AI forget old information. It's making the identity of the information obvious before the AI uses it.
The timestamp tells it when the information belongs to.
The status tells it how the information should be treated now.
The successor reference tells it where to go next.
I use this kind of indexing and status labeling in my actual work with AI, keeping old materials and artifacts while clearly separating what is current from what is historical.
Rather than making the AI better at guessing, I try to build a workspace where it doesn't need to guess.
If you're curious about what I'm actually building with AI, feel free to take a look here:
https://www.kaiaspec.com/
I would have the AI that did the work produce an inspection handoff, rather than asking it to produce the final proof itself.
The AI that actually made the change is probably the one that knows the most about what it just did. So I use that knowledge.
When it finishes, I have it produce a handoff that tells another AI:
But I don't treat the first AI saying "it worked" as evidence.
I give that handoff, the original instructions, and the actual artifact or system to a different AI. That AI independently checks the real thing and returns PASS/FAIL with evidence for each relevant item.
So I use the builder's knowledge, but I don't let the builder certify its own work.
To me, it's basically the same as an ordinary construction site:
The person who built it tells the inspector where the important inspection points are. The inspector is someone else.
I also keep history as evidence of what happened, but I don't treat history as the specification for what should happen next.
I actually use this kind of handoff and independent inspection in my work with AI. If you're curious, feel free to take a look at what I'm building with AI here:
https://www.kaiaspec.com/
I think this is exactly the direction AI Engineering should take: reduce ambiguity at the system level instead of expecting the model to resolve it at inference time.
What I'm building with NAEOS takes this one step further.
For me,
CURRENT / LEGACY / UNKNOWN / STOPis a useful information-state model, but it still needs to be separated from authority.An artifact can be current without being authorized to drive an action.
So I’m working around a stricter model:
Model proposes → Policy decides → Runtime executes → Observation verifies.
Every meaningful decision should carry enough context to answer:
And when something changes, the old state shouldn't disappear. It should remain part of the audit trail, with explicit successor/supersession relationships.
This matters especially when multiple AI coding agents operate on the same repository. An agent can have a perfectly reasonable plan that was valid yesterday but is no longer valid under today's policy.
The system shouldn't ask the model to remember that distinction.
The engineering system should enforce it.
That's the problem space I'm exploring with NAEOS: an open-source, vendor-neutral engineering layer around AI coding agents, focused on governance, policy, runtime enforcement, verification, and auditability.
Your “workspace where the AI doesn't need to guess” framing resonates strongly with this.
I would require external receipts, not only an internal event chain. For a deployment: commit digest, artifact digest, policy decision, actor identity, target environment, provider deployment ID, resulting health signal, and rollback outcome. For email or payments, the downstream provider's acceptance and final status belong in the evidence too. An append-only log can prove what the agent requested; only independent observation can prove what changed outside the system.
Agreed. I think this sharpens the Evidence model considerably.
An internal event chain can establish the history of what NAEOS and the agent recorded, but for consequential actions we also need an external receipt from the system that was actually affected.
For a deployment, for example, the evidence should be able to bind together:
commit digest → artifact digest → policy decision → actor identity → target environment → provider deployment ID → resulting health signal → rollback outcome
For email, payments, or other external side effects, the downstream provider's acceptance and final status become part of the evidence as well.
That gives us a useful distinction:
Audit trail = what our system recorded.
External receipt = what the external system acknowledged.
Observation = what we can independently establish about the resulting state.
I also think this prevents an important category error: a provider acceptance receipt shouldn't automatically mean the intended business outcome occurred either. "Payment accepted" and "payment settled", for example, may be different states.
So the evidence model probably needs to preserve the lifecycle rather than collapse it into a single SUCCESS:
Authorized → Dispatched → Accepted → Observed → Confirmed / Failed / Unknown
This fits well with the HandoffProbe direction we've been discussing. We can test whether NAEOS preserves the distinction when the internal record says one thing, the external receipt says another, and downstream observation is incomplete or conflicting.
That feels like a much more concrete specification boundary than simply saying the audit log is tamper-evident.
I strongly agree with the distinction between what an agent remembers and what a system can actually prove.
There's a similar distinction on the answer side:
An AI can sound confident about what it believes happened, but that doesn't make the result reliable.
With multiple AI systems, disagreement can become another useful signal — especially when independent systems reach different conclusions about the same task.
I think trustworthy AI systems will increasingly need both: evidence of what actually happened, and mechanisms that surface uncertainty instead of hiding it.
Exactly. I think those are two sides of the same trust problem.
An agent can provide a highly confident explanation of what it believes happened, but confidence is still a property of the model — not proof of the outcome.
For NAEOS, I’m thinking about separating these explicitly:
Model claim → what the agent believes
Independent evidence → what the system can establish
Model disagreement → a signal that confidence should decrease or verification should increase
The independence part matters, though. Three models agreeing isn't automatically strong evidence if they all received the same flawed context or inherited the same assumption.
So disagreement can be useful, but genuine independence is what makes agreement meaningful.
Ultimately I think trustworthy agent systems need both dimensions: evidence about what actually happened, and explicit mechanisms for representing uncertainty about what we don't know.
That also fits the broader NAEOS principle I'm arriving at: the system shouldn't try to make uncertainty disappear. It should make uncertainty visible, measurable, and actionable.
This distinction between memory and evidence is important.
I think there is a similar distinction between an agent's explanation and an independently verified result.
An agent can explain why it believes an action was correct, but that explanation shouldn't automatically become the evidence that the action was correct.
I'm exploring a related problem with NeuralCore AI from the model side: when multiple independent models agree, that's useful evidence; when they disagree, that disagreement can be a signal that more verification is needed.
As agents become more autonomous, separating model confidence from independent evidence seems increasingly important.
Exactly. I think that distinction is becoming one of the more important trust boundaries in agentic systems.
An agent’s explanation is evidence of what the agent believes happened, not necessarily evidence that it actually happened or that the outcome was correct.
That maps closely to how I’m thinking about NAEOS:
Agent reasoning → claim
Independent verification → evidence
Agreement/disagreement → confidence or risk signal
I also like your point about multiple independent models. Agreement can increase confidence, but disagreement is potentially more valuable because it tells us the system has reached an epistemic boundary where additional verification may be warranted.
The key for me is that independence has to be real. If multiple models inherit the same context, assumptions, or flawed evidence, agreement can create the illusion of corroboration.
That’s why I see NAEOS separating execution, reasoning, authorization, and verification rather than treating the agent’s own reasoning as the final source of truth.
I’d be interested in seeing how you’re approaching the independence/disagreement problem with NeuralCore AI. There may be an interesting connection between model-level evidence aggregation and the verification layer we’re designing in NAEOS.
Exactly. I think the key principle is:
For NAEOS, I’d make the audit layer an independent, append-only evidence system.
Every consequential action receives a unique action ID and produces a signed event containing at least:
actor → intent → policy version → authorization decision → resource scope → action → timestamp → side effects → outcome
The important part is that the agent can request an action, but it cannot rewrite the resulting evidence.
I’d also use hash chaining or an equivalent tamper-evident mechanism so that modifying or deleting an historical event becomes detectable. Critical events could additionally be anchored outside the agent's execution environment.
If an agent is compromised, it may still attempt unauthorized actions — and that is exactly what the system should capture. The attacker can compromise the actor, but should not be able to silently rewrite the evidence layer.
So the trust boundary becomes:
Agent = untrusted executor
Policy engine = authorization authority
Audit ledger = independent evidence
That separation is what makes the audit trail useful after compromise, rather than merely being the agent's own memory of what happened.
The separation between memory and evidence is the key point.
What makes an audit trail trustworthy enough to survive a compromised agent?
I think the key is that the agent being audited cannot be the authority over its own evidence.
In NAEOS, I’d treat the agent as an untrusted executor. The audit trail should be produced and protected by an independent evidence layer, with things like:
So if an agent is compromised, it may be able to lie about what it says it did, but it shouldn't be able to rewrite the authoritative record of what the system actually authorized, dispatched, or observed.
That distinction is important:
Agent explanation ≠ evidence
Agent memory ≠ audit history
State diff ≠ complete side-effect history
The audit system doesn't need to prove that the agent was honest. It needs to remain trustworthy precisely when the agent isn't.
That is also why I'm thinking of audit in terms of the full lifecycle:
Intent → Policy Decision → Authorization → Execution → Side Effects → Observations → Evidence
The interesting hardening question is then: what happens when the agent controls part of the observation path too? That's where independent instrumentation and external evidence become important.