Skip to content

Back to the catalog

After the Attacker Leaves: Benchmarking Carryover Attacks on LLM Agents
arxiv.orgpaper

After the Attacker Leaves: Benchmarking Carryover Attacks on LLM Agents

CarryoverBench is a benchmark of 12 personal-assistant scenarios and 101 attack tasks for carryover attacks, where a one-time indirect prompt injection planted in agent memory files or scheduled tasks re-fires in later sessions. Three trigger channels (Instant, Autonomous, Latent) are scored by a rule-based verifier with separate planting and triggering stages. Across five frontier models, payloads re-fire over five rounds without measurable decay. Porting the Latent channel to the Hermes runtime weakens the effect but does not remove it.

TL;DR Introduces a benchmark showing that prompt injections planted in LLM agent memory or scheduled tasks keep re-firing across sessions.
Document

What it is

CarryoverBench (arXiv 2610.28425v1, 20 October 2026, code at github.com/igloomatics/CarryoverBench) tests whether a one-time indirect prompt injection written into an agent's persistent state keeps firing in later sessions. It has 101 attack tasks over 12 personal-assistant task families: 35 Instant, 30 Autonomous and 36 Latent. It was run on the Nanobot harness, which the authors say has persistence mechanisms similar to OpenClaw. All five models ran at temperature 0.

How it works

The attacker only plants content in something the agent reads, such as an email, and then leaves. The agent writes the payload itself, either into HEARTBEAT.md (read by a timer, default every 30 minutes) or into memory/MEMORY.md (prepended to the system prompt every session). ASR is split as Pr(plant) × Pr(trigger | plant). Each trigger round uses a fresh agent, 5 rounds in total.

flowchart LR
  A[Injected email or page] --> B{Agent plants?}
  B -- no --> X[Attack fails]
  B -- yes --> C[HEARTBEAT.md or MEMORY.md]
  C --> D{Trigger}
  D -- timer tick --> E[Autonomous fire]
  D -- related user prompt --> F[Latent fire]

Findings

Overall ASR (any-round fire for Autonomous and Latent):

ModelOverall ASRInstantAutonomousLatent
GPT-5.411.9%22.9%3.3%8.3%
Claude-Sonnet-4.618.8%22.9%10.0%22.2%
Gemini-3.1-Pro51.5%60.0%56.7%38.9%
GLM-527.7%34.3%40.0%11.1%
Qwen3-235B-A22B63.4%57.1%83.3%52.8%
  • Autonomous Pr(trigger | plant) is about 1 on all five models, so planting is the real barrier. For Latent, Pr(trigger | plant) ranges from 0.17 to 1.0.
  • Trigger rates show no monotonic decay over five rounds. GPT-5.4 stays at 8.3% in Latent every round. Qwen3 Autonomous falls from 93.3% planted to 70.0% at round 5.
  • GLM-5 triggers less often because it checks the recipient or URL at tool-call time and asks for user confirmation on non-internal-looking endpoints. It never audits MEMORY.md. The authors note this also lowers its benign utility.
  • Benign utility drops only modestly under attack (for example GPT-5.4 97.2% to 91.4%).

Defenses tested

Defenses were tested on Qwen3, GLM-5 and Claude-Sonnet-4.6, with n=66 carryover tasks.

  • D1, a generic system-prompt principles block. It cuts the plant rate. On GLM-5 Autonomous, ASR went from 40.0% to 3.3%. On Claude, ASR went to 0 in both modes. It left Pr(trigger | plant) near unchanged. Claude's utility under attack fell from 87.9% to 78.6%. On Qwen Latent, ASR rose from 52.8% to 72.2% (flagged small-n).
  • D2, telling the agent it may inspect and edit MEMORY.md and HEARTBEAT.md. Agents made zero voluntary edits or deletions across the five trigger opportunities. Plant-rate drops came from declining to execute the plant.
  • The text says three defenses were evaluated, but the fetched page cuts off during D2, so the third and the D2 numbers are not available here.

What to do

The authors conclude that prompt-level text defenses mainly act at planting and that runtime-layer controls are also needed. The page's evidence points to one working mechanism: a check at tool-call time on outbound recipients and URLs, as GLM-5 does. For testing your own agent, the verifier uses a payload registry and a tool taxonomy that can be overridden through BENCH_TOOL_TAXONOMY, so porting to another framework needs no verifier edits.

Caveats

  • Only one harness (Nanobot) was used for the main results. A second runtime, Hermes, was tried for Latent only, and the effect was weaker there. The fetched text does not include those numbers.
  • Confidence intervals are wide on small task counts. Examples are Claude utility delta −1.4 with a CI of −14 to +16, and GPT-5.4 Autonomous ASR of 3.3% with a CI of 0 to 11.
  • The Instant baseline is higher than the carryover ASR for four of five models. Gemini-3.1-Pro and Qwen3 reach roughly 40-83% on carryover channels.
  • The text I had does not describe the Hermes results or the appendices.

Organisations named here

  • carryover attacks
  • CarryoverBench

Technologies named here

  • Rule-based verifier
  • Five frontier models evaluated on CarryoverBench
  • Hermes
  • LLM

Techniques named here

  • Carryover attacks
  • Instant channel
  • Autonomous channel
  • Latent channel
  • Indirect prompt injection