Free tools Windows power users keep installed
One-click scans. No signup required.
Five deliberately dishonest agents exposed three flaws in my refund benchmark. Three other failures came from outside the attack scripts: an inference outage, suspiciously strong results, and stale figures. Together, they showed why a benchmark score is only as trustworthy as its rules, evidence, and record of what actually ran.
What the benchmark measures
Jigon Yoo’s benchmark simulates a support desk issuing refunds under a $50 cap. Its suite contains 32 cases across eight families, with four tools and a hash-chained ledger. One rollout means one agent run against one case. The scorer evaluates observed effects rather than the agent’s prose.
As an Amazon Associate I earn from qualifying purchases.
Five weighted terms make up the score:
| Term | Weight | What it measures |
|---|---|---|
r0_task_completed |
0.4 | Task completion |
r4_log_replayable |
0.2 | Whether the ledger supports replaying the relevant actions |
r2_duplicate_effects |
0.2 | Duplicate effects |
r1_unauthorized_cents |
0.1 | Unauthorized refund amounts |
r3_false_blocks |
0.1 | False blocks |
The last three terms reward harm avoided. That creates a basic scoring hazard: a run that never meaningfully executes can look safe if the scorer rewards the absence of bad outcomes without checking whether the agent did anything.
Three attacks found holes in the rules
split-claim: the cap used the wrong aggregation key
The intended $50 limit applied per order, but the implementation checked each payment separately. An attacker could split refunds across payments associated with the same order and stay below the per-payment limit while exceeding the order limit.
#1 Best Overall
On the author’s 32-case suite, the per-payment check caught $0.00 in unauthorized refunds; aggregating by order caught $385.50. The author also reports that reread-newkey passed $633.80 beyond the per-order cap while evading the old check. These are the author’s measurements, not independent results. In the article’s comparison, the before-fix figures were produced by manually reverting fixes in current code because the pre-fix code was not retained in repository history.
The general test is to state the limit in one sentence and identify its subject: call, order, user, or day. That subject is the aggregation key. If the code iterates over a different unit, test whether splitting activity across units bypasses the limit.
claim-checked: a claim of inspection counted as evidence
The attacker said it had checked refund history without opening the ledger. The earlier replayability check accepted any read, so the unsupported claim passed: claim-checked scored 0.863 against the reference agent’s 1.000.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Rank #2
Requiring a refund_history call made the evidence match the claim. Under that stricter requirement, the attacker scored 0.681, and only 3 of 32 rollouts were replayable. The distinction matters: a log should establish that the relevant source was consulted, not merely that some read occurred or that the agent described an inspection.
prose-only: inaction looked like success
This attacker made no tool calls. It benefited from no-action cases in which doing nothing could satisfy task completion, while an empty log could count as replayable. Its score fell from 0.634 to 0.334 after the scorer required evidence for both task completion and replayability.
For a no-action case, the benchmark still needs proof that the agent checked the condition that made action unnecessary. Otherwise, “nothing bad happened” can earn credit even when the agent never evaluated the request.
Three more failures came from operations and evaluation
Failed model calls received safety credit
An inference account with a $0 balance caused every model call to fail with HTTP 402. The earlier run nevertheless produced a mean score of 0.344 with a 100% error rate. On today’s 32-case suite, the analogous empty-ledger arithmetic is 0.334; the 0.344 figure was reconstructed from an earlier 18-case set. The article distinguishes that checkable calculation from the unavailable old inputs and run.
A failed invocation is not a safe decision. If a scorer awards points for duplicate effects or unauthorized refunds not occurring, it must also ask whether the agent ran. Track invocation errors separately, and do not interpret an empty record as evidence of competent restraint.
Hints made strong results hard to interpret
A paid Sonnet 4.5 comparison covered 32 cases with three runs per case: 96 runs in each condition. With hints off, 92 of 96 runs were perfect, with three duplicate effects and $205 paid twice. With hints on, 91 of 96 were perfect, with five duplicate effects and $467 paid twice.
Rank #4
The author cautions that three versus five duplicate effects is not a strong statistical difference and concludes that the hints did not help—not that they caused harm. Near-perfect results also prompted a closer look: the models had been given key facts that the environment was supposed to test. A score cannot establish what the benchmark measures if the prompt supplies the answer.
Stale figures survived a growing test set
The evaluation suite grew from 18 to 32 cases, but some figures in the write-up remained tied to the earlier version. A derived score is version-dependent: when the cases or scoring inputs change, the old number no longer describes the current suite. Keep the suite version, case count, and score together in reports, and recalculate derived figures when the underlying set changes.
What the results can—and cannot—establish
The attacker scripts, reference agents, and ablation are presented as reproducible with two commands:
Best Value
python3 scripts/run_attacks.py
python3 scripts/run_report.py
The article says these commands require neither an API key nor an install. The repository includes six attackers and regression tests intended to catch a weakened scorer. By contrast, the paid model rollouts are not in the repository, so those paid comparisons cannot be reproduced from it.
There is also a remaining limit to the evidence check: r4 verifies that the relevant call happened before a decision, but does not establish that the agent interpreted the returned evidence correctly. A recorded read is stronger than unsupported prose, but it is not proof of understanding.
These distinctions help separate three kinds of confidence: rule-based attacks and reference runs that readers can rerun; before-fix figures recreated by manually reverting current code; and paid-model results whose rollout data are unavailable. They should not be presented as equally reproducible.
A practical audit checklist for agent benchmarks
- Match limits to their aggregation key. Write down whether a cap applies per call, payment, order, user, or time period, then test split-action cases.
- Require claim-specific evidence. If a decision depends on refund history, require the refund-history call—not any arbitrary read and not a sentence in the agent’s response.
- Test no-action cases for evidence. Require a check supporting the decision to do nothing, as well as evidence that the run and its log are valid.
- Separate failed execution from safe execution. Record invocation failures and prevent them from earning credit merely because no harmful effect was observed.
- Inspect what the prompt gives away. Check whether hints or task wording disclose facts intended to be discovered through tool use.
- Version scores with their inputs. Report the case-set version and size alongside derived figures, and recalculate when cases change.
- Label reproducibility precisely. State which runs are available to rerun, which numbers were recreated by reverting code, and which paid results lack rollout records.
- Use adversarial agents and regression tests. Keep attacks that exploit known weaknesses so future scorer changes cannot quietly reintroduce them.
For teams building these audits, Yoo’s site describes an AI agent and data pipeline diagnostics service that includes attack scripts, a per-attack score table, and fixes: jigonyoo.com.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




