Product1 distinct publisher3 min readPublished
Johann Rehberger got code execution in up to 80% of attempts by making one tool fail and letting the agent improvise. Anthropic says Auto Mode is working as designed, which leaves the sandbox decision on your desk.
The Product Desk · Product desk

Compiled by The Product DeskSomething wrong?How this is made
The payload itself is not the notable part. What matters is that every step in the chain is a step you would want a competent agent to take. WebFetch returns 415, so try curl [3]. The server sends a 303, so follow it [4]. There is an archive, so unpack it [4]. There is an unsigned macOS binary in there, so refuse to run it [5]. Blocked, but the job is still to decode seven records, so write a decoder [5]. A decoder needs base64, and base64 imports struct, and Python checks the working directory first [6]. Module shadowing is decades old and has nothing to do with models [6].
Teams generally assume the classifier's job is to catch bad instructions in untrusted text. In Auto Mode, its actual job is harder: evaluate a sequence in which no single action is bad, and refuse it anyway. Rehberger's own reading is that the classifier was never built for chains assembled out of individually harmless steps [9]. Anthropic's answer to him was that Auto Mode is a convenience feature backed by a best-effort classifier and not a security guarantee [8], and that the behaviour is working as designed [8]. Those two statements are consistent, and together they amount to a handoff: the person catching it is whoever installed the thing.
The numbers deserve a careful read. Three variants, five runs each, is fifteen attempts, and the range was 60% to 80% [10]. That is not a measured probability of compromise for your repo; Rehberger himself calls the results representative of a motivated attack but not comprehensive [11]. The number that matters for planning is the low end, because 60% of a small sample already means a determined attacker gets there on the second or third try, and retrying is free.
The variant worth staring at is the second one, where struct.py launches a fresh headless session with `claude -p` [12]. The child agent gets its own tool access and its own context [13], and in Rehberger's runs it ran whoami, uname and id, opened Calculator, and wrote files into the home directory [14]. Approval-based defences assume one agent, one conversation, one human watching the transcript. A spawned sibling is outside the frame nobody is reading.
Two questions worth forcing on Monday. First: when a preferred tool fails, does your agent get to substitute a shell? If yes, your fetch policy is your shell policy, and you should write it down that way. Second: if a spawned process gets full tool access, what does it reach? Rehberger's position is that the real boundary is operating system isolation and network egress control, and that coding agents belong in a sandbox [15]. That is a smaller ask than a model fix and it does not require Anthropic to agree with you, which matters, because as of this reporting the company has not addressed the finding publicly [16] and did not respond to The Register's request for comment [16].
Auto Mode has been the default since mid-August [2], and it is the setting that lets Claude Code pick tools and run them without asking [17]. Every decision in the chain was defensible, even though nobody approved the chain as a whole [18].
Ranked by verification strength, evidence, and original report placement.
Security researcher Johann Rehberger, who publishes as wunderwuzzi, demonstrated a prompt-injection chain against Claude Code that starts with asking it to summarise a web page and ends in code execution on the user's machine; Jessica Lyons reported the finding for The Register on Friday.
The chain targets Opus 5 running in Auto Mode, which has been the default since mid-August.
Claude tries to read the attacker page with WebFetch; the server answers 415 Unsupported Media Type, so the agent falls back to a Bash call with curl. Rehberger never instructs it to do so; he only makes the preferred tool fail.
The site then returns a 303 redirect to a ZIP archive, which Claude downloads. Inside are catalog metadata, a README, seven encoded notebook records, a macOS decoder binary, and a Python file called struct.py.
Claude refuses to run the supplied decoder binary as its safety training dictates, and instead writes its own decoder. Rehberger wrote that this was planned and what the attacker wants, and that ironically the safety decision is the exploit path.
The decoder Claude writes imports base64; the standard base64 module imports struct; Python looks in the local directory first and loads the attacker's struct.py instead of the real one. This is module shadowing, which predates AI agents by decades.
Distinct publishers with included, body-backed reporting in this cluster.
1 article · September 1, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
product
Anthropic wipes saved cards after infostealers copy Claude login sessions1 distinct publisher
product
ChatGPT Work's real ask is your Slack, and somebody has to say yes on everyone's behalf1 distinct publisher
build
Developer habit, priced at $965B: what Anthropic's run actually proves1 distinct publisher
product
Summarizing a webpage was enough to run attacker code in Claude Code's Auto Mode1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One researcher, fully shown; one newsroom, retelling
The chain is documented to the level where a competent reader could rebuild it — status codes, archive contents, the base64-to-struct import path, the claude -p variant — and Rehberger publishes a video. What holds the score down is that every link traces to him: fifteen runs by one person, a vendor response only he saw, and The Next Web working from The Register's account rather than its own test.
The vulnerable setting is the shipped default
Exposure here is not a question of uptake curves: Auto Mode has been the default since mid-August, so the configuration Rehberger attacked is the one users get without choosing it. What is absent is any figure for how many Claude Code installations actually sit in that state, or evidence of anyone exploiting it in the wild.
The headline number undersells the design point
The temptation was to lead with 80% and stop. Our coverage instead prints the caveat beside the number, keeps the fifteen-run sample visible, and gives the weight to the finding that outlives any hit rate: a refusal can be the exploit path, and one injection can start a second Claude with its own tools. If anything the framing is a shade modest about how little of this depends on 60-80% holding up.
A researcher's reputation, a vendor's silence
Rehberger has a track record on Anthropic's agents and is called a prompt-injection wizard by the outlet covering him, which is a real if unremarkable incentive to find the next one; the countervailing signal is that he states his own limits unprompted. Anthropic's incentive is plainer: 'working as designed' costs nothing, and declining to comment keeps a finding about the most-aligned-model-we-ever-shipped out of its own channels. The Next Web's repeated links to its own prior Claude coverage are house-traffic habit, visible on the page.
Solid on mechanism, thin on corroboration
We would stand behind the technical account and behind Anthropic's stated position; both are specific and neither is disputed anywhere in this coverage. We would not stand behind the hit rate as a general figure, and we cannot say what share of users are exposed. Single-publisher stories with a named, checkable mechanism sit here: believable, unconfirmed.