Weaveweave / evals
Get started ↗
agent evals

Do Weave’s agents do what they say?

Weave ships seven built-in agents, each with one job: route work, run plans, implement, plan, review, audit security, research. Agent evals check that each agent actually does its job, on every model Weave supports, and show whether a change made things better or worse. The cases, the scoring and the results are all public.

01

What agent evals are

An agent eval is a small, fixed task given to one agent, with a written rubric that says what a good answer or action looks like. We run the same tasks on every model in our matrix, score every attempt, and publish the results.

Confidence

Each agent’s prompt makes promises. Loom hands work to the right specialist. Weft points at the file behind every blocker. Shuttle does not claim tests it never ran. The evals check that those promises hold on every model, not only on a favourite one.

A yardstick for changes

Before and after a prompt or agent change, the same cases run with repeats, andweave eval compare says whether the difference is bigger than the noise. Nothing tunes prompts automatically: people make the changes, and the evals measure them.

Not a model leaderboard

The cases test Weave’s agents, not models in general. A lower score says how well a model follows Weave’s prompts today. It does not say how capable the model is.

02

What we test

Eight suites cover the seven agents. Each suite asks one question about how one agent behaves, through a handful of cases written for it.

Loom

Loom Routing

loom-routing

Loom, the main orchestrator, hands each request to the right specialist or category shuttle.

Tapestry

Tapestry Execution

tapestry-execution

Tapestry works through a plan: executes a step, delegates, and accepts or rejects a specialist’s report on the evidence.

Tapestry

Tapestry Category Routing

tapestry-category-routing

Tapestry sends work to the right category shuttle (for example shuttle-frontend) from file paths, hints and config.

Shuttle

Shuttle Execution

shuttle-execution

Shuttle, the implementer, reports honestly: files touched, commands run, and what it could not verify.

Pattern

Pattern Planning

pattern-planning

Pattern writes plans with a clear scope, file-backed tasks, an order, per-task acceptance, and no invented commands.

Weft

Weft Review

weft-review

Weft reviews code: approves clean changes and rejects real bugs with blockers that cite a file.

Warp

Warp Security

warp-security

Warp audits changes for security issues, blocks real ones with evidence, and does not cry wolf.

Spindle

Spindle Research

spindle-tools

Spindle, the researcher, cites sources, separates facts from interpretation, and states its confidence.

Realistic runtime scenarios

Most cases check what an agent says in one answer. A second track checks what it does. A runtime-scenario case starts a real OpenCode session with Weave installed, inside a Podman sandbox, on a small project. It is scored from the session’s events: which sub-agents it started, which commands ran after the last edit, whether sub-agents ran in parallel. A hidden verifier then checks the work itself. The scenarios are modelled on problems seen in real sessions.

  • Loom

    Delegation accuracy

    Asked to fix a backend bug, Loom hands it to the backend category shuttle instead of doing it itself or picking the wrong specialist.

  • Tapestry

    Parallel execution

    Given a plan with independent tasks, Tapestry dispatches them to sub-agents at the same time rather than one after another.

  • Loom

    Environment awareness

    Told “CI is red”, Loom runs the failing check in the project itself to find out why, instead of guessing.

  • Tapestry and Shuttle

    Verification

    After editing code, the agent runs the tests again, and a hidden verifier confirms the fix really works.

03

How we test

From a written case to a number on this page, in five steps.

  1. Write a case and a rubric

    A case is a synthetic but realistic task: a request to route, a diff to review, a plan to write. Its rubric says which behaviours are required and how much each counts. Some cases come in pairs, one where the agent should act and one where it should not, so a prompt cannot pass by always leaning one way.

  2. Use the agent’s real prompt

    Each case is sent with the agent’s actual composed Weave prompt, the one a harness adapter would install. It is not a simplified test prompt.

  3. Run it on every model

    Each case runs on every model in the model matrix through OpenRouter. A run can repeat every case (three times, say) to measure how often a model gets it right, not just whether it did once.

  4. Score every attempt

    Anything a rule can check is checked by rule: which agent was chosen, whether a verdict and a file citation are present, which commands ran. Where judgement is needed, an independent judge scores the answer against the rubric.

  5. Publish it

    Every run is tied to the weave commit it measured. A sanitised public report is pushed to the open weave-agent-evals repository, and this page reads it from there. The report holds no prompts, transcripts or model output.

What counts as a pass
Each case is scored from 0 to 1 on up to four dimensions: routing, delegation, execution and rationale. A case passes when one of its routing, delegation or execution scores reaches 0.95. A case its rubric does not mark as required can also pass with a weighted total of 0.5 or more. The rationale score only ever adds to that weighted total.
The judge
TypeSafe Jev (typesafe/jev-1.13, pinned to a dated version). It is a judging model, not a chat model, so it is never one of the models being evaluated and never grades its own answers. It answers one yes/no question per rubric criterion. Its id and version are recorded with every run, and runs scored by different judges are never compared. Before it was adopted it agreed with 28 of 30 hand-labelled answers and caught 10 of 12 planted failures (acceptance check).
Repeats and noise
Models do not answer the same way every time. With repeats, each result is a pass rate such as 2/3, and eval compare uses Fisher’s exact test, so a change only counts when it is bigger than the noise. In the 24 Sep 2026 baseline, 17% of case-and-model pairs gave different verdicts across three repeats.
Errors are not failures
Sometimes an attempt produces no score: the answer came back empty or cut off, or the request failed. That attempt is marked errored and shown on its own. It is left out of pass rates and never counted as a failure.
Models
The default matrix lists the models Weave supports, from Anthropic, OpenAI, Qwen and DeepSeek. The results below show exactly the models in the run being shown.
Open data
The cases and rubrics are in weave/evals/cases. Every published run is in weave-agent-evals. The full method is in the evals overview.
04

Results

The newest published run this page can read. Pass rates are passed attempts over scored attempts. Errored attempts are counted separately.

Run1 Oct 2026, 21:18 UTC
Commit4ee1fea
JudgeTypeSafe Jev jev-1.13-20260917
Repeatseach case once
DataLatest published at site build
Pass rate
89%
1219 of 1370 scored attempts
Coverage
14 models
98 cases in 8 suites
Errored
2
2 attempts unscored — not counted as failures
Green suites
0 / 8
every required case passed on every model

Model × suite

Each cell is one model’s pass rate on one suite: passed attempts over scored attempts, with the counts underneath. Models are listed by provider, not by score. Most suites have only a few cases, so a gap of a case or two between models is within the noise — read this as a snapshot, not a ranking.

Pass rate of each model on each suite, as passed over scored attempts
ModelLoom RoutingTapestry ExecutionShuttle ExecutionSpindle ResearchPattern PlanningWeft ReviewWarp SecurityTapestry Category RoutingAll suites
Claude Haiku 4.5
Anthropic
80%12/1592%12/1342%5/1283%10/1275%9/1258%7/1233%4/1290%9/1069%68/98
Claude Opus 4.5
Anthropic
87%13/15100%13/1350%6/1292%11/1283%10/1283%10/1267%8/12100%10/1083%81/98
Claude Opus 5
Anthropic
87%13/15100%13/1392%11/1292%11/1283%10/12100%12/12100%12/12100%10/1094%92/98
Claude Opus 5.5
Anthropic
93%14/15100%13/13100%12/1292%11/1292%11/12100%12/12100%12/1290%9/1096%94/98
Claude Sonnet 4.5
Anthropic
80%12/1592%12/1333%4/1283%10/1283%10/1250%6/1233%4/1290%9/1068%67/98
Claude Sonnet 5
Anthropic
87%13/15100%13/1392%11/1283%10/1275%9/12100%12/12100%12/1290%9/1091%89/98
Claude Sonnet 5.5
Anthropic
80%12/1575%9/12 · 1 err100%12/12100%12/1292%11/12100%12/12100%12/1290%9/1092%89/97 · 1 err
DeepSeek V4 Flash
DeepSeek
100%15/1592%12/1383%10/1283%10/1292%11/1275%9/12100%11/11 · 1 err100%10/1091%88/97 · 1 err
GPT 6 Astra
OpenAI
100%15/1592%12/1383%10/12100%12/1292%11/1292%11/1283%10/1290%9/1092%90/98
GPT 6 Luna
OpenAI
100%15/1592%12/1383%10/12100%12/1283%10/12100%12/1292%11/12100%10/1094%92/98
Gpt 6 Sol
OpenAI
100%15/15100%13/1383%10/1292%11/1275%9/1292%11/1292%11/12100%10/1092%90/98
GPT-5.5
OpenAI
100%15/15100%13/13100%12/1283%10/1283%10/1292%11/12100%12/12100%10/1095%93/98
GPT-5.6 Sol
OpenAI
100%15/15100%13/1392%11/1283%10/12100%12/12100%12/12100%12/12100%10/1097%95/98
Qwen3.8 Max
Qwen
87%13/1592%12/1392%11/1292%11/1283%10/12100%12/12100%12/12100%10/1093%91/98

≥ 80%50–79%< 50%Counts are passed / scored. “err” marks attempts that produced no score.

Suite by suite

What each suite checks, what a pass means, and how this run went. A suite is green when every case its rubric marks as required passed on every model and no attempt errored — a strict bar that a single miss breaks.

Loom

Loom Routing

loom-routing
Checks
Loom, the main orchestrator, hands each request to the right specialist or category shuttle.
Pass means
Loom named the expected agent (or an accepted alternative) for the request.
Scored by
Routing is checked deterministically; the judge only scores the stated rationale.
91%Pass rate
192/210Passed / scored
0Errored
NoGreen

15 cases · 14 models

Tapestry

Tapestry Execution

tapestry-execution
Checks
Tapestry works through a plan: executes a step, delegates, and accepts or rejects a specialist’s report on the evidence.
Pass means
Tapestry completed or delegated the step, and accepted an evidenced report while rejecting a contradicted one.
Scored by
Mostly deterministic checks; one case and one delegation chain are judged.
95%Pass rate
172/181Passed / scored
1Errored
NoGreen

13 cases · 14 models

Shuttle

Shuttle Execution

shuttle-execution
Checks
Shuttle, the implementer, reports honestly: files touched, commands run, and what it could not verify.
Pass means
The completion report covers the task, lists evidence, and does not claim checks it did not run.
Scored by
Judged, plus one deterministic honesty case.
80%Pass rate
135/168Passed / scored
0Errored
NoGreen

12 cases · 14 models

Spindle

Spindle Research

spindle-tools
Checks
Spindle, the researcher, cites sources, separates facts from interpretation, and states its confidence.
Pass means
Every claim is tied to a source and the answer says how sure it is.
Scored by
Judged.
90%Pass rate
151/168Passed / scored
0Errored
NoGreen

12 cases · 14 models

Pattern

Pattern Planning

pattern-planning
Checks
Pattern writes plans with a clear scope, file-backed tasks, an order, per-task acceptance, and no invented commands.
Pass means
The plan has every required section and uses only commands the project actually declares.
Scored by
Judged, plus two deterministic cases.
85%Pass rate
143/168Passed / scored
0Errored
NoGreen

12 cases · 14 models

Weft

Weft Review

weft-review
Checks
Weft reviews code: approves clean changes and rejects real bugs with blockers that cite a file.
Pass means
The verdict is right for the change, and every blocker points at the code responsible.
Scored by
Judged, plus two deterministic cases (one should approve, one should reject).
89%Pass rate
149/168Passed / scored
0Errored
NoGreen

12 cases · 14 models

Warp

Warp Security

warp-security
Checks
Warp audits changes for security issues, blocks real ones with evidence, and does not cry wolf.
Pass means
The security verdict is right, and each finding is backed by evidence from the change.
Scored by
Judged, plus two deterministic cases (one should approve, one should block).
86%Pass rate
143/167Passed / scored
1Errored
NoGreen

12 cases · 14 models

Tapestry

Tapestry Category Routing

tapestry-category-routing
Checks
Tapestry sends work to the right category shuttle (for example shuttle-frontend) from file paths, hints and config.
Pass means
The chosen shuttle matches the category the files belong to, including tricky cases: Windows paths, overlaps, disabled categories.
Scored by
Routing is graded deterministically; required cases must also clear the judge’s rationale bar.
96%Pass rate
134/140Passed / scored
0Errored
NoGreen

10 cases · 14 models

Case by case

Every case in the run, on every model. Case ids match the files in the weave repository’s evals/cases/ directory, where you can read the task and its rubric.

Suite
Loom Routing: outcome of each case on each model
CaseClaude Haiku 4.5Claude Opus 4.5Claude Opus 5Claude Opus 5.5Claude Sonnet 4.5Claude Sonnet 5Claude Sonnet 5.5DeepSeek V4 FlashGPT 6 AstraGPT 6 LunaGpt 6 SolGPT-5.5GPT-5.6 SolQwen3.8 Max
loom-route-ambiguous-direct-shuttle
required
fail pass pass pass fail pass pass pass pass pass pass pass pass pass
loom-route-backend-api
required
pass pass pass pass pass pass pass pass pass pass pass pass pass pass
loom-route-frontend-ui
required
fail pass pass pass pass pass pass pass pass pass pass pass pass pass
loom-route-pattern-boundary-small-fix
required
pass pass pass pass fail pass pass pass pass pass pass pass pass pass
loom-route-pattern-plan-migration
required
pass fail pass pass pass pass pass pass pass pass pass pass pass pass
loom-route-shuttle-boundary-plan-first
required
pass pass pass pass pass pass pass pass pass pass pass pass pass pass
loom-route-shuttle-implement-utility
required
fail pass pass pass pass pass pass pass pass pass pass pass pass pass
loom-route-spindle-boundary-internal-exploration
required
pass pass fail pass pass pass fail pass pass pass pass pass pass fail
loom-route-spindle-research-oauth-pkce
required
pass pass pass pass pass pass fail pass pass pass pass pass pass pass
loom-route-thread-boundary-prehop-then-implement
required
pass fail pass pass fail fail pass pass pass pass pass pass pass pass
loom-route-thread-explore-auth-flow
required
pass pass fail fail pass pass fail pass pass pass pass pass pass pass
loom-route-warp-boundary-downstream-audit
required
pass pass pass pass pass pass pass pass pass pass pass pass pass fail
loom-route-warp-security-audit-auth-flow
required
pass pass pass pass pass pass pass pass pass pass pass pass pass pass
loom-route-weft-boundary-downstream-review
required
pass pass pass pass pass pass pass pass pass pass pass pass pass pass
loom-route-weft-review-checkout-pr
required
pass pass pass pass pass fail pass pass pass pass pass pass pass pass

Each cell is a single attempt. Read the cases and rubrics for this suite in evals/cases/loom-routing ↗.

Runtime scenarios

The latest run of the runtime scenarios: real OpenCode sessions in a sandbox, scored from what the agents did. CI runs them in their own job, on fewer models than the text cases, so they are published as their own run and shown here rather than in the figures above.

Run 1fff43e-2026-09-25-002, 25 Sept 2026, 02:08 UTC, commit 1fff43e · Full report ↗

Models
4
Claude Opus 5, Claude Sonnet 4.5, DeepSeek V4 Flash, GPT-5.5
Cases
5
20 attempts in 3 suites
Passed · failed
18 · 1
95% of 19 scored attempts passed
Errored
1
1 attempt unscored — not counted as failures

An attempt is errored when the session produced nothing to score — for example when a provider’s content filter blocked the request, or the sandboxed harness crashed. Errored attempts are counted separately and never as failures.

Suite
Loom Routing: outcome of each case on each model
CaseClaude Opus 5Claude Sonnet 4.5DeepSeek V4 FlashGPT-5.5
loom-delegates-backend-fix-to-category-trajectory
required · runtime scenario
pass fail pass pass
loom-runs-the-failing-check-itself-trajectory
required · runtime scenario
pass pass pass pass
Session evidence for runtime scenarios (8)
  • loom-delegates-backend-fix-to-category-trajectory on Claude Sonnet 4.5: fail. Started no sub-agents; 5 tool calls; did not delegate as the case expected; session completed without error.
  • loom-runs-the-failing-check-itself-trajectory on Claude Sonnet 4.5: pass. Started no sub-agents; 15 tool calls; did not delegate as the case expected; session completed without error.
  • loom-delegates-backend-fix-to-category-trajectory on GPT-5.5: pass. Started shuttle-backend; 10 tool calls; delegated as expected; session completed without error.
  • loom-runs-the-failing-check-itself-trajectory on GPT-5.5: pass. Started shuttle; 18 tool calls; delegated as expected; session completed without error.
  • loom-delegates-backend-fix-to-category-trajectory on Claude Opus 5: pass. Started shuttle-backend; 13 tool calls; delegated as expected; session completed without error.
  • loom-runs-the-failing-check-itself-trajectory on Claude Opus 5: pass. Started no sub-agents; 11 tool calls; did not delegate as the case expected; session completed without error.
  • loom-delegates-backend-fix-to-category-trajectory on DeepSeek V4 Flash: pass. Started shuttle-backend; 18 tool calls; delegated as expected; session completed without error.
  • loom-runs-the-failing-check-itself-trajectory on DeepSeek V4 Flash: pass. Started no sub-agents; 14 tool calls; did not delegate as the case expected; session completed without error.

Each cell is a single attempt. Read the cases and rubrics for this suite in evals/cases/loom-routing ↗.

Suite pass rates across the published runs in the results index.

The results index holds one run in the current format so far, so there is no trend yet. Each newly published run adds a column here.

05

What the evals cannot tell you

Read the results with these limits in mind.

  • The cases are synthetic. They are small, and each is written to isolate one behaviour. Passing them is evidence that an agent behaves well. It does not prove the agent behaves the same way in a large, messy project.
  • Samples are small. Most suites have two to four cases per model, and a single attempt is a single sample. One run cannot tell a 60% model from an 80% one. Treat one-run gaps between models as noise until repeats say otherwise.
  • The judge has blind spots. In its acceptance check, Jev passed two planted failures: a Weft rejection whose blockers name no file, and a Pattern plan that invents a command. Rule-based checks partly cover both, but a judged verdict can still be wrong.
  • Scoring can be wrong too. The 24 Sep 2026 baseline found three cases where the scoring, not the models, was at fault. They were fixed, and the corrections are published. Runs published before a fix keep the old scores.
  • Mostly text answers. Only the runtime scenarios watch real tool use. Each runs only on the models listed for it, and so far each has run once per model.
06

Reproduce it

Everything above can be re-run from a checkout of the weave repository.