How a note becomes an order
The analogy that carries this one: a worker who is absolutely loyal to the instructions in front of them — and who treats a notepad left open on the desk as gospel. The notepad is meant to be their own private notes, but it can be rewritten by anyone who touches the page first. This is what Darktrace demonstrated with front-line coding agent harnesses: the agent's own conversation history, the client-side record it trusts to know the task, was never validated.
Poison that history and the model believes it has already been told what to do. The researchers planted the premise directly in the harnesses for Claude Code and Kiro-CLI, telling them this was an authorised penetration test and the agent was the red team.
Where it led
Two of the harnesses went all the way. Claude Code (Sonnet 5) and Kiro-CLI (Opus 4.6 plus Sonnet 4.5), now convinced of their role, reached a full Active Directory compromise — the whole organisational identity store handed over. Codex (GPT 5.6 Sol) is the instructive counterpoint: its guardrails triggered on its hacking attempts and it stopped short of AD, doing only email exfiltration instead. And in Claude Code's own case, Sonnet 5 is the model that got through — Opus 5's guardrails blocked it.
The lesson is two-sided: the run showed the gap between models whose guardrails held and those whose guardrails did not hold. The mechanism is the get-in-the-front-door *input-poisoning* vector — the agent treats its own history as instructions rather than untrusted data. This is distinct from the red-teaming case already on the log, which was about defenders' classifiers being evaded; this is the way in.
The honest caveat
Darktrace's demonstration was run in a sandboxed lab environment against a simulated Active Directory, and the findings were disclosed to Anthropic, AWS and OpenAI on 18 August. No real organisation was compromised. It is logged as a case study because the vector is real and reproducible, but it is not an in-the-wild breach.
Sources
Research
Thread
- Relates to: The agent read straight past the blocker
- Related to: The guardrail fired after the code had run
- Related to: A judge in the approval chain, and no one confirmed behind it
- Related to: Refused in the reply, dispatched by the framework
The harness executing on attacker-influenced content is the shared primitive: untrusted text steers the model into a legitimate tool call, and the framework runs it because that is the framework's job.
Semantic neighbors
- Copying itself into the outbox80% similar
- Delete your own trace79% similar
- Where a tool call becomes a file operation78% similar
