Skip to content

Back to the catalog

1Password's AI patching benchmark is misleading
blog.trailofbits.comarticle

1Password's AI patching benchmark is misleading

Trail of Bits dissects 1Password's August 2026 report claiming AI agents (GPT-5.5, Opus 4.8) produce clean vulnerability fixes only 26% of the time, showing the figure is inflated by a hand-picked set of six hard bugs, deliberately-wrong-fix prompts (22% of trials), a no-testing mode (36% of trials), grading disagreements between automated graders and humans, and a buggy Linux upstream reference fix. Reanalyzing the same data under fair conditions (testable, non-adversarial trials) they find 86% of patches blocked the supplied exploit, and they contrast this with their own consulting data (12.5% of developer first-fixes fail) and Patch the Planet's 67.7% maintainer merge rate across 186 PRs, including a case where both a human maintainer and an agent independently introduced the same freenginx cleanup-crash regression. The post also releases two new agent skills, post-patch-validation and review-walkthrough, to improve AI-assisted patch testing and human review.

TL;DR Trail of Bits shows 1Password's "26% clean-fix rate" AI patching benchmark is skewed by adversarial prompts and no-test conditions, and counters with its own data (86% exploit-blocking rate, 12.5% human first-fix failure rate) plus two new patch-validation agent skills.
Also seen from another angle🧠 AI →
Document

What it is

A Trail of Bits methodological rebuttal (published 2026-08-06 target report; this post dated per URL 2026-09-15) of 1Password's benchmark claiming AI models produce "clean" vulnerability fixes only 26% of the time. The value here beyond the summary is the specific grading defects an engineer needs to weigh before trusting either number, and the released tooling.

How it works — the specific defects

The 26% headline aggregates incompatible experiment modes. Beyond the four sampling/prompt issues in the summary, the grading itself is unreliable:

  • Stopping rule vs. grader mismatch: agents were told to stop once their patch defeated the supplied PoC, but the grader then evaluated vulnerable paths the PoC never exercised.
  • Test-change penalty: agents were told to leave existing tests untouched; 8% of ActiveMQ verdicts penalized an intended behavior change as a regression.
  • Self-grading is noisy: models grading their own patches matched human reviewers on the full five-category outcome only 65.9% of the time (87.7% on "was the bug fixed", 70.5% on "new bugs introduced" — Table 24). The two grader models disagreed on 36.8% of the same patches (Table 20), and the headline averages them.
  • Grader misses real bugs: 248 generated patches repeated an off-by-one error present in the upstream Linux reference fix; the grader caught it in only 24 (Section 4.4). The Chromium grader marked patches clean that still left a use-after-free in a callback (Section 4.9).

What to do

Two open agent skills are released:

  • post-patch-validation — helps agents test their own fixes.
  • review-walkthrough — helps engineers review AI-generated patches.

For the decision at hand: don't cite 26% as an AI-patching ceiling. Under fair conditions (agents allowed to run code, not told to apply wrong fixes, upstream-fix consultations excluded), 2,634/3,067 patches (86%) blocked the supplied exploit. Benchmark against the human baseline: across 2,265 vulnerabilities in 236 assessments (2024–2026), 12.5% of developer first fixes failed (95% CI 10.5–14.5%).

Caveats

Trail of Bits states plainly that "blocking that exploit does not establish a complete repair" — 86% is exploit-blocked, not verified-correct, so it is not directly comparable to a "clean fix" rate. Their own 12.5% human figure likely undercounts: fixes corrected in informal conversation before formal review never enter the record. The reanalysis reuses 1Password's own published patches and test logs rather than re-running the models.

Organisations named here

  • Davi Ottenheimer

Technologies named here

  • 1Password's AI patching benchmark report
  • freenginx embedded Perl module
  • Patch the Planet
  • go-jose
  • post-patch-validation
  • Noble FROST
  • ActiveMQ
  • review-walkthrough
  • Linux
  • variant-analysis
  • property-based-testing
  • Chromium
  • mutation-testing
  • GPT-5.5
  • Opus 4.8
  • 1Password
  • OpenAI
  • Trail of Bits
  • freenginx

Techniques named here

  • Use-after-free
  • Off-by-one error
  • Missing-header crash
  • Validation bypass via key-length/algorithm mismatch
  • Stale/replayed transcript acceptance
  • Regression testing / differential testing of patches
  • Benchmark sample selection bias
  • Adversarial/misleading prompting of agents
  • Testing restriction in evaluation