AgentGuard Evals · Round one · September 22, 2026

AgentGuard Evals

Benchmarks score the answer. AgentGuard Evals scores the path: the shell commands and file writes an AI coding agent makes on a real task, run through the same local rules the AgentGuard plugin runs before a tool call.

Round one uses the agent transcripts Vercel publishes for its Next.js evals, for the two models that launched on September 22, 2026. Vercel ran the agents and graded the tasks. Vercel did not run, review or endorse this analysis.

30 of 31

tasks passed by each model, and both missed the same one.

Vercel's pass@4 result. Claude Fable 5.1, also at 97% on Vercel's table, missed that task too.

745

shell commands and file writes scanned across both models.

Reads and web searches are not scanned.

0

stops across 75 attempts. No action matched an AgentGuard rule.

Every rule match would count as a stop, the default enforce action.

3.9%

95% upper bound on the share of attempts like these that would hit a stop.

Counted per attempt, because actions inside one attempt are not independent trials. Per action the bound is 0.40%. More runs tighten both.

Current round

ModelAgentTasks passedAttemptsShell commandsFile writesStopsStops on passing attemptsSubagent spawnsWeb searches
Claude Opus 5.5 (high)Claude Code30 of 31352531030000
GPT 6 Sol (high)Codex30 of 31403890000275

Models are listed in the order Vercel lists them. There is no overall score, and AgentGuard is never a row. GPT 6 Sol writes files through shell patches, so its edits appear under shell commands.

What the transcripts show

The 97% tie is one task wide

Both models passed 30 of 31 tasks and failed the same one, agent-044-uses-nextjs. The failures cluster; they do not scatter.

Scary-looking commands were ordinary work

Opus 5.5 ran 22 recursive deletes and GPT 6 Sol ran 4. They removed build output such as .next, test data from the agent's own smoke tests, and the old pages directory the router-migration tasks replace. None targeted root, home or the whole working directory, so none matched a rule.

Same score, different habits

GPT 6 Sol searched the web 275 times across its 40 attempts. Opus 5.5 made no web searches and wrote files directly 103 times. Neither launched a subagent.

We grade ourselves too

"Stops on passing attempts" counts times our rules would have stopped an attempt that Vercel's tests passed. We review every one: a stop on risky work that still passed is a correct stop, and a stop on ordinary work counts against AgentGuard. We publish the column every round, whatever it shows. A guard that blocks good work is worse than none.

Method

ItemRound one
TranscriptsVercel's published result sets claude-opus-5.5-high/2026-09-22T20-34-17.138Z and gpt-6-sol-high/2026-09-22T19-54-01.135Z in vercel/next-evals-oss (MIT license), commit bb7c02e.
Pass or failVercel's own grading: pass@4 per task from its results file, and each attempt's result.json status.
ScannerThe AgentGuard Guard Pack, 14 rules, from plugin 0.3.4 (runtime/guard-pack.cjs, SHA-256 recorded in the data file). A static scan of recorded tool calls. Nothing was executed.
StatisticsExact one-sided 95% bounds for zero events in n trials, 1 minus 0.05 to the power 1/n: 3.9% per attempt (n = 75) and 0.40% per action (n = 745). Attempts are the independent unit.
Not replayedSpawn and spend limits. Neither model launched a subagent in these runs.
Published dataCounts, task names and rule IDs only. No command text. Read the round one data file.

This round covers two result sets on one benchmark. It says how often these runs would have been stopped, not how an agent behaves on every task or machine. Later rounds add more public transcript sets and keep each round's date and scanner version.

See the plugin that runs these rules · What leaves your machine