helm.dev / bench

HelmBench

A seeded-bug benchmark for AI code auditors. 24 sealed seeded bugs in 3 real repos, graded by five blinded adjudication passes against a pre-registered rubric.

Run 1 adjudicated 2026-07-12 · page built 2026-08-28 · data as JSON · claims ledger

Does more reasoning effort catch more bugs?

On this benchmark, no. GPT-5.6 Sol at high, xhigh, and max reasoning effort scored identical 79.2% recall on the 24 seeds. The max run took 4.5x the wall-clock of high, about 54 minutes vs 12 for the three-repo battery, and bought one extra partial catch. What moved recall was model family: Claude Opus 4.8 and GPT-5.6 Sol at high, counted together, caught 23 of 24 seeds (95.8%) in about 25 combined minutes.

79.2%
recall for the same model at high, xhigh, and max effort. Identical
95.8%
best cross-family two-arm union, 23 of 24 seeds
0
false positives in 209 graded findings
4.5x
wall-clock cost of max vs high effort, for one extra partial

Run 1: five arms, 24 sealed seeds

Five model arms audited the same three seeded repos, read-only, with one identical provider-neutral prompt. 24 sealed seeded bugs, five independent blinded adjudication passes, 209 graded findings, 0 false positives.

ArmRecall (hits / 24)Hit + ½ partialT1 blatantT2 moderateT3 subtleBlind-spotFindingsNatural TPsFPsWall-clockPrice / 1M
Claude Opus 4.8 20 · 83.3% 83.3% 6/610/114/72/3 2990 ~13 minsubscription
GPT-5.6 Terra @ high 20 · 83.3%1 83.3% 5/69/116/73/3 36160 ~10 min$2.50 / $15
GPT-5.6 Sol @ max 19 · 79.2% 81.3% 5/68/116/73/3 60410 ~54 min$5 / $30
GPT-5.6 Sol @ xhigh 19 · 79.2% 79.2% 4/69/116/72/3 43240 ~18 min$5 / $30
GPT-5.6 Sol @ high 19 · 79.2% 79.2% 3/69/117/73/3 41220 ~12 min$5 / $30

1 Terra's A0-S6 hit was ruled via the seed ledger's own diff attribution but sits about 11 lines outside the strict 10-line window. Strict recall: 19 of 24 (79.2%). Both numbers stand.

Tier totals: 6 blatant (T1), 11 moderate (T2), 7 subtle (T3); 3 of the 24 are blind-spot seeds. Price is vendor list, input / output; the Claude arm ran under a subscription, so no per-token price is recorded for it.

Union of all five arms: 23 of 24 seeds. The one miss shared by every arm: B2-S3, an integration key logged at INFO in a secondary module.

Best two-arm cross-family union: Claude Opus 4.8 + GPT-5.6 Sol at high caught 23 of 24 (95.8%) in about 25 combined minutes. Second best at 22 of 24: Claude Opus 4.8 + GPT-5.6 Terra at high, tied with Opus paired with Sol at xhigh or max. All four OpenAI-family arms miss B2-S1, B2-S2, and B2-S3, so no same-family pair reaches either figure; the Claude family fielded only one arm.

Seed by seed

SeedClassTierOpus 4.8Terra @ highSol @ maxSol @ xhighSol @ high
A0-S1 committed secret T1 HHHHH
A0-S2 fail-open error path T3 HHHHH
A0-S3 XSS T2 HHHHH
A0-S4 data-loss hazard T3 HHHHH
A0-S5 PII in logs T2 HHHHH
A0-S6 vacuous test T2 HH1HHH
A0-S7 committed secret (in HTML) T1 HHHHH
A0-S8 off-by-one (blind-spot) T3 HHHHH
B1-S1 SQL injection T2 HHHHH
B1-S2 XSS T2 HHHHH
B1-S3 unscoped bulk delete T2 HHHHH
B1-S4 MIME fail-open T3 ·HPHH
B1-S5 PII in logs T2 HHHHH
B1-S6 vulnerable dependency T1 HHH··
B1-S7 committed credential T1 HHHHH
B1-S8 some/every logic flip (blind-spot) T3 HHHHH
B2-S1 committed secret (probe) T1 H····
B2-S2 f-string SQL injection T2 H····
B2-S3 key logged at INFO T2 ·····
B2-S4 except/pass swallow T3 ··HHH
B2-S5 missing WHERE clause T2 HH·HH
B2-S6 threshold logic (blind-spot) T3 ·HH·H
B2-S7 vulnerable dependency T2 HHHHH
B2-S8 os.system command injection T1 HHHH·

H = hit (same defect, same mechanism, within 10 lines of the sealed location) · P = partial (right location or right class, not both) · · = miss. Seed locations stay sealed; class and tier only.

What held

  1. Model families inverted by bug type, consistently across all three Sol arms. The Claude arm caught 6 of 6 blatant seeds but only 4 of 7 subtle ones. The Sol and Terra arms ran the profile in reverse: up to 7 of 7 subtle, as few as 3 of 6 blatant. Different families miss different bugs, which is why the cross-family union wins.
  2. The Claude arm was the only arm of five to report a committed, live-looking API key. The OpenAI-family arms that saw it declined it as a placeholder. For secret-hunting, a Claude pass or a deterministic scanner belongs in the loop.
  3. The Sol effort ladder is flat for audit recall: high, xhigh, and max all scored 79.2%. Max effort bought 19 extra natural findings, one extra partial, and 4.5x the wall-clock of high. If natural-finding depth is the goal, max earns its cost; for seeded recall it does not.
  4. Every arm degraded on B2, the large multi-version Python repo, and coverage-note honesty degraded with it. The Claude arm's coverage notes stayed accurate on all three repos; its B2 note even predicted its own miss areas. The other arms' notes overstated their coverage on B2.
  5. One seed beat everything: B2-S3, a sensitive key logged at INFO in a secondary module, missed by all five arms. It stays in the corpus as a standing hard case.

Limitations

Method

Corpus: three real application repos, each seeded with eight defects (24 total) at sealed locations. Difficulty tiers were assigned at seeding: 6 blatant (T1), 11 moderate (T2), 7 subtle (T3). Three seeds are deliberate blind-spot seeds, placed outside the audit taxonomy the arms would naturally reach for. B2 proved the hardest repo: large, messy Python spanning multiple versions.

Arms: each model ran as a read-only auditor through its vendor CLI over clean git-archive checkouts of the committed revisions, all fed one identical provider-neutral prompt stating the outcome, the constraints, and the completion bar, with no step prescription. Repo-embedded instruction files were excluded on both sides for parity.

Grading: five independent adjudication passes, one per arm, each in fresh context with the arm-to-model mapping withheld. A hit requires the same defect at the seeded location within 10 lines and the same mechanism. A partial (right location or right class, not both) is never folded into a hit; the secondary hit-plus-half-partial column is printed separately. Every accepted finding, seeded or natural, required the adjudicator to read the cited file; claims that could not be verified graded as false positives. Two arms' CVE claims were checked against the public record.

Scoring: recall is hits over 24 seeds. Precision is accepted findings over all surfaced findings; 209 findings were graded across the five arms, 0 false positives.

Re-runs

Policy as of 2026-08-28: HelmBench re-runs within 48 hours of a major coding-model release, on the same sealed seeds, and each run lands here dated. Corrections get fixed and logged on this page.