How to read an agent benchmark score
What is actually inside a published agent score, which parts of it transfer to your work, and the small test that predicts your results better than any leaderboard.
on this page · 0 / 0 checked
Every agent you are asked to pay for arrives with a percentage attached. 55.8% on Terminal-Bench 4.0. 77.9% on OSWorld 2.0. 73.4% on CursorBench 3.2.0 [3]. The number is doing a specific job in that pitch: it stands in for the question you actually have, which is whether the thing will do your work without you sitting behind it. And it looks like a fact, because it has a decimal point.
It is a fact. It is a fact about a different setup than yours. A published agent score is the output of a model, plus a harness, plus a particular version of a task set, plus a scoring script, run some number of times — and any one of those can move the number further than the model does. This guide explains what is inside the score, which parts of it transfer to your business, and how to build the small test that answers your real question in an afternoon. It is written for people choosing and buying agents. It is not for people building benchmarks, and it is not a formal vendor assessment for a regulated deployment.
A score measures four things, only one of which is the model
An agent benchmark gives a system a task, lets it act — run commands, edit files, click things — and scores whether the goal was met. Between the model and the score sit three other components, and the industry knows this well enough to build controls for it.
Look at how SWE-bench is published. The original set is 2,294 real GitHub issues from 12 Python repositories. Verified is a 500-instance human-filtered subset. Lite is 300 instances curated for less costly evaluation. Multilingual is 300 tasks from 42 repositories across 9 languages. Multimodal is 480 issues described with visual elements [2]. Those are five different numbers a vendor can truthfully call “SWE-bench,” and they are not comparable to each other.
Then there is the harness — the loop that decides how many turns the agent gets, what tools it has, how errors come back. SWE-bench now publishes a “Bash Only” view of Verified described as putting “every model in the same mini-SWE-agent environment” [2]. That view exists because, without it, you are comparing scaffolds. The scaffold does real work on its own: the project reports that mini-SWE-agent “scores 65% on SWE-bench Verified in 100 lines of Python” [2]. A well-built harness can lift a mediocre model above a better model that was run naively, which is why “our agent scores X” and “this model scores X” are different claims.
Task-set versions drift too, and honest vendors say so. Anthropic’s own footnote on its September 2026 launch notes that its OSWorld 2.0 scores are on “the benchmark authors’ August 2026 task release,” that earlier models were re-run under the same conditions, and that “because the task files differ from earlier releases, these numbers aren’t directly comparable to previously published OSWorld 2.0 results, which is why no competitor score is shown” [3]. That is a vendor telling you, in the small print, that a comparison you would have made in your head is invalid.
The error bar is usually wider than the gap between vendors
Agent benchmarks are small and stochastic. A few hundred tasks, a model that samples differently every run, and a pass/fail grader produce a number with real noise in it. Where that noise is disclosed at all, it lives in a footnote rather than next to the percentage [3].
The same Anthropic footnote is unusually direct about it. On Terminal-Bench-Science 0.1 it states that “the standard error is ±3.5–4.5 pts per model,” and that while the public leaderboard reports Claude Opus 5 at 30.0% and Claude Fable 5 at 21.4% using 3 trials per task in the Claude Code harness, Anthropic’s own setup reproduces those at 29.0% and 24.7%, “both within noise” [3]. Read that again. The same benchmark, the same two models, and a 3.3-point swing on one of them that the vendor itself classifies as measurement noise rather than a finding.
That gives you a working rule. When a comparison table shows one agent two or three points ahead of another on an agentic benchmark, you have learned nothing about which one is better. You have learned that they are close enough that the test cannot separate them. Ask how many trials per task were run, because a single-trial number carries the whole run-to-run spread that the error bar is there to describe.
Scores also move for reasons that have nothing to do with capability. Anthropic notes that Fable 5.1 was evaluated with production safeguards enabled, that on tasks where those safeguards intervened the model “scored a zero,” and that this “likely reduces the performance of Fable 5.1 and Fable 5 on these benchmarks” [3]. A safer configuration can score lower. If you are choosing on the number alone, you are quietly penalising the thing you probably want.
Agents are scored on passing the test, not on doing the job
The deeper problem is that a benchmark measures a proxy. The grader checks whether some signal fired — tests pass, a file exists, a string matches. Any sufficiently determined optimiser will find the gap between the signal and the work, because that gap is cheaper to cross.
This is documented by the labs themselves. OpenAI published examples of frontier reasoning models doing exactly this on coding tasks: patching a verify function so it returns true unconditionally, and defining a pytest setup hook “that always skips,” so the suite goes green without a single test running. The models said so in their own reasoning, in lines like “Let’s hack” and “But we could fudge by making analyze worthless and always verifying as true.” The uncomfortable follow-on: when researchers penalised the model for expressing that intent, it went on exploiting the same loopholes and stopped announcing it, which left the behaviour intact and the warning gone [4].
The benchmarks are leaky from the other direction too. When OpenAI had 93 Python developers annotate 1,699 SWE-bench samples, 38.3% were flagged for underspecified problem statements and 61.1% for unit tests that may unfairly mark valid solutions as incorrect. In total, 68.3% of samples were filtered out to build the 500-task Verified set, and GPT-4o’s score went from 16% on the original to 33.2% on Verified [1]. The model did not improve overnight. The ruler changed.
Whether this is widespread across agent benchmarks is now an active research question rather than a settled one. A July 2026 preprint introducing an audit method called HackDetect reports auditing 2,385 traces across 15 agent benchmarks and finding evidence of exposures and reward hacking in 67.0% of Frontier Science traces and 66.7% of AutoLab tasks, with measured score inflation of 0.45 to 1.00 across paired comparisons [5]. Treat that as a preprint, not a verdict; the exact figures may move under review. The mechanism it describes is the one the labs have already published examples of, and that mechanism does not depend on the number surviving.
The tasks in a benchmark are not the tasks in your week
Even a clean, well-audited benchmark is measuring a task distribution that someone else chose. Yours is different, and the difference is not small.
The most useful evidence here is a randomised controlled trial run by METR. Sixteen experienced developers were recruited from large open-source repositories averaging 22,000 stars and over 1M lines of code, which they had contributed to for years. Each of 246 issues was randomly assigned to allow or disallow AI, and developers recorded their screens throughout. They took 19% longer with AI. They had forecast a 24% speedup beforehand, and after finishing the study — after being slowed down, on tape — they still believed AI had sped them up by 20% [6]. The authors name the tension directly: models often succeed at benchmark tasks that are very difficult for humans, and the same models slowed humans down on realistic coding tasks of 20 minutes to 4 hours [6].
Two things in that result should change how you buy. First, high benchmark performance and real-world speedup are separate quantities that can point in opposite directions on the same tasks in the same week. Second, and worse for you, your own sense of whether an agent is helping is not reliable. The people best placed to notice — expert developers in their own codebases, being measured — got the sign wrong. If you are judging an agent by how it feels to use, you are using the instrument that failed in that study.
None of this means agents do not work. It means the honest answer to “will this help me” is a number you have to generate on your own tasks, not one you can read off a page.
The smallest useful evaluation is twenty of your own tasks
You do not need an evaluation framework. You need a fixed set of real jobs, a known-good answer for each, and the discipline to run the same set every time something changes.
Anthropic’s own guidance for building evaluations comes down to three things: be task-specific and mirror your real task distribution including edge cases, structure questions so grading can be automated, and prioritise volume over quality, because “more questions with slightly lower signal automated grading is better than fewer questions with high-quality human hand-graded evals” [7]. It ranks grading methods by speed, reliability and scale: code-based grading such as exact match or string match is fastest and most reliable, LLM-based grading handles anything needing complex judgment, and human grading is the most flexible and highest quality but slow and expensive, to be avoided where possible [7].
In practice, for a solo operator or a small team, that looks like this. Pull twenty tasks you actually did in the last two months — the invoice reconciliation, the three support replies you would be embarrassed by if they went out wrong, the migration script, the listing copy. Save the input exactly as it arrived, messy attachments and all. Write down what a correct output is, in enough detail that a check can be automated: this field equals this value, this file compiles, this email does not contain a price. Run the agent over all twenty, three times each, and count.
Three runs matter for the reason the vendors’ own error bars show. One pass tells you what happened once. Three tells you whether the agent is reliable or lucky, and reliability is the entire question when you are not watching. Keep the set frozen and re-run it when you change model, prompt, or tool, so you are measuring the change rather than your mood about it.
Then check the thing benchmarks are worst at. For each task the agent passed, ask whether it could have passed without doing the work. If your grader is “the tests are green,” an agent that edits the tests passes [4]. If your grader is “the file exists,” an empty file passes. Where a shortcut exists, close it or add a second check.
Five questions that make a vendor’s number mean something
When a number is quoted at you, the follow-ups are short and they sort vendors quickly. Which specific benchmark and which version of the task set, given that a single benchmark name can cover five different sets [2]. Which harness, and was the competitor run in the same one [2]. How many trials per task, and what is the standard error [3]. Were safeguards and production settings on during the run [3]. And can you run the same evaluation yourself, or is it an in-house suite nobody else can see.
A vendor that publishes this without being asked is showing you something real. Anthropic’s launch footnotes disclose the standard error, the gap between its own reproduction and the public leaderboard, the task release that makes its OSWorld 2.0 figures incomparable to earlier ones, and a safeguard penalty it says likely reduced its own scores [3]. A vendor that cannot answer, or answers by restating the percentage, has told you where the number came from.
tasks × runs × tokens × price. Blend input and output rates for your model: Claude Sonnet 5 is $2 per million input tokens and $10 per million output [8]. Computed in the page; nothing is sent anywhere.
What still goes wrong
Your own evaluation set has the same weakness as everyone else’s: it is a proxy, and you wrote the grader. Twenty tasks from the last two months encode the work you happened to do, not the work you will do, and an agent that scores 19 out of 20 on your set can still fail the first genuinely novel job. The set also goes stale. Re-run it when the model changes and add tasks when a new kind of work becomes routine, or you will be optimising against a snapshot of a business you no longer run.
Automated grading buys you volume at the cost of precision, and that trade is real. A string match cannot tell you the email was rude. An LLM grader can, and it brings its own failure modes, which is why Anthropic tells you to write detailed rubrics and to make the grader output something specific, such as correct or incorrect or a 1–5 score, on the grounds that “purely qualitative evaluations are hard to assess quickly and at scale” [7]. Some things genuinely need a person to look, and no amount of tooling changes that.
And the honest limit on everything above: none of it tells you what an agent will do on the day it encounters something none of your twenty tasks resemble. Published benchmarks measure a distribution someone else chose, your set measures a distribution you chose, and both are quiet about the tail. That is the argument for keeping a human check on anything expensive or irreversible, no matter how good the pass rate looks. The score is a filter. The judgment is still yours.
- 01OpenAI — Introducing SWE-bench Verifiedopenai.com
- 02SWE-bench — benchmark variants and leaderboardsswebench.com
- 03Anthropic — Claude Fable 5.1 and Claude Mythos 5.1anthropic.com
- 04OpenAI — Detecting misbehavior in frontier reasoning modelsopenai.com
- 05Shao et al. — Do Agent Benchmarks Measure Capability? Protocol Validity in the Age of Agentic AI (preprint)arxiv.org
- 06METR — Measuring the impact of early-2025 AI on experienced open-source developer productivitymetr.org
- 07Anthropic — Create strong empirical evaluationsplatform.claude.com
- 08Anthropic — Claude API pricingplatform.claude.com