Writing ·

How to tell whether an agent fault-injection test exposed the fault

Define an authoritative refutation, prove a legal pre-use evidence path exists, then grade each agent trace by when counterevidence actually arrived.

By Youssef Hemimy · agent evaluation · fault injection · AgentOps

An agent's use of a bad tool result is not, by itself, evidence that it ignored a contradiction. For every injected fault, define the observation that would refute it, prove the agent could legally obtain that observation before first dependent use, then reconstruct whether it actually arrived in that run. Only timely, model-visible counterevidence supports the stronger claim that the agent relied on the fault despite seeing a contradiction.

Start with a fault contract, not a corrupted response

Suppose a reservation-update tool returns success although the write was suppressed. An authoritative read-back of the same reservation can contradict that acknowledgment. But if it arrives after the agent tells the user the change was made, it cannot show that the agent ignored evidence before making the claim. SSCBench uses this false-write example to distinguish the evidence conditions behind superficially similar failures.

FieldFalse write-success case
Injected assertionThe reservation update succeeded.
Target and scopeThis reservation and this requested change.
Independent refutationAn authoritative read-back shows the unchanged reservation.
Legal acquisition routeThe agent can call the normal reservation-detail tool with an ID it has.
First dependent useThe first message, action, or handoff relying on the changed-state claim.

This worksheet is a Bonfire adaptation of the paper's fault-contract definitions, not a published benchmark template. A refutation must be authoritative, about the same entity and scope, independent of the mutation, and sufficient to contradict it from the agent's available information. A merely related product record, or knowledge held only by the evaluator, does not qualify.

Separate the opportunity from what happened

A case is pre-use revealable if at least one legal continuation from the fixed injection context could expose valid counterevidence before first dependent use. The needed tool arguments must be obtainable by the agent under its actual permissions. This admits the case for evaluation; it does not mean the evaluated agent followed that path.

The same refutation supports different claims depending on when it became model-visible. A post-use read-back cannot establish that the agent ignored timely evidence.

Classify the realized trace by when valid evidence arrived relative to first dependent use:

  • Pre-use: valid counterevidence arrived before that use.
  • Late: it arrived only afterward.
  • Absent: it did not appear in the observed run.
  • Undecidable or no use: retain separate labels rather than silently counting either as absent or successful.

The paper uses first dependent use as the common timing anchor. First faulty reliance is a separate diagnosis within adopted runs; a verification call alone is not necessarily reliance. In the study, among 44 adopted runs with eventual counterevidence, 17 received it before first use and 27 afterward. Those counts describe the tested configurations, not deployed agents.

Report each claim with its own denominator

QuestionPopulation to report
Did the injected error propagate?Adopted runs over runs where adoption was evaluable.
Did adoption occur despite eventual evidence?Adopted runs with valid evidence arriving before or after use, with that population shown.
Did adoption occur after timely evidence?The pre-use stratum's numerator and denominator; do not generalize from an empty or tiny stratum.

A pre-use revealable case can still produce a late or absent-evidence run. Preserve the complete model-visible trace, tool observations, and grading labels. OpenAI's agent-evals guide describes traces across model calls, tools, guardrails, and handoffs and structured grading. It supports retaining and scoring evidence, but does not validate SSCBench's labels or rates.

Review temporal labels before using them as a gate

Record fault delivery, valid evidence arrival, first dependent use, and—if adoption occurred—first faulty reliance. For a refutation assembled from several observations, arrival occurs when the last required piece becomes model-visible. Check entity matching and contradiction semantics, not timestamps alone. SSCBench reports that automated trajectory analysis did not reliably recover the exact first faulty-reliance event; manually adjudicate ambiguous cases or mark them undecidable.

Keep prevention, later stance revision, and repair of external state separate. A corrected final answer does not prove an earlier API write or user-visible effect was undone. For the adjacent communication failure, see testing false success after tool failure; for state-changing outcomes, see evaluating stateful agent outcomes.

What the study can and cannot establish

SSCBench evaluated four fault operators and five agent configurations across 1,191 faulted executions in two tau-bench environments. The protocol applies when a task-authoritative refutation and its relation to downstream use can be specified. It does not cover every failure or establish universal model rankings, production incident frequency, or that a contradiction guarantees correction. The practical test is modest: define the refutation, preserve what the agent actually saw, and name the evidence condition behind each adoption claim.

Sources

FAQ

Does an agent's use of a bad tool result prove it ignored contradictory evidence?

No. First show that an authoritative refutation was legally reachable before the first dependent use, then inspect the model-visible trace to determine whether it actually arrived in time.

What counts as a valid refutation in a fault-injection test?

An independent, authoritative observation about the same entity and scope that is sufficient to contradict the injected assertion using information available to the agent. Evaluator-only state or merely related records do not count.

How should late or missing counterevidence be reported?

Keep pre-use, late, absent, undecidable, and no-use runs separate. Report a numerator and denominator for each claim about fault adoption; an empty pre-use stratum cannot support a claim about ignoring timely evidence.

Building something that has to hold up?

We do this work for teams — agent reliability hardening, custom MCP servers, and full-stack AI systems built to survive production.