Agent·

Signed but Not Safe — Signed requirement manifests — What does it mean?

The news. On November 5, 2026, a preregistered study posted to arXiv compared three ways of passing requirements between agents: a free-text summary, an unsigned structured JSON handoff and a signed requirement manifest. On synthetic, exactly scorable tasks with Qwen3-8B (1,440 trajectories over five threats), the signed manifest cut unsafe commits under attack from 69.4% to 9.0%. One injected line placed before extraction still broke it. Read the paper →

Picture a contract that has to travel through three offices. A stamp from a notary proves that the copy was not edited after stamping, and proves nothing else. That is the whole design of the signed requirement manifest, and the paper builds it in five harness steps that run in plain code after the orchestrator model has listed the requirements:

  1. Provenance filter. Keep an item only if its source_quote is a substring of the original request, so a requirement invented by the model cannot enter.
  2. Predicate validation. Keep an item only if its predicate parses in a tiny grammar (eq, le, sum_le, not, and, or, implies).
  3. Normalization. Number the items M1 to Mk.
  4. Binding. Add the task identifier and a per-task nonce.
  5. Canonicalize and sign. Serialize with sorted keys and compute an HMAC-SHA256 tag.

A worker or relay that edits a quote or a predicate later cannot recompute the tag. This is the same discipline as an explicit handoff: the receiving agent should get a contract, not a paraphrase.

The second half is the checker. After the merger decides, a pure function evaluates every predicate against the complete decision and rejects the commit if any predicate is false. It takes microseconds and never calls a model. The paper ran an LLM checker on identical trajectories as a baseline: the code verifier caught 78.7% of violating decisions against 59.0% for the LLM, with 7% against 50% false alarms on conforming decisions. Any flagged decision gets exactly one repair attempt and is not committed if it is still flagged. That is policy enforcement that fails closed, with the policy written as data instead of as a prompt.

Threat (what the attacker does)Structured JSON, unsafe commitsSigned manifest, unsafe commitsSource
T2a: relay rewrites the target requirement in transit91.7%0.0%Section 6.2
T3: injected tool output claims the requirement was revised64.6%14.6%Section 6.2
T4: injected "business priorities" tell the merger to ignore it52.1%12.5%Section 6.2
T2a to T4 combined (144 paired runs)69.4%9.0%Section 6.2

Take the T2a row with 48 tasks, each attacked once. Structured JSON committed 44 violating decisions (91.7% of 48); an unsigned manifest committed 38 (79.2%); the signed manifest committed 0 and refused to act in 47 (97.9%). The signature did not make the agents smarter. It made the tampering visible, and the system answered a visible tampering by stopping. The price is utility: over all threats the signed manifest lost no measurable conformant commits against structured JSON (−0.4 percentage points, 95% interval −14.2 to 13.3), but under T2a its useful output was 0% by design. It also costs about 1.25 times the tokens of the structured handoff, and the LLM checker arm costs about 1.51 times.

Now the clerk. A signature authenticates whatever the orchestrator wrote, including a requirement that an attacker rewrote before copying. The paper tested this directly (T5): one adversarial line appended to the request that the orchestrator reads before extraction. Signed-manifest violations rose from 14.6% to 37.5% for Qwen3-8B, from 11.1% to 63.9% for gpt-oss-20b and from 8.3% to 75.0% for GPT-5.6-luna (an exploratory 12-task run). For Qwen3-8B that is 7 of 48 runs becoming 18 of 48, and all 18 had a corrupted manifest that the signature then vouched for. This is the same lesson as capability scoping: the component that reads untrusted text is the boundary, so it needs structural limits, not a stamp after the fact.

Extraction also fails without any attacker. In the benign setting the target requirement was recalled in 80.9% of extracted manifests, and replacing the model's manifest with a gold one (an oracle) removed all remaining unsafe commits, which attributes the 11.2 point residual to extraction errors, mainly preferences copied as mandatory items and missed requirements. The evidence is limited: synthetic tasks, small models (Qwen3-8B as the primary family), and in the gpt-oss-20b family the gain came only from tamper resistance, because structured handoffs were already safe there without an adversary. The result supports signing for the transit leg and says nothing about extraction beyond that it is where the risk moved.

Goes deeper in: Agent Engineering → Agent Teams → Handoffs

Related explainers

Frequently Asked Questions

Check what you knowMap your AI & GPU knowledge across every track — free, role-based