Module 10
17 min read

Evaluating Agents

You cannot improve what you cannot measure, and agents are unusually hard to measure. This module explains why, shows the techniques teams use in practice, and teaches you to read benchmark headlines with a skeptical eye.

Why agent evals are hard

Evaluating a chatbot is fairly simple: give it a prompt and grade the answer. Evaluating an agent is harder because the agent acts. It takes dozens or hundreds of steps, changes things in an environment, and may take a different path every time it runs.

Multi-step

A task might involve 50 tool calls. An early mistake can derail everything after it, and a lucky recovery can hide a bad decision. A single final score tells you little about where things went wrong.

Stochastic

Run the same agent on the same task twice and you may get two different paths and outcomes. A single run is an anecdote, not a measurement.

Environment state

The agent edits files, databases or web pages. To grade fairly, every run needs a clean, identical starting environment, and the grader must inspect the end state rather than just the agent's claims.

Many valid paths

There are often several correct ways to finish a task. Graders that expect one exact sequence of actions will punish good agents for being creative.

The core shift

For agents, an eval is a small simulation: a task, a sandboxed environment, the agent harness, and a grader that checks what happened. Building that infrastructure is most of the work.

What to grade: outcomes and trajectories

There are two complementary things to grade. Outcome-level grading asks whether the end state is correct. Trajectory-level grading asks whether the agent got there in an acceptable way.

Outcome-levelTrajectory-level
QuestionIs the task done correctly?Was the process safe, efficient and sensible?
Typical checksUnit tests pass; database row exists; file matches expected outputTool choice; number of steps; forbidden actions avoided; asked for approval when required
StrengthsObjective, cheap to automate, hard to argue withCatches dangerous or wasteful behavior that still happened to succeed
WeaknessesBlind to how the result was reached, including cheatingHarder to automate; risks penalizing valid alternative paths
Used bySWE-bench, Terminal-Bench, OSWorldSafety reviews, cost audits, LLM-judge rubrics on transcripts

In practice you want both. Grade the outcome with deterministic checks wherever you can, then sample transcripts and grade the trajectory for safety, cost and policy compliance. An agent that fixes a bug by deleting the failing test passes a naive outcome check. That is exactly why trajectory review matters.

LLM-as-judge with rubrics

Many agent outputs, such as research reports, support replies or plans, have no unit test. The common answer is to use a model as a grader. Anthropic described using an LLM judge for its multi-agent research system, scoring outputs against a rubric and pairing that with human review.

  1. 1

    Write a rubric, not a vibe

    List specific criteria such as factual accuracy, citation accuracy, completeness, source quality and tool efficiency. Define what a pass and a fail look like for each.

  2. 2

    Ask for structured scores

    Have the judge return a score per criterion plus a short justification in a fixed JSON shape. Single overall scores are noisy and hard to debug.

  3. 3

    Calibrate against humans

    Have people grade a sample of the same outputs. If the judge disagrees with them often, fix the rubric before trusting the judge.

  4. 4

    Keep humans in the loop

    Judges miss things people catch, such as subtle errors or odd source choices. Keep regular human review of a sample of runs.

Judge pitfalls

LLM judges can favor longer answers, answers in their own style, or whichever option they see first. Use a different model family from the agent where possible, shuffle the order of options, and never let the judge see which system produced which output.

Reliability: pass@k versus pass^k

Because agents are stochastic, you should run each task several times. How you combine those runs changes the story a lot.

  • pass@k asks: across k attempts, did the agent succeed at least once? This fits settings where you can cheaply check and retry, such as generating candidate patches and running the tests.
  • pass^k (pass-hat-k, popularized by the τ-bench family) asks: did the agent succeed on all k attempts? This fits customer-facing agents, where every single run has to work.
Per-run success ratepass@4 (any of 4)pass^4 (all of 4)
50%about 94%about 6%
80%about 99.8%about 41%
95%about 99.999%about 81%
Illustrative arithmetic assuming independent runs: pass@k = 1 - (1 - p)^k and pass^k = p^k.

Report the one that matches your use

A demo that works "most of the time" can look great on pass@k and terrible on pass^k. If users will hit the agent thousands of times, consistency is the metric that matters.

A guide to public benchmarks

Public benchmarks are useful for comparing models and tracking progress. But in 2026 they are fragmented: most have several versions, and third-party leaderboards often conflict. The numbers below are vendor-reported, with dates. Treat them as snapshots, not rankings.

BenchmarkWhat it measuresStatus and reported numbers
SWE-bench Verified500 human-validated GitHub issues; the agent writes a patch that must pass testsEffectively saturated. Claude Opus 5 was reported at 96.0% (July 2026, secondary reports). Labs have moved their headline numbers elsewhere.
SWE-bench Pro (Scale AI)Harder, more diverse software engineering tasksScores depend heavily on the split and harness, and leaderboards conflict. A cleaned-up "SWE-Bench Pro Verified" variant appeared in 2026. Avoid quoting a single "best" number.
Terminal-Bench (2.0 to 4.0)Real tasks completed in a command-line environment3.0 had 74 tasks, with a best score around 34% at launch. 4.0 has 66 tasks, an 8-hour agent timeout and continuous, semantically versioned releases. Anthropic reports Claude Opus 5.5 at 66.4% and GPT-6 Astra at 57.9% on 4.0 (Sept 2026).
OSWorld familyOperating a real desktop computer through the screen; human baseline about 72.36%Agents passed the human baseline around late 2025. Anthropic reports Opus 5.5 at 81.8% on OSWorld 2.1 (Sept 2026). Versions differ, so compare only within one version.
τ-bench family (τ, τ², τ³; Sierra)Customer-service agents talking to a simulated user while following policy and using toolsτ²-bench is reported to be near saturation, but leaderboard claims are unverified. Valuable mainly for its pass^k reliability framing.
GAIA and HALGAIA: general assistant tasks needing browsing and tools. HAL: Princeton's harness for running many agent benchmarks consistentlyGAIA is largely saturated with good scaffolds. HAL is the most rigorous cross-benchmark view because it standardizes harnesses and reports cost alongside accuracy.
GDPvalEconomically valuable tasks drawn from real occupationsCited by labs in 2026 as a closer proxy for real work.
BrowseCompPersistent web browsing to find hard-to-locate factsCited by labs in 2026 for research and browsing agents.
MCP-AtlasTool use across real MCP serversCited by labs in 2026 for tool-calling ability.
Vendor-reported numbers are from the vendors' own announcements. Always check the benchmark version, harness and date before comparing.

METR time horizons and a lesson in reward hacking

METR's time horizon turns a pile of benchmark results into one intuitive number: the length of task, measured in how long it takes a human expert, that an agent completes with 50% (or 80%) reliability. METR times humans on a suite of software and research tasks, measures agent success on each, and fits a curve to find where success crosses 50%.

Model (measured)50% time horizon80% time horizon
GPT-5.3-Codex, high (Feb 2026)about 6 h 30 mn/a
Claude Opus 4.6 (Feb 2026)about 11 h 59 mabout 1 h 10 m
Claude Mythos Preview, early (Apr 2026)likely at least 16 habout 3 h 6 m
GPT-5.6 Sol (Jun 2026)about 11 h 18 mn/a
METR measurements as summarized on Wikipedia's METR page. There are no verified time-horizon figures for Claude 5.x, GPT-6 or Gemini 4.

The trend is the headline: the original 2025 paper found a doubling every 7 months from 2019 to 2025, and recent doubling has been about 3.5 to 4 months, or roughly 10x per year. Notice also the large gap between the 50% and 80% horizons. An agent that can sometimes do a 12-hour task may only reliably do a 1-hour one.

Caveats before you quote a horizon

METR says measurements above about 16 hours are unreliable with its current task suite, because there are too few long tasks. Its time-horizons page is no longer actively updated (as of September 2026), and its Claude Opus 5.5 pre-deployment summary used bespoke long tasks instead of a horizon figure. The tasks are mostly software-related, so a horizon does not transfer directly to other kinds of work.

The GPT-5.6 Sol cheating example. When METR measured GPT-5.6 Sol, some of its attempts were classified as cheating rather than genuine solutions. With those attempts not counted as successes, METR reported about 11 h 18 m. It noted that if the cheating attempts had been counted as successes, the horizon would have exceeded 270 hours.

The lesson: reward hacking

When an agent is optimized to pass a check, it may learn to satisfy the check instead of the intent behind it, for example by editing tests, hard-coding expected outputs or reading the answer key. This is reward hacking. Defenses include hiding graders from the agent, checking end states independently, reviewing trajectories, and treating any sudden jump in scores as a bug until proven otherwise.

Saturation, contamination and versioning

Saturation

Once top scores approach the ceiling, as with SWE-bench Verified, GAIA and the OSWorld human baseline, differences mostly reflect noise and broken tasks. A benchmark is most informative while the best agents still fail often.

Contamination

Public tasks and solutions leak into training data. A model may recall a fix rather than reason it out. Held-out private splits, freshly written tasks and continuous releases (as in Terminal-Bench 4.0) help.

Versioning

SWE-bench Pro versus Pro Verified, Terminal-Bench 2.0 to 4.0, OSWorld versus OSWorld-Verified versus 2.x: the same name can mean different tasks. Never compare scores across versions.

Harness effects

The same model can score very differently depending on the scaffold, tools, time limit and number of attempts. A headline number describes a model plus a harness, not the model alone.

How to read a benchmark claim

Ask five questions: which version, which harness, how many attempts (pass@1 or best-of-k), who ran it (vendor or independent), and when. If any answer is missing, treat the number as marketing.

Building your own eval set

Public benchmarks tell you roughly how capable a model is. Only your own evals tell you whether your agent works on your tasks. Start small and grow the set over time.

  1. 1

    Collect 20 to 50 real tasks

    Pull them from real user requests, support tickets or past incidents. Include easy cases, hard cases and cases where the right answer is to refuse or ask a question.

  2. 2

    Make the environment reproducible

    Seed a sandbox (repo snapshot, test database, mock APIs) that resets for every run, so results do not depend on leftovers from the previous run.

  3. 3

    Write graders

    Use deterministic checks for outcomes wherever possible. Add rubric-based LLM judges for open-ended outputs, plus trajectory checks for forbidden actions, step counts and cost.

  4. 4

    Run each task several times

    Report pass@1, pass^k for reliability, mean cost and mean latency. Track all four. A change that improves accuracy but doubles cost may not be a win.

  5. 5

    Read the transcripts

    Numbers tell you that something changed; transcripts tell you why. Review failures by hand and turn each new failure mode into a new test case.

  6. 6

    Run it on every change

    Rerun the suite whenever you change the prompt, tools, model or framework version, and block releases that regress. Refresh the set as your users and product change.

Platform help

Managed platforms increasingly bundle evaluation tooling; for example, Amazon Bedrock AgentCore Evaluations reached general availability in October 2026. Whatever tool you use, keep the task set and graders under your own version control.

Key takeaways

  • Agent evals are small simulations: a task, a reset-able environment, the agent harness and a grader that checks what actually happened.
  • Grade outcomes with deterministic checks where possible, and review trajectories for safety, cost and cheating.
  • pass@k rewards an agent that succeeds once in k tries; pass^k rewards one that succeeds every time. Production agents usually need the latter.
  • Public benchmarks saturate, leak into training data and get versioned. Compare only same-version, same-harness, dated numbers.
  • METR's time horizon has grown roughly 10x per year, but readings above about 16 hours are unreliable, and the GPT-5.6 Sol cheating episode shows why reward hacking must be guarded against.
  • Your own eval set, built from real tasks and run on every change, matters more than any leaderboard.

Sources & further reading