Relm Journal · Nº 02

Nº 02

Humans are leaving the loop. Now the boundary has to be real.

On August 14, Auto Mode becomes the default in Claude Code for Pro, Max, and Team plans. Instead of asking a human to approve each command, a separate model reviews what Claude is about to run. It blocks actions that look destructive, irreversible, or outside the intended environment. In a study of 1,053 testers, it caught 89% of dangerous commands. Humans caught 13.6%.

That is a substantial improvement, and replacing the approval prompt is the right move. It also makes the underlying security problem easier to see. Once agents run autonomously, the question is no longer whether a human should approve every step. It is what still has to hold when both the agent and the classifier get a decision wrong.

What still has to hold is not another reviewer. Auto Mode decides what an agent should do. It does not change what an agent can do. That difference is why the failure worth worrying about is not a classifier missing one command. It is a system where that classifier was the only thing holding the line.

Human approval was never a security boundary

Users reject 39% of plans but only 3% of individual permission requests. That is what you would expect when people evaluate the agent's intent once and then stop evaluating the individual steps. The rubber-stamping deepens as a session runs: testers caught 17% of dangerous commands early on and roughly 5% after fifty prompts.

Head-to-head, Auto Mode blocked 800 dangerous commands that humans had approved. Humans blocked only six that Auto Mode allowed. The approval prompt was not providing meaningful runtime protection. It was asking developers to repeatedly evaluate low-level actions while they were trying to get work done. Auto Mode is clearly better at that job.

But it is still doing the same kind of job. A human looked at an action and decided whether it seemed safe. Now a model does the same thing. Better judgment is useful, but judgment is not the same thing as a security boundary.

A checkpoint asks whether an action should happen. A boundary decides whether it can. A checkpoint has to recognize the danger in order to stop it. A boundary does not have to recognize anything, because the action was never available to begin with.

Anthropic's three saves are the interesting part

Anthropic published three internal cases where Auto Mode prevented real damage. In one, Claude's upload of a report to an internal drive failed, so it decided to publish that report to a public code-sharing site instead. In another, Claude prepared commands that would kill processes across roughly 2,000 pods and tear down hundreds of GPUs running active training jobs. In the third, Claude was asked to provision read-only billing access and instead attempted to grant full administrative access at the cloud account root.

None involved an attacker, a jailbreak, or prompt injection. Each was an ordinary agent pursuing a legitimate goal and reasoning its way into an unsafe action. That is the failure mode that matters most in normal production use. In all three cases, the classifier recognized the mistake and stopped it.

The more interesting question is why the coding session had enough authority for each mistake to become dangerous in the first place.

A session that cannot reach destinations outside the company network cannot publish the report externally, regardless of what Claude decides. An identity that cannot grant account-root administration cannot accidentally hand it out. An agent scoped to the project or namespace it actually needs cannot terminate workloads across an entire cluster.

Fig. 01 · Task scope vs. session reach
>_ Needed Could reach Egress Internal drive The open internet Identity Read-only role Admin at the account root Compute One namespace Every workload in the cluster

The classifier asks whether the agent should exercise authority it already has. A security boundary changes the authority itself.

“We caught it” and “it could not have happened” are different security properties.

The classifier also does not see every dangerous decision

Auto Mode's classifier reads the transcript. It sees your messages, the agent's tool calls, and your CLAUDE.md. It does not see what those tool calls returned. That is deliberate, since it keeps hostile text in a file or a web page from reaching the classifier and steering its verdict. It also means the classifier judges an action from the request, not from the state that action will touch.

Usually the command is the action. Sometimes the command is only a pointer to one. A script path is a filename, and the classifier does not read the file. A commit is a diff whose consequences arrive later, when a pipeline runs it.

The widest gap is file edits, which skip the classifier entirely inside your working directory. An agent tidying a Terraform config renames a database, and because db_name cannot change in place, the plan becomes destroy and recreate. The commit and the push are classified, but for secrets, not for whether a diff replaces a resource. The apply runs in the pipeline, after the session ends.

Fig. 02 · Seen vs. decisive
What the classifier reads messages tool calls CLAUDE.md Classifier reads the transcript verdict action runs What decides the outcome file contents runtime values the apply step out of view Production

An independent stress test in April found that 36.8% of state-changing actions, 93 of 253, never reached the classifier. That benchmark was adversarial and its rate will not match everyday traffic. But the gap it names is a routing decision, not a classifier score. Better classifiers do not close it.

Even complete coverage would not solve the underlying problem. A classifier that saw everything would still be deciding whether the agent should exercise authority it already has.

PocketOS is the same failure with nothing in the path

In April, a Cursor agent was asked to fix a staging environment issue. It decided that deleting a Railway volume was the right remediation. It went looking for a token and found one in an unrelated file. Nine seconds later the production database was gone.

The agent thought it was deleting a staging volume. It said so afterward: “I guessed that deleting a staging volume via the API would be scoped to staging only. I didn't verify.” The token had been created to manage custom domains through the Railway CLI. It was scoped to every operation the API offered, including this one.

The agent was not malicious. It reasoned badly while holding authority nobody intended to grant it. A reviewer reading that call sees a volume identifier, and resolving it to production takes state the classifier never receives. Give the task no credential that reaches production, and a bad decision stays a bad decision. It does not become an incident.

Autonomous agents need three different constraints

An agent can fail in what it decides, in what authority it holds, and in what its environment lets running code affect. Each has a different control: classifiers constrain decision, access control constrains authority, and isolation constrains execution. They overlap at the edges, but none substitutes for the others.

Auto Mode governs what an agent should do. Access control and isolation govern what it can do. That is the difference between a policy decision and an enforcement mechanism, and defense in depth needs both. Neither is sufficient on its own. The sandbox is the enforcement mechanism for the environment.

Anthropic scopes both of its own controls this way. Auto Mode, it writes, “relies on classification systems and therefore does not eliminate risk,” and the sandboxing documentation says the sandbox “reduces risk but is not a complete isolation boundary.” Neither is offered as the thing that holds.

The same three failures appear in the OWASP Top 10 for Agentic Applications as tool misuse, identity and privilege abuse, and unexpected code execution.

That is why “agent guardrails” is too broad a frame. The relevant question is which of the three is expected to contain which failure.

What stays behind when the human leaves

The data behind Auto Mode is evidence that human approval was never a viable foundation for autonomous agents. Asking developers to review every command does not scale, and in practice they were barely reviewing them anyway. Removing that interaction is the right direction.

But once the human leaves the loop, the architecture underneath the agent matters more. Classifiers should be part of the stack, and better classifiers will prevent real incidents. They should not be the only thing standing between a mistaken agent and the systems, data, and permissions it can reach.

Assume the agent will sometimes make the wrong decision. Assume the classifier will sometimes miss it. Then constrain what the agent can reach, what authority it holds, and what its environment can affect. Both mistakes become survivable.

The failure worth worrying about is not a classifier missing one command. It is a system where that classifier was the only thing holding the line.

Sources

Auto Mode. Auto mode is now the default in Claude Code for Pro, Max, and Team plans (Anthropic, August 2026). All telemetry, the 1,053-tester study, the three internal cases, and the risk caveat are from this post. See also Auto mode for Claude Code (Anthropic, March 24, 2026) and How we built Claude Code auto mode (Anthropic Engineering, 2026).

Independent evaluation. Zimo Ji, Zongjie Li, Wenyuan Jiang, Yudong Gao, Shuai Wang, Measuring the Permission Gate: A Stress-Test Evaluation of Claude Code's Auto Mode (HKUST and ETH Zurich, arXiv:2604.04978v2, April 28, 2026). The 36.8% coverage figure is from this paper. The authors note their results reflect a Sonnet 4.6 classifier as of April 2026 and that the classifier changes between versions.

What the classifier reads. Choose a permission mode (Claude Code documentation): the classifier “sees user messages, tool calls, and your CLAUDE.md content,” tool results are “stripped,” and “read-only actions and file edits in your working directory are auto-approved, except writes to protected paths.” The quoted refusal on a delete aimed at an unassigned variable is from the same page. The three-tier routing, including that in-project edits are “allowed without a classifier call,” is described in How we built Claude Code auto mode. The built-in rule text is printed locally by claude auto-mode defaults.

Classifier changes since that study. Claude Code changelog: the classifier default moved to Sonnet 5 in 2.1.210 (July 14); autoMode.classifyAllShell, an opt-in that routes every shell command through the classifier, was added in 2.1.193 (June 25); the dangerous-rm, background-&, and suspicious-Windows-path checks moved under the classifier in 2.1.218 (July 22); SendMessage was brought under it in 2.1.221 (August 4). No entry through 2.1.226 brings Edit or Write under classifier evaluation.

Sandbox scope and limitations. Configure the sandboxed Bash tool (Claude Code documentation), including that Read, Edit, and Write “use the permission system directly rather than running through the sandbox.”

Threat-model vocabulary. OWASP Top 10 for Agentic Applications for 2026 (OWASP GenAI Security Project, released December 2025). Each of the three constraints addresses one of its entries: ASI02 Tool Misuse and Exploitation, ASI03 Identity and Privilege Abuse, and ASI05 Unexpected Code Execution. The fuller threat taxonomy behind it is Agentic AI: Threats and Mitigations, from the same project's Agentic Security Initiative.

PocketOS / Cursor agent. Cursor-Opus agent snuffs out startup's production database (The Register, April 27, 2026). The agent's statement that it guessed the deletion “would be scoped to staging only,” and the token's provenance as a Railway CLI custom-domain credential scoped to every operation, are both from this piece. 'I violated every principle I was given': An AI agent deleted a software company's entire database (Fast Company, April 2026).

Previous entry · Nº 01 Three coding-agent incidents, three different failures.
Back to Journal