The Art of Building Verifiers for Computer Use Agents
Organizations: Microsoft Research · Browserbase
Abstract
Verifying the success of computer use agent (CUA) trajectories is a critical challenge: without reliable verification, neither evaluation nor training signal can be trusted. In this paper, we present lessons learned from building a best-in-class verifier for web tasks we call the Universal Verifier. We design the Universal Verifier around four key principles: 1) constructing rubrics with meaningful, non-overlapping criteria to reduce noise; 2) separating process and outcome rewards that yield complementary signals, capturing cases where an agent follows the right steps but gets blocked or succeeds through an unexpected path; 3) distinguishing between controllable and uncontrollable failures scored via a cascading-error-free strategy for finer-grained failure understanding; and 4) a divide-and-conquer context management scheme that attends to all screenshots in a trajectory, improving reliability on longer task horizons. We validate these findings on CUAVerifierBench, a new set of CUA trajectories with both process and outcome human labels, showing that our Universal Verifier agrees with humans as often as humans agree with each other. We report a reduction in false positive rates to near zero compared to baselines like WebVoyager ( 45%) and WebJudge ( 22%). We emphasize that these gains stem from the cumulative effect of the design choices above. We also find that an auto-research agent achieves 70% of expert quality in 5% of the time, but fails to discover all strategies required to replicate the Universal Verifier. We open-source our Universal Verifier system along with CUAVerifierBench; available at https://github.com/microsoft/fara.
Figures & tables
| Verifier | LLM | Rubric | Screenshots | Action hist. | Final ans. |
| WebJudge (OM2W) | o4-mini | ✗ Not used | ✓ Top- most relevant | ✓ Full | ✗ |
| (scored 1–5, kept if | |||||
| threshold; capped at 5) | |||||
| WebVoyager GPT eval | gpt-4o | ✗ Not used | ✓ All screenshots | ✗ | ✓ |
| (last if over limit; | |||||
| default ) |
| Internal Dataset ( ) | Browserbase OM2W ( ) | |||||||||
| WebVoy. | WebJudge | UV | WebVoy. | WebJudge | UV | |||||
| GPT-4o | GPT-5.2 | o4-mini | GPT-5.2 | GPT-5.2 | GPT-4o | GPT-5.2 | o4-mini | GPT-5.2 | GPT-5.2 | |
| Agreement with outcome human labels | ||||||||||
| Accuracy ( ) | ||||||||||
| F1 ( ) | ||||||||||
| Cohen’s ( ) | ||||||||||
| WebVoyager | OM2W | WebTailBench | ||||
| Fara-7B | GPT-5 | Fara-7B | GPT-5 | Fara-7B | GPT-5 | |
| (tasks scored) | 594 | 593 | 298 | 276 | 599 | 597 |
| Unterminated (%) | 4.2 | 3.4 | 5.0 | 7.2 | 17.0 | 7.7 |
| Success rate (%) | ||||||
| Native verifier | 74.6 | 90.6 | 32.2 | 62.0 | 39.6 | 62.5 |
| UV Process | 49.0 | 79.4 | 25.8 | 64.9 | 39.6 | 63.5 |
Appendix figures & tables29 assets
Supplementary material from the paper’s appendix.
Appendix
| Old Rubric | Pts | Improved Rubric | Pts |
| Task A: On Eventbrite.com, find a live music event in Nashville, TN happening this upcoming Saturday. Then on Spotify.com, find songs by any of the performing artists from that event. | |||
| Event details Name, date & time, venue & location | 2/3 | Event details Name, date & time, venue & location | 2/3 |
| Ticket information Includes ticket price or free indicator | 0/1 | Performing artists list All performers named | 1/1 |
| Event link Direct URL to Eventbrite page | 0/1 | Spotify artist search Searches at least one artist | 1/1 |
| Performing artists list All performers named in event description | 1/1 | Song selection 3–5 song titles per artist searched | 1/1 |
| Spotify artist search Searches for at least one artist on Spotify | 1/1 | ||
| Criterion | Pts |
| Task: How much does it cost to select a window seat on a direct AirAsia flight from Singapore to Langkawi from November 24 to November 27? If there are no available flights for those dates, please indicate that in your answer. | |
| Access AirAsia booking flow and run the specified flight search Navigate to AirAsia, search for SIN LGK on Nov 24 and LGK SIN on Nov 27. | 2/2 |
| Determine direct-flight availability for both legs Check whether direct flights exist for each leg; report unavailability when applicable. | 7/7 |
| Report window-seat selection cost for the identified flights Select a window seat and report the cost for each eligible flight. Conditional: Only applies if 1 eligible direct AirAsia flight exists for Nov 24 (SIN LGK) and Nov 27 (LGK SIN). Condition met: Yes. | 1/4 |
| Total: 10/13 | |
| Scenario | Process Score | Outcome Label |
| Agent solved task correctly, no blockers, no side effects | Success | Success |
| Environment blocker (CAPTCHA, login wall, site down, out of stock); agent reported clearly and did not attempt alternative | Success (best effort) | Failure (goal not achieved) |
| Agent overcame blocker via alternative source, delivered correct result | Success | Success |
| Controllable mistake (wrong product, wrong date, missed option) | Failure (deduct per criterion) | Failure (if mistake affects goal) |
| Correct approach but wrong final answer (computational or reasoning error) | Failure (moderate deduction) | Failure (wrong answer) |
| Unsolicited side effects (extraneous cart items, unauthorized substitutions) | Failure | Failure |
| Category | Verdict | Example |
| Contradiction : screenshots show , agent claims | Failure | Screenshot shows a booking calendar exists; agent says “no booking system available” |
| Fabrication : agent claims with zero evidentiary basis | Failure | Agent states a price that appears nowhere in any screenshot |
| Omission : agent did not view everything needed; screenshots lack evidence of , but is commonly known to exist | Failure | Task: “highest ranked NHL team in Western Conference.” Agent only checked Central Division, never viewed Pacific Division |
| Supported inference from absence : screenshots show no evidence of across all pages, AND is not commonly known to exist | Success | No booking UI visible anywhere agent reports “no online booking available” |
| Visual confirmation without explicit statement : agent omits justification but screenshots visually confirm the correct result | Success | Agent found female cardiologists but did not state “female”—photos in screenshots confirm they are female-presenting |
| Step | LLM Calls | Parallelism |
| 1a: Initial Rubric Generation | 1 | — |
| 1b: Dependency Checking | 1 | — |
| 1c: Action-History-Only Scoring | 1 | — |
| 2: Screenshot-Criteria Relevance Scoring | Fully parallel | |
| 3: Group Top-k Screenshots by Criteria | 0 | — |
| 4a: Evidence Analysis (batched) | Fully parallel |
| Benchmark | Model | Selection | Hallucination | Exec. & Strategy | Critical Point | Side-Effect | Tool Interaction |
| WebVoyager | Fara-7B | 0.442 | 0.821 | 0.740 | 0.000 | 0.002 | 0.019 |
| GPT-5 | 0.206 | 0.424 | 0.382 | 0.000 | 0.002 | 0.040 | |
| OM2W | Fara-7B | 0.724 | 0.905 | 1.456 | 0.007 | 0.007 | 0.046 |
| GPT-5 | 0.331 | 0.404 | 0.879 | 0.000 | 0.007 | 0.026 | |
| WebTailBench | Fara-7B | 0.785 | 1.078 | 0.988 | 0.000 | 0.010 | 0.036 |
| GPT-5 | 0.485 | 0.495 | 1.054 | 0.000 | 0.020 | 0.047 |
| Error Type | Description |
| 1. Selection | |
| 1.1 Missing intent | Choosing an entirely wrong product, location, person, service, etc. |
| 1.2 Unauthorized substitution | Silently swapping an unavailable item for a similar alternative without reporting |
| 1.3 Wrong action type | Performing the wrong interaction on the correct entity |
| 1.4 Wrong values / constraint violation | Incorrect parameters, unsatisfied constraints, or results not matching stated requirements |
| 1.5 Other | Selection error not covered above |
| Rubric Creation | Scoring | FNR ( ) | FPR ( ) | Acc ( ) | F1 ( ) | Cohen’s ( ) |
| GPT-4o | GPT-4o | 0.16 / 0.12 | 0.41 / 0.36 | 0.78 / 0.78 | 0.85 / 0.82 | 0.42 / 0.53 |
| o4-mini | o4-mini | 0.28 / 0.25 | 0.24 / 0.15 | 0.73 / 0.79 | 0.80 / 0.81 | 0.40 / 0.59 |
| o3 | o3 | 0.26 / 0.20 | 0.21 / 0.068 | 0.76 / 0.86 | 0.82 / 0.87 | 0.45 / 0.72 |
| GPT-5 | GPT-5 | 0.17 / 0.21 | 0.12 / 0.051 | 0.84 / 0.86 | 0.89 / 0.87 | 0.63 / 0.72 |
| GPT-5.1 | GPT-5.1 | 0.15 / 0.15 | 0.29 / 0.17 | 0.81 / 0.84 | 0.87 / 0.86 | 0.52 / 0.68 |
| GPT-5.2 | GPT-5.2 | 0.23 / 0.28 | 0.03 / 0.00 | 0.82 / 0.84 | 0.87 / 0.84 | 0.61 / 0.68 |
| Rubric Creation | Scoring | FNR ( ) | FPR ( ) | Acc ( ) | F1 ( ) | Cohen’s ( ) |
| GPT-5.2 | GPT-4o | 0.20 / 0.14 | 0.32 / 0.34 | 0.77 / 0.78 | 0.84 / 0.82 | 0.43 / 0.54 |
| GPT-5.2 | o4-mini | 0.23 / 0.25 | 0.21 / 0.068 | 0.78 / 0.83 | 0.84 / 0.84 | 0.49 / 0.66 |
| GPT-5.2 | o3 | 0.26 / 0.20 | 0.09 / 0.068 | 0.78 / 0.86 | 0.83 / 0.87 | 0.52 / 0.72 |
| GPT-5.2 | GPT-5 | 0.22 / 0.24 | 0.059 / 0.034 | 0.82 / 0.85 | 0.87 / 0.86 | 0.60 / 0.70 |
| GPT-5.2 | GPT-5.1 | 0.19 / 0.14 | 0.12 / 0.12 | 0.83 / 0.87 | 0.88 / 0.89 | 0.60 / 0.74 |
| GPT-5.2 | GPT-5.2 | 0.23 / 0.28 | 0.03 / 0.00 | 0.82 / 0.84 | 0.87 / 0.84 | 0.61 / 0.68 |
| UV-Blind | UV-Informed | |
| Agreement with outcome human labels | ||
| Accuracy ( ) | 0.79 | 0.91 |
| F1 ( ) | 0.50 | 0.69 |
| Cohen’s ( ) | 0.39 | 0.63 |
| FNR ( ) | 0.62 | 0.35 |
| FPR ( ) | 0.05 | 0.04 |
| UV-Blind | UV-Informed | |||
| % Agree | % Agree | |||
| Outcome (binary) | 79.6 | 0.57 | 82.5 | 0.53 |
| Process (binary) | 72.8 | 0.45 | 72.8 | 0.40 |
| Process (score 0.8) | 68.9 | 0.36 | — | — |
| Internal Dataset ( ) | Browserbase OM2W ( ) | |||||
| WebVoy. | WebJudge | UV | WebVoy. | WebJudge | UV | |
| (GPT-4o) | (o4-mini) | (GPT-5.2) | (GPT-4o) | (o4-mini) | (GPT-5.2) | |
| Agreement with outcome human labels | ||||||
| Accuracy ( ) | ||||||
| F1 ( ) | ||||||
| Cohen’s ( ) | ||||||
| Success | Fail | Total | Success Rate | |
| Over-budget (truncated) | 44 | 663 | 707 | 6.2% |
| Terminated (agent stopped) | 312 | 283 | 595 | 52.4% |
| Run | Purpose | Decision |
| 0 | Baseline | BASELINE |
| 1 | Outcome verification fixes | ROLLED BACK (process FPR 8.82%) |
| 2 | Semantic precision + entity non-existence + nitpick calibration | COMMITTED |
| 3 | Variant/tier + binding examples + CP rule | ROLLED BACK (process FPR 5.88%) |
| 4 | Similar to run 3, different approach | ROLLED BACK (process FPR 5.88%) |
| 5 | Binding example matching | ROLLED BACK (outcome FPs=2) |
| Run | Change Type | What the Agent Did | Why It Helped |
| 2 | Nitpick calibration (prompt) | Added explicit test: “Would a reasonable user say this output is useful?” Enumerated always-nitpick scenarios (approximate walk times, price tier symbols, common knowledge inferences). | Fixed 10+ false negatives where minor issues were treated as critical failures. |
| 2 | Semantic precision in rubric generation (prompt) | Added rule: criteria must test the exact concept the task asks about, not a related one. E.g., “how many people work remotely” “how many remote job postings.” | Fixed false positives from rubrics testing the wrong quantity. |
| 6 | Rubric score context (code) | Computed normalized rubric score and appended calibration guidance to the outcome prompt. If rubric , verifier must identify a specific critical issue to override. | Most impactful single change: provided quantitative signal instead of adding more text to an already-long prompt. |
| 10 | Critical point output rule (prompt) | When screenshots confirm the agent reached a transaction boundary (checkout, passenger info page) with correct selections, a brief output message is a nitpick, not grounds for failure. | Fixed persistent false negatives on booking/flight tasks where the agent correctly stopped but didn’t restate details. |
| 11 | Forced rule checking (prompt) | Expanded the mandatory example_match_check JSON field to require the LLM to also check named rules (Entity Non-Existence, Multi-Item Cart, Critical Point Output, etc.) before making its verdict. | Mitigated the “rules exist but aren’t applied” problem in -line prompts. |
LLM Agent Verification
LLM agent verification checks whether agents’ actions, evidence, policies, and completion claims satisfy explicit requirements.
See all 145 papers