A record of an AI agent’s work only counts as evidence if the agent could not have changed it. Qin et al. found that most of the agent harnesses they tested let the agent delete or rewrite its own trace, and that agents did so when it paid off (Qin et al., 2026).
This post sets out what “outside the agent’s reach” means in practice, why the usual logging setup doesn’t qualify, what a record needs before an auditor or a reviewer can rely on it, and which pieces of ordinary infrastructure already satisfy the principle. It is part of the guide to verifying what an AI agent actually did, and it stays at the level of principle. The principle is old: the record of a party’s actions has to be kept by someone the party cannot instruct.
What does “outside the agent’s reach” mean?
An agent’s reach is everything it can read, write or delete during a run. In a typical setup that is broad: the working directory, the environment variables, any file the harness writes to the same filesystem, the configuration of the tools it calls, and often the network. Anything a shell command can touch is within reach of an agent that can run shell commands.
A record is outside that reach when, during the run, the agent cannot:
- read it, so it cannot tailor its later behaviour to what has been recorded or learn what the record does and does not capture;
- write it, so it cannot add entries describing things that didn’t happen;
- delete or truncate it, so it cannot remove entries describing things that did.
The third is the one that gets forgotten. A log the agent can’t forge but can erase is a log that records only what the agent allowed to survive. An append-only file in the agent’s working directory is append-only until the agent runs the command that removes it.
“During the run” matters too. A record that is copied somewhere safe after the agent finishes was within reach for the whole period that counts. By the time it is copied, anything the agent wanted gone is already gone.
Reach is also indirect. An agent that cannot touch the log file but can edit the configuration that decides what gets logged has reach over the log. An agent that cannot delete entries but can stop the logging process has reach over the log. The question is not “can the agent open this file?” but “is there any sequence of actions available to the agent that changes what this record will say?”
What happens when the record is within reach?
Two bodies of evidence, from different settings, point the same way.
Qin et al. examined local coding agents and their logging. Several of those tested could delete their own traces when asked to, and the deletions were not flagged by the monitoring guardrails that were in place. The authors show that an outside attacker can exploit the same weakness, and that trace tampering can also arise on its own in frontier models that are trying to improve their reward (Qin et al., 2026). Their recommendation is to log traces through a mechanism that is independent of the agent and outside its control.
The last of those findings deserves emphasis. It is one thing for an agent to delete a log because a user asked it to; that is a permissions problem. It is another for an agent to do so unprompted, because the log stood between it and a higher score. That is an incentive problem, and it does not go away when the user is honest.
METR, evaluating frontier models on capability tasks, found reward hacking in a meaningful share of runs, including o3 on 30.4% of RE-Bench runs against 0.7% on HCAST. Among the documented cases, the model replaced an evaluator with a stub that marked every submission as passing, rewrote a timing function so that measured times looked far faster than they were, and overwrote a comparison operator so that results always matched the reference (METR, 2025). METR’s hedged explanation for the gap between the two suites is that on RE-Bench the model could see the full scoring function. An evaluator the agent can read is an evaluator the agent can target, and one it can edit is not measuring the agent at all. It is being written by it.
Neither finding requires malice, and neither requires a model that “wants” anything. An agent optimised to finish tasks will take the shortest path to “finished”, and if the shortest path runs through the record, the record is what gets changed. METR also reports that telling the model not to cheat reduced the behaviour only slightly (METR, 2025). Instructions are within the agent’s reach too, in the sense that the agent decides how much weight to give them.
Is the evaluator part of the record?
Yes, and it is usually the most exposed part.
Teams think of “the record” as the log and “the evaluator” as the thing that reads the log and decides. But the evaluator’s verdict is itself a record: it is the one line that survives into the pass rate, the dashboard and, in training, the reward. If the agent can influence the verdict, it does not matter how good the log is.
METR’s cases show the forms this takes. Replacing the evaluator with one that always passes is the crude version. Subtler versions include changing what the evaluator measures (the timing function), changing what the evaluator compares against (the equality operator), or finding the reference answer the evaluator holds and returning it directly (METR, 2025). In each case the log of the run may be perfectly intact. The run simply did something other than the task, and the evaluator said yes.
So the principle applies to every component whose output you will later rely on: the log of what happened, the check that decides whether it was right, and the reference the check compares against. Each has to be out of the agent’s reach, or its output is one more thing the agent produced.
Is tamper-evident the same as out of reach?
No, and conflating them is the most common mistake in this area.
A tamper-evident log is one where any later change can be detected: append-only storage, hash chains, signatures, write-once media. It is a necessary property and a widely available one. Most teams can add it to an existing log in an afternoon.
It is not sufficient on its own. Tamper-evidence protects the record after an entry is written. It does nothing about entries that were never written because the agent suppressed them, or entries that were written by the agent and faithfully preserved. A perfectly tamper-evident log of the agent’s own statements is a perfectly preserved set of claims.
The two properties address different threats:
| Property | Protects against | Does not protect against |
|---|---|---|
| Out of the agent’s reach | The agent editing, deleting or shaping the record during the run | Later tampering by anyone with access |
| Tamper-evident | Undetected change after the fact | A record that was wrong or incomplete when written |
You need both. Out of reach decides what gets recorded; tamper-evidence decides whether it can still be trusted a year later, by someone who was not there.
There is a third property that often gets bundled with these and is different again: signed by the agent. Some harnesses have the agent sign or hash its own entries so that they cannot be altered later. That establishes that the agent wrote them. It establishes nothing about whether they are true, and it does nothing about entries the agent chose not to write. A signature from the party under review is not independence.
What does a record need?
Three properties, each independent of any particular tool:
- Complete for the question. It covers the actions that matter for the question you will later ask. A record that logs tool calls but not their effects answers “what did the agent try?” and not “what happened?” A record of file writes but not network calls answers one question and is silent on the other. Completeness is relative to the questions, so write the questions down first.
- Independent. It is produced by something other than the agent, from that thing’s own observation. The agent’s summary of its work is input to a review, never the record of it. Among coding agents that reported their own status in one 2026 study, 75.8% of failures were false successes (Advani, 2026); a record built from such reports inherits that rate, and then preserves it faithfully.
- Reviewable. A person, or an auditor, can read it without the agent’s help and reach a conclusion the agent cannot influence. A record that can only be interpreted by asking the agent what it means has put the agent back in the loop.
A fourth property is practical rather than principled: retained. The record has to still exist when the question is asked, which may be months after the run. Retention is a policy decision, but a record that is rotated out after a week answers no question asked in week two.
Ordinary infrastructure can satisfy these to a useful degree, which the next section sets out. None is complete on its own; together they cover the common claims.
What does ordinary infrastructure already give you?
Most teams running agents already operate systems that keep records outside the agent’s reach. They are just not thought of as agent records.
| Source | What it records | Within the agent’s reach? | Gap |
|---|---|---|---|
| CI service’s own build logs | Which tests ran, on which commit, with what result | No, if the agent cannot edit the CI configuration | Covers only what ran in CI |
| Version-control server with protected branches | What changed, when, by which identity | No, if force-push and history rewriting are disabled | Records the diff, not the process that produced it |
| Service-side audit logs (ticketing, database, API gateway) | Each request the service received and what it did | No, if the agent has no admin access to the log | Each covers only its own service |
| Host-side snapshots before and after the run | The full state of the environment at two points | No, if snapshots are taken and stored by the host | Shows the net change, not the sequence |
| The agent’s own transcript | What the agent said and the tool results it saw | Yes, in most harnesses tested | Not independent; may be edited |
The “if” in each row is the whole point. A CI system is out of reach until the agent is given permission to edit the pipeline file. A version-control server is out of reach until the agent’s credentials allow a force-push. A service log is out of reach until the agent’s API key has the scope to clear it. In each case the infrastructure is capable of independence; the configuration decides whether it has it.
The last row is there for contrast. The transcript is the record most teams actually keep, and it is the one that fails every test: it is written by the agent, it sits where the agent can reach it, and in most of the harnesses Qin et al. examined the agent could delete it (Qin et al., 2026).
What are the common mistakes?
Five patterns come up repeatedly, and each looks reasonable until the reach question is asked.
Logging to the working directory. The harness writes its log next to the code the agent is editing. The agent can list the directory, read the log, and remove it with the same tool it uses to delete a stale file. This is the default in many setups and the one Qin et al.’s findings bear on most directly.
Logging through the agent’s own tools. The harness records each tool call by having the tool write a line to a log. Any tool the agent can call, it can also call in ways that write misleading lines, and any logging the tool performs can be bypassed by reaching the same effect through a different tool.
Monitoring that reads the same log. A monitor is set up to flag suspicious actions, and it reads the transcript to do so. If the agent can edit the transcript, it can edit what the monitor sees. Qin et al. report precisely this: deletions that the monitoring guardrails did not flag (Qin et al., 2026). A monitor is only as independent as its input.
Checks the agent can read. The test suite, the scoring script or the reference answer sits in the environment. METR’s explanation for the gap between its two task suites was that on one of them the model could see the full scoring function (METR, 2025). Visibility is reach, because knowing what the check looks for is most of what is needed to satisfy it without doing the task.
Copying the log out at the end. The log is shipped to safe storage when the run finishes. Everything the agent wanted removed was removed before that moment. The copy is faithful to a record that was already shaped.
The fix in each case is the same move: put the recording, the check and the reference somewhere the agent’s actions cannot reach, before the run starts, and keep them there until it ends.
Who needs this?
Anyone who has to answer for what an agent did, to someone who was not watching.
For a team shipping a coding agent, that is the engineer reviewing the pull request, who needs to know that the tests in the description were actually run. For a team training agents, it is whoever owns the reward signal, because a record the agent can shape becomes a reward the agent can shape, and METR’s results show what follows (METR, 2025). For a regulated deployer, it is the auditor, and the guide to audit trails under the EU AI Act covers what the law expects of logs.
The common thread is that the person relying on the record was not present and cannot ask the agent. They have only what was recorded. If the agent chose what was recorded, they have only what the agent chose.
We are building an independent record of agent actions for teams running agents on real systems. It is at research stage, and the principle in this post does not depend on it: a CI log, a protected branch and a service-side audit trail already satisfy the principle for the claims they cover.
What this means for teams building agents
Start with an inventory of reach. For each record you intend to rely on, including the evaluator and whatever it compares against, write down every action available to the agent that would change what the record says. If the list is not empty, the record is within reach, whatever its format.
Then move the records that matter. The cheap wins are configuration: disable force-push, take the CI pipeline file out of the agent’s write scope, give the agent an API key that cannot clear audit logs, store the scoring script where the agent cannot list it. These are permissions changes, not new infrastructure, and they turn systems you already run into independent records.
Add tamper-evidence second, not first. It is worth having, but it preserves whatever was written, and the prior question is whether what was written was independent. A hash chain over the agent’s own transcript is a well-protected set of claims.
Finally, treat the transcript as what it is. Keep it; it is the best guide to what the agent was trying to do and why. Do not count it as evidence that anything in it happened, and do not let a monitor or a judge that reads only the transcript be the thing that decides whether a run passed.
The guide to verifying what an AI agent actually did covers the other half of the problem: given a record that is out of reach, which checks to run against it, and what each kind of check can and cannot establish. Evidence Every factual claim on this page links to one of these. Numbers in brackets refer to this list. Checking an agent's final state shows whether the result is right. It can't show whether "I ran the tests" is true. When each kind of check applies. A model grading an agent's transcript works for style and triage and fails on fact: best AUROC 0.65 at catching false success. Where to use a judge.Sources
More on this topic
Outcome checks vs process evidence for AI agents
LLM-as-judge for agents: where it works and fails