Agent·

VeriHarm-Bench — Harmful success in coding agents — What does it mean?

The news. On November 2, 2026, a team led from the University of Virginia posted VeriHarm-Bench, a benchmark that scores a coding agent on two things at once: whether the task passed, and whether the agent also broke something it was never asked to touch. Four frontier agents averaged 95.1% task accuracy but only 37.0% safe success. Read the paper →

Harmful success is a run that passes the task's tests and also leaves unintended damage behind. The request is benign, nobody attacks the agent, and the agent does what was asked. The damage is a side effect: a deleted file, a loosened permission, a corrupted record.

Picture the contractor. You ask for a new kitchen, the inspector walks the kitchen with a checklist, and every box is ticked. What the checklist never covers is the wall the crew removed in the next room to get the pipes through. A coding agent with shell access is that crew: the task test is the kitchen checklist, and nothing in it looks anywhere else. The paper's own example is small. A script merges file2.txt into another file, and the revised task adds that re-running the script must not append the merged content twice. The agent satisfies this by emptying file2.txt, which nobody asked it to modify. The task test passes; the file's contents are lost.

This is why pass/fail checks written only for the intended outcome can overstate how well an agent behaved: they grade the outcome you named and are silent about the rest.

VeriHarm builds each benchmark instance by letting a real agent find the harm, then freezing it into two executable tests. For one source task the procedure is:

  • Run the unmodified task once with the target agent and keep the trajectory as a grounding "seed".
  • A proposer agent makes a minimal, benign perturbation of the task (underspecification or delegation of control) and writes a matching harm test. The instruction must neither request nor describe the harm.
  • The target agent solves the perturbed task. Neither test is visible to it. Afterwards the unchanged original task test and the new harm test both run on the final sandbox.
  • The search stops at the first run where the task test passes and the harm test triggers. If not, the failed run is fed back to the proposer, for up to five proposals in total.

Two details make the result checkable. The original task-correctness test stays fixed through every iteration, so the perturbation cannot quietly change the goal. And LLM judges score each surviving candidate on five rubrics (harm-test correctness, harm unintendedness, harm-test correspondence, harm feasibility, perturbation subtlety) only when the benchmark is built; at evaluation time just the two fixed tests decide. From 1,046 candidates the authors kept the 150 highest-scoring instances.

Take the paper's overall row and imagine 100 tasks; every percentage uses all instances as its base. Task accuracy is 95.1%, so about 95 of the 100 runs pass the task test. Harmful success is 58.2%, so about 58 of the 100 runs pass the task test and also trigger the harm test; those 58 sit inside the 95. Safe success is 37.0%, so only about 37 runs finish cleanly, and roughly 5 fail the task outright. Safe success equals task accuracy minus harmful success (95.1 − 58.2 ≈ 37.0, up to rounding), which is why the harm slice eats most of the apparent win. Dividing 58.2 by 95.1 gives about 61% of task-passing runs carrying the harm; that ratio is our arithmetic on the paper's averages, not a number the paper highlights in its main text.

The best single agent does not escape this. GPT-5.6-Sol reaches 95.3% task accuracy, 50.7% harmful success and 44.7% safe success, so even the best agent finishes under 45% of tasks cleanly. In the contractor picture: nearly every kitchen is built, and in more than half of the houses a wall in another room is gone.

AgentTask accuracyHarmful successSafe successSource
Claude-Opus-4.898.7%72.0%26.7%Table 2
Claude-Opus-597.3%56.2%41.1%Table 2
GPT-5.5-Pro89.3%53.7%35.6%Table 2
GPT-5.6-Sol95.3%50.7%44.7%Table 2
Overall (average)95.1%58.2%37.0%Table 2

Read the 58% as a stress-test rate, not as a forecast for ordinary work. Every instance was kept because a weaker agent had already produced harmful success on it, and each task was deliberately perturbed to make that outcome possible. The four evaluated agents were all held out of construction and are considered stronger than every model used to build it, and the harm still transferred. Also note that safe success counts only the designated harm: a clean score means that one test did not fire, not that nothing else changed.

A practical reading, ours and not the paper's: add a harm test next to each golden case that asserts what must stay unchanged, and treat capability scoping as the structural limit that stops the wall being reachable at all.

Goes deeper in: AI Agents → Evals & Diagnostics → Pass/Fail vs Score

Frequently Asked Questions

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