Evaluating AI Agents

How to Evaluate AI Agent Output Quality When Humans Cannot Review All Decisions

Matt Doughty Matt Doughty CEO & Co-Founder, Prefactor
6 min read
Abstract illustration: How to Evaluate AI Agent Output Quality When Humans Cannot Review All Decisions

What you will build

This article gives you a practical framework for evaluating agent output quality when the volume or complexity of decisions makes full human review impossible. By the end, you will know how to sample intelligently, design automated quality signals, route high-risk outputs to human reviewers, and set hard limits that stop runaway agents before they cause damage.

The core problem is not that agents fail. Production agents fail between 70% and 95% of the time depending on task complexity, per Fiddler AI’s July 2026 analysis, and 88% of agents that pass controlled demos fail in real workflows. The problem is that most teams have no structured way to find out which decisions failed, when, and why, without reading every output themselves. If you are still thinking about what “doing their job” means for your agents, start with how to know whether your agents are actually doing their job before going further here.

Two recent cases illustrate the stakes. 1Password’s research found that AI-generated security patches fail 74% of the time and cannot be deployed without expert human validation. New Orleans is testing Carbyne AI in live 911 dispatch, where misclassification could delay emergency response. In both contexts, exhaustive human review is either impractical at volume or structurally impossible in real time. A sampling and triage framework is not optional in these settings; it is the only path to safe operation.


Why exhaustive review breaks at scale

When an agent handles dozens of decisions per hour, a human reviewer can keep up. When it handles thousands, the review queue becomes the bottleneck, and teams either slow the agent down to match human capacity or, more commonly, stop reviewing at all.

HubSpot’s Customer Agent resolves approximately 65% of support conversations automatically. At that resolution rate, human review of every closed ticket would require a team as large as the one the agent replaced. The math forces a sampling approach. The question is whether the sampling is designed deliberately or left to chance.

Agent observability gives you the runtime data you need to make sampling deliberate. Without it, you are choosing outputs to review at random. With it, you can route based on risk signals: low confidence scores, unusual tool call sequences, outputs that fall near decision boundaries, or cases where the agent retried more than once.


The evaluation framework

Step 1: Define failure before deployment

An evaluation framework cannot work if you do not know what failure looks like for your specific agent. For a support agent, failure might mean a customer receives incorrect pricing information. For a code-generation agent, it might mean a test suite passes but the logic is wrong. For a security patch agent, it means a patch that introduces a new vulnerability.

Write failure definitions as testable criteria. “The output is wrong” is not testable. “The output contains a price figure that differs from the product catalog by more than zero” is. Each failure definition becomes either an automated check or a human review criterion.

This is also where you set hard execution limits. An inventory reconciliation agent at an Anthropic logistics customer looped indefinitely on a non-existent product, consuming $4,000 in API costs within 90 minutes before a human noticed. A loop-detection rule and a $500 spend ceiling would have halted it automatically. Hard limits belong in your failure definition, not as an afterthought.

Step 2: Build a triage layer

Not all outputs carry equal risk. A triage layer reads runtime signals and sorts outputs into three buckets: auto-accept, auto-reject, and human review.

flowchart TD
    A[Agent output produced] --> B{Confidence score above threshold?}
    B -- Yes --> C{Any anomaly signal?}
    B -- No --> D[Route to human review]
    C -- No --> E[Auto-accept]
    C -- Yes --> D
    D --> F{Reviewer decision}
    F -- Accept --> G[Log as accepted]
    F -- Reject --> H[Log failure pattern]
    H --> I[Update automated checks]

Anomaly signals worth tracking include: token count significantly above the task baseline, tool calls in an unexpected order, retries above a defined count, outputs that match known failure templates from previous reviews, and confidence scores from a secondary evaluator model below a set floor.

For AI governance frameworks that require audit trails, every routing decision should be logged with the signal that triggered it, not just the final outcome.

Step 3: Sample the auto-accepted bucket

Auto-accepted outputs are not guaranteed to be correct. They are outputs your triage layer did not flag. A stratified sample drawn weekly from that bucket tells you whether your triage rules are calibrated correctly.

Stratify by output type, by the tool sequence the agent used, and by time of day if your agent’s context varies. A flat random sample will miss systematic failures that are concentrated in one output class. Doctolib deployed agents across 600 engineers and cut engineering cycle time from weeks to hours. At that scale, a stratified sample across code generation, test writing, and deployment tasks would surface failures in one category before they contaminate others.

flowchart TD
    A[Auto-accepted outputs] --> B[Stratify by output type]
    B --> C[Sample N per stratum per week]
    C --> D[Human review of sample]
    D --> E{New failure pattern found?}
    E -- Yes --> F[Add automated check to triage layer]
    E -- No --> G[Log: triage calibration holds]
    F --> H[Re-evaluate recent auto-accepted outputs]

Step 4: Close the loop

Evaluation only improves quality if findings feed back into the system. Every failure pattern a human reviewer identifies should generate a new automated check in the triage layer. That check then catches the same pattern automatically in future outputs, freeing human reviewers to focus on genuinely novel failures.

This loop is what separates a static quality gate from one that gets tighter over time. Track your triage layer’s false-negative rate (failures that passed auto-accept) monthly. If it is not falling, your automated checks are not capturing what human reviewers are finding.

LLM evaluation tooling can run automated scorers against a defined rubric, which helps when failure criteria involve nuanced judgment rather than a simple rule. Secondary model scoring is not a substitute for human review of high-stakes outputs, but it scales well for volume tasks where the failure mode is consistent.

For teams working through the broader governance questions, runtime governance versus pre-deployment review covers where each approach applies. Agent evaluation guides and AI governance best practices are good next reads once your triage layer is running.

If you are choosing tooling to instrument this workflow, Prefactor is one example of a platform built to support agent evaluation and observability in production.

What the framework does not solve

This framework surfaces failure patterns and concentrates human attention on the outputs most likely to be wrong. It does not eliminate the possibility of a harmful output reaching production between sample reviews. For decisions where a single error causes irreversible harm, the right design is a mandatory human checkpoint before the output is acted on, regardless of volume pressure. The 1Password security patch finding is a clear example: a 74% failure rate means automation cannot own the final deployment decision, only the generation step.


Where to start

Map your agent’s output types and write one testable failure criterion for each before you instrument anything else. Then take the agent readiness assessment to identify which parts of your evaluation infrastructure are in place and where the gaps are.

Matt Doughty Matt Doughty CEO & Co-Founder, Prefactor

Founder of Prefactor, writing on the operational reality of getting AI agents into production — evaluation, observability, governance, and the plumbing assistants never needed.

Frequently asked questions

What is the difference between agent monitoring and agent evaluation?

Monitoring tracks runtime signals in real time: latency, token consumption, error rates, tool call frequency. Evaluation judges output quality against defined criteria, either by automated scorer, by human sample review, or both. You need both; monitoring tells you something is wrong, evaluation tells you what and why.

How large a sample do I need for statistically meaningful agent evaluation?

The right sample size depends on your failure rate and tolerance for undetected errors. If your agent fails roughly 10% of the time and you want to detect that reliably, you need at least 100 sampled outputs per evaluation window. If the failure mode is rare but catastrophic, increase the sample or add automated pre-filters to surface high-risk cases for human review.

Can automated scorers replace human reviewers entirely?

Not for high-stakes decisions. Automated scorers handle volume and catch consistent failure patterns, but they share the same blind spots as the model they evaluate. Use automated scoring to triage, then route edge cases and low-confidence outputs to human reviewers. The goal is to concentrate human attention where it matters, not to eliminate it.

What should trigger an automatic halt to agent execution?

Define halt conditions before deployment: budget thresholds, loop detection, confidence scores below a floor, and output classes that are always out of scope. An agent that looped on a non-existent product consumed $4,000 in API costs in 90 minutes before a human noticed. Hard limits on spend and iteration count would have stopped it in seconds.

Stay ahead of the curve

No spam. Unsubscribe anytime. A resource by Prefactor.

Almost there — check your inbox to confirm your subscription.