This Week in Agentic Harnesses / Published 2026-08-10

You Approved Something Else

Edited by Michael Ruescher / revised 2026-08-18

Operator Brief

Vendors spent this week arguing that the human click is the weak control, and they have a study that supports them. In the same seven days, four harnesses shipped fixes for defects where the approval prompt could be shown less than what actually ran: a command hiding part of itself behind invisible Unicode, an allowlist entry that auto-approved everything when malformed, admin controls that did not apply for the first five minutes of a session, and a context file any directory could replace before the trust decision meant to govern it. Both things are true at once, and that is the week. The argument for taking the click away is not refuted by the dialog being broken. It is complicated by it, because the dialog is what people were told to keep trusting while the replacement rolled out.

Upgrade / check
  • Claude Code: upgrade past 2.1.224, then re-read your sandbox deny rules for trailing slashes. Entries written as denyRead with a trailing slash were silently bypassable on Linux and macOS, so configuration you wrote and believed in was not in force, and nothing reported the failure. https://code.claude.com/docs/en/changelog#2-1-223
  • Claude Code: treat approval logs from before this window as evidence of what was asked rather than what ran. Two fixes state that a crafted command could hide parts of itself from the permission check, and that tab-padded or invisible-Unicode commands could hide part of the command from the approval dialog. https://code.claude.com/docs/en/changelog#2-1-223
  • Antigravity: 1.1.11 discloses that a malformed allowlist entry auto-approved every command, and that MCP admin controls were skipped for the first five minutes of every session. Short-lived and scripted runs lived entirely inside that window. https://github.com/google-antigravity/antigravity-cli/releases/tag/1.1.11
  • Pi: an AGENTS.override.md in any directory replaces your context file, and it loads before project trust is resolved. Treat cloning an untrusted repository as an action that can change your agent's instructions before you have decided to trust it. https://github.com/earendil-works/pi/pull/7681
  • Paperclip: audit what your standard-trust agents can see, because in this release that set is also what they can write to. https://github.com/paperclipai/paperclip/pull/10804
Try
Watch
  • Whether the classifier gains durable rules. The strongest public criticism this week is that boundaries stated in conversation are re-read from the transcript rather than stored, so compaction can drop one silently. If that changes, the safety argument for the new default gets materially stronger. https://code.claude.com/docs/en/permission-modes
  • Whether OpenClaw's workspace-boundary fix reaches a stable channel. It is in neither stable dist-tag, confirmed at file level, and has been beta-only for 21 days. https://github.com/openclaw/openclaw/pull/113405
  • Whether any vendor publishes the failure rate of an approval classifier the way the click-through failure rate was published. Both numbers are needed to compare the two gates, and only one of them is public. https://code.claude.com/docs/en/permission-modes
Uncertain
  • Whether Pi's three credential-printing commands are reachable by the agent's own shell tool without a gate. The prior window asked this of two commands, the answer is that they are not gated, and there are now three. https://github.com/earendil-works/pi/releases
  • What a permission classifier does when the transcript it reads has been compacted mid-session. The documentation recommends a deny rule for a hard guarantee, which implies the conversational layer is advisory, but the failure behaviour is not described. https://code.claude.com/docs/en/permission-modes

On August 7 a Claude Code maintainer made a claim about safety that is easy to misread as marketing and is not: auto mode is safer than --dangerously-skip-permissions *and* manually approving everything@lydiahallie The next day, asked how that could be true when the bypass flag skips checking entirely, she gave the mechanism: dsp just doesn't check at all.@lydiahallie

She is right about the comparison, and the study behind it is not decoration. Over a thousand testers were shown a clearly dangerous command inside an ordinary approval prompt. They caught it around one time in seven, and got worse the longer a session ran. The classifier caught the same commands about nine times in ten and did not degrade. If you have ever clicked yes forty times in an hour, you already know which of those numbers describes you.

So the case for taking the click away is a real case, built on measurement.

Now put it next to what the same fortnight's release notes say the click was doing. In v2.1.221, a Bash permission check could be walked past by hiding commands inside zsh regex conditionals. In v2.1.223, a crafted command could "hide parts of itself from permission checks," and commands padded with tabs or invisible Unicode could "hide part of the command from the approval dialog." In v2.1.224, sandbox deny rules written with a trailing slash, the way anyone would naturally write a directory, were silently bypassable on Linux and macOS.

Four holes, one shape: the string a human was shown was not the string that ran.

dsp just doesn't check at all. auto mode blocks destructive actions you didn't ask Claude to take (eg rm -rf can be fine but depends on your task) and screens tool results for prompt injection. but for most tasks you still won't see permission prompts, same as dsp!
Lydia Hallie ✨ @lydiahallie

That is not a rebuttal of the safety argument. It is the uncomfortable fact sitting beside it. The dialog people are being asked to stop relying on is also the dialog that, this fortnight, could be shown less than what it was approving. An operator reading both at once is entitled to ask which control they actually have.

The boundary is not where most people think it is

The sharpest reply to the auto-mode thread came from an engineer who had read the documentation rather than the announcement. the boundaries you state in chat aren’t stored as rules. the classifier re-reads them from the transcript on every check@EliaAlberti

We should be careful here, because it is tempting to promote that into more than it is. He is not describing any of the defects above. He is describing a different property: where a spoken instruction lives. The release notes describe a display problem in a dialog. He is describing a memory problem in the thing replacing the dialog. Those rhyme, and they are not the same bug.

What makes it worth quoting is that it is checkable against the vendor's own docs, and he did: docs recommend a deny rule for a hard guarantee, which means the conversational layer is the soft one.@EliaAlberti

That inversion is the week in one sentence. The layer an operator experiences as authoritative, the one where they say "don't push to main," is the advisory one. The layer that binds is a config file most people never open.

Two other projects shipped the same lesson from different angles. Pi merged support for an AGENTS.override.md that lets any directory replace the operator's context file, and it loads before project trust is resolved: a guard consulting the thing it is guarding, which is the defect class this publication recorded in June when a workspace-trust backend read its own trust value out of the workspace. And Antigravity disclosed in 1.1.11 that a malformed allowlist entry auto-approved every command. A rule that widens permission when you write it wrongly is not a rule. It is a suggestion with a syntax error.

The same release disclosed that MCP admin controls were skipped for the first five minutes of every session. Windows are harder to reason about than broken rules, because the control is present and correct and simply not in force yet. Any CI job or scripted run that finishes inside five minutes spent its entire life in that window.

Authority moved toward the human, too

A week reported as nothing but approval holes would be a defect log, and this one was not.

Hermes made writes to AGENTS.md, CLAUDE.md and SOUL.md always stop for a human. Read against Pi's override defect, that is the better fix by design: if the instruction file is the thing an untrusted directory can replace, then making every write to it unconditionally interactive removes the class instead of patching the routes into it. The same release lets an operator mark a server untrusted, after which every write-capable tool asks. Codex made a smaller version of the move, demanding an explicit trust decision for unfamiliar project directories, and it named its new automatic-review flag --approve-for-me, which is at least honest about what it does.

Claude Code also spent the week widening what the agent can operate, on purpose. it now copies your session into a new background session while you keep working in the current one@lydiahallie The old in-session subagent that reported back became /subtask. Sessions can now message each other by name.

That is worth holding next to Paperclip, where standard-trust agents got default-open write access to any company-visible issue they could read. On a platform whose whole proposition is many agents inside one organisation, a default's blast radius is the number of agents, not the number of people.

Reference

Breaking changes this window: Pi replaced its session and harness API wholesale with a lane-based v4 model and removed the legacy repositories; eve replaced continuation-token sessions with fixed ID-addressed handles across every public surface; Codex removed codex exec --full-auto outright.

Security advisories: none published by any watched source in this window. The authority defects above were disclosed in release notes rather than advisories, which is worth noting if you track advisory feeds to decide your own exposure. Four of them would not have reached you that way.

Provider notes

Gemini CLI shipped v0.54.0 with HTTPS enforced for Google credential auth and keychain tag validation, then jumped from 0.54.0 to 0.54.4 in 27 hours with 0.54.1 through 0.54.3 never published. OpenClaw's extended-stable line moved during the window and moved without the workspace-boundary fix, which is now 21 days beta-only and confirmed absent from both stable tarballs at file level. Omnigent shipped its worktree_guard fix in v0.8.0 about ten hours after the merge, closing the carry-forward from the last issue. Agent Zero, Flue, eve, heypi, agent-flywheel and the two newest sources are covered in the run's findings.

What you actually have

The honest position at the end of this week is not that the classifier is worse than you. The measurement says it is better than you, and pretending otherwise would be a nicer story than the truth.

The position is that you have been handed a new gate while the old one was being quietly repaired underneath you, and only one of those two facts arrived with an announcement.

Which brings us to the smallest exchange of the week and the one that will outlast it. A practitioner noticed which model was answering a built-in tool: it seems to still be used by the Claude Code WebFetch tool, which means hallucination risk any time you fetch a URL!@simonw The reply came from the team, and it is the whole argument in a sentence: working on removing Haiku from WebFetch now that automode is default@trq212

Once the human is out of the seat, what sits in it becomes a product decision.

Research artifacts and publication history are open in the repository.

View source on GitHub

Sources

Primary links, including exact changelog lines when available.

All 60 evidence records checked for this issue

Versions