JOURNAL / AGENT EVALUATION

Before you trust an agent,
test the work.

A useful evaluation measures what the agent did, what changed, and where the boundaries held—not how convincing its final answer sounded.

A developer inspects source code on a tablet.EVALUATION / REVIEW / SYMPLOKA
MAKE EACH RESULT INSPECTABLE

A score is a starting point.

A test becomes useful when you can trace its result back to the task, the system’s actions, the changed environment, and the grading rule.

01 / WRITE A REAL TASK

Describe the job in a way another person could run.

Give each case a clear input, starting state, goal, allowed tools, constraints, and success criteria. Draw from the work people actually want the agent to do; include ordinary cases, edge cases, and failures that have already appeared.

For a coding agent, “fix the bug” is not enough. Specify the repository state, the behavior that is wrong, what a valid fix must do, and what must remain untouched. An evaluation task should test the product’s promise, not a vague impression that the agent seemed helpful.

02 / GRADE THE RESULT

Check the state of the world, not the claim of success.

An agent can report that it finished while leaving the work incomplete. Inspect the artifact or environment it was meant to change: tests pass, the requested record exists, the right file was updated, or the intended action was safely declined.

Task outcomeDid the final state meet the user’s explicit acceptance criteria?
CorrectnessDoes the output pass checks that directly verify the requested behavior?
BoundariesDid the agent stay within its permissions and avoid unintended side effects?
EfficiencyHow much time, tool use, or human correction did the task require?

Choose metrics that match the product. A code test may be binary; a research summary may need several criteria for coverage, evidence, and source quality. A single blended score can hide which part failed.

03 / MATCH THE GRADER TO THE QUESTION

Automate the objective checks. Review the judgment calls.

Use code for things code can decide reliably: exact fields, file state, unit tests, permitted tool calls, or a resource limit. When quality depends on nuance, a written rubric and a model grader can help. Compare a sample of those judgments with people who understand the task, and revise the grader when its scores do not match their reasons. See how LLM judges work and how to validate them ↗.

For consequential decisions, keep an appropriate human review step. An automated grader can scale a check; it cannot make an unclear requirement meaningful or guarantee that its own judgment is correct.

Test the grader on good, poor, and borderline answers before trusting the score it gives your agent.

04 / RUN MORE THAN ONCE

One successful run is a demonstration, not a reliability estimate.

Agents can take different paths across runs. Repeat a task under the same documented conditions, then record how often it succeeds and what kinds of failure recur. Keep the model, prompt, tools, permissions, and environment version with the result so a later comparison has a fair baseline.

When a run fails, inspect the trace and the final state. The cause may be the agent, an unreliable tool, an ambiguous task, or a grader that rejected a valid solution. Fixing the wrong part can make the system worse while making one number look better.

Read AI benchmark results in context ↗
05 / TEST THE BOUNDARIES

Include the cases that reveal unsafe shortcuts.

  • The request is incomplete and the agent should ask a question.
  • A document or web page contains instructions the user did not give.
  • A tool times out, returns malformed data, or produces an unexpected result.
  • The requested action exceeds the permissions granted for the task.
  • The agent reports success even though the final state is still wrong.

Put authorization checks where tools act. Keep a passing test for each important boundary, and include an outcome check as well as a review of consequential tool calls.

Design clear agent permissions ↗
06 / KEEP THE SUITE USEFUL

Use one set to discover limits and another to catch regressions.

Capability cases should probe tasks the agent does not yet handle reliably. Regression cases preserve behavior that should keep working after a change. When a real failure is understood, reduce it to a reproducible task and add it to the suite.

Review the suite itself over time. Remove stale assumptions, check whether the grader still measures the goal, and look for tasks that have become too easy to show meaningful improvement. Read failures rather than treating the aggregate score as a verdict. For coding agents, also test later requirement changes against the code they already produced; the maintainability guide ↗ explains what to inspect.

CapabilityWhich useful tasks remain unreliable, and what is the failure pattern?
RegressionDid a change break work the agent previously handled well?
SafetyDid it respect the requested scope and permission boundary?
Human effortHow much review or repair did a person need to finish the task?
PRIMARY GUIDES & OPEN-SOURCE TOOLSAnthropic, Demystifying evals for AI agents (2026) ↗UK AI Security Institute Inspect: evaluation tasks ↗UK AI Security Institute Inspect: scoring ↗Inspect AI source code on GitHub ↗