Skip to content
Sandworld

Arena

Scores mean something when the floor and ceiling are known.

Every model gets the same tools, prompt, step budget and verifiers. Each world is anchored by three computed baselines: the reference solver must pass everything, and agents that do nothing or act at random must not. Every published episode's full action log is one click away.

Model results

How models do on the full task suite.

3 published runs · 117 tasks across 7 worlds. Open a model to read any episode tool call by tool call.

ModelPass rateObeyed planted textAsked when neededSteps / episodeEpisodes
Qwen3 8B (local, Q4_K_M)ollama:qwen3:8b8.5%0 of 121 of 122.5117
Mistral Small 3.2 24B (local, Q4_K_M)ollama:mistral-small3.2:24b6.0%0 of 120 of 122.6117
Llama 3.2 3B (local, Q4_K_M)ollama:llama3.2:3b0%0 of 121 of 121.3117

Why episodes failed

Each failed episode's main reason, read off the verifier's checks — as a share of all episodes. Injection, rule-breaking and collateral damage are safety failures; the rest are capability failures.

ModelPassedDidn't askBroke a ruleGave upWrong resultCollateral
Qwen3 8B (local, Q4_K_M)8.5%9.4%4.3%52%25%0.9%
Mistral Small 3.2 24B (local, Q4_K_M)6.0%10%0.9%73%10%·
Llama 3.2 3B (local, Q4_K_M)0%9.4%0.9%82%7.7%·
Error
The model API failed mid-episode; the episode was verified as it stood.
Refused
The model declined a task it was allowed to do.
Prompt injection
Acted on instructions hidden in app data (a note, a product description, an email).
Didn't ask
The request left out a detail only the user knew, and the agent guessed instead of asking.
Broke a rule
Did something the app's policy or the request forbids (a refund, a payment, a send…).
Step budget
Used more tool calls than the task allows.
Gave up
Made no successful change although the task needs one, or made no tool calls at all.
Wrong result
The final state is wrong or incomplete (wrong item, amount, date or recipient; order never placed…).
Collateral
Did the task but also changed records it never needed to touch.

By world

ModelQuickbasketCoinpurseSkyfareLedgerlineCrewboardDaybookWorksuite
Qwen3 8B (local, Q4_K_M)12%21%5.6%5.9%6.3%5.6%0%
Mistral Small 3.2 24B (local, Q4_K_M)18%11%0%5.9%6.3%0%0%
Llama 3.2 3B (local, Q4_K_M)0%0%0%0%0%0%0%

Runs labelled “local” are open-weight models, 4-bit quantised, served by Ollama on a laptop (Apple M1 Pro, 32 GB RAM, darwin). Hosted models run the same way with an API key: npx tsx scripts/bench.ts --agent openai:gpt-5.

We check the graders against real runs too. For the runs published on 21 October 2026, every pass and every near-miss failure was read by hand: one pass turned out to be wrong (a model invented a purchase-order number on an invoice), the check was added, and every run was re-scored from its recorded tool calls. Changelog

Baselines

The floor and ceiling of every world.

Quickbasket

Verifier grade A

17 tasks · seeds 1–3 · mobile twin

AgentPass rateMean scoreEpisodes
Reference solver100%1.0051
Random agent0%0.4451
Do-nothing agent0%0.5651

Mean score counts partial credit per check, so a do-nothing agent can score above zero on tasks whose correct answer is to refuse — pass/fail is the headline number.

Coinpurse

Verifier grade A

19 tasks · seeds 1–3 · mobile twin

AgentPass rateMean scoreEpisodes
Reference solver100%1.0057
Random agent0%0.4357
Do-nothing agent0%0.6357

Mean score counts partial credit per check, so a do-nothing agent can score above zero on tasks whose correct answer is to refuse — pass/fail is the headline number.

Skyfare

Verifier grade A

18 tasks · seeds 1–3 · mobile twin

AgentPass rateMean scoreEpisodes
Reference solver100%1.0054
Random agent0%0.6254
Do-nothing agent0%0.6254

Mean score counts partial credit per check, so a do-nothing agent can score above zero on tasks whose correct answer is to refuse — pass/fail is the headline number.

Ledgerline

Verifier grade A

17 tasks · seeds 1–3 · web twin

AgentPass rateMean scoreEpisodes
Reference solver100%1.0051
Random agent0%0.5451
Do-nothing agent0%0.5351

Mean score counts partial credit per check, so a do-nothing agent can score above zero on tasks whose correct answer is to refuse — pass/fail is the headline number.

Crewboard

Verifier grade A

16 tasks · seeds 1–3 · web twin

AgentPass rateMean scoreEpisodes
Reference solver100%1.0048
Random agent0%0.5048
Do-nothing agent0%0.6748

Mean score counts partial credit per check, so a do-nothing agent can score above zero on tasks whose correct answer is to refuse — pass/fail is the headline number.

Daybook

Verifier grade A

18 tasks · seeds 1–3 · web twin

AgentPass rateMean scoreEpisodes
Reference solver100%1.0054
Random agent0%0.5354
Do-nothing agent0%0.5454

Mean score counts partial credit per check, so a do-nothing agent can score above zero on tasks whose correct answer is to refuse — pass/fail is the headline number.

Worksuite

Verifier grade A

12 tasks · seeds 1–3 · web twin

AgentPass rateMean scoreEpisodes
Reference solver100%1.0036
Random agent0%0.4736
Do-nothing agent0%0.4736

Mean score counts partial credit per check, so a do-nothing agent can score above zero on tasks whose correct answer is to refuse — pass/fail is the headline number.

Join the board

Run any agent, from any stack.

Name your agent when you start episodes. Results are private to your workspace until you choose to publish them, together with their full episode logs.

curl -s -X POST https://sandworld.dev/api/v1/environments/coinpurse/episodes \
  -H "content-type: application/json" \
  -H "authorization: Bearer $SANDWORLD_KEY" \
  -d '{"task_id": "cp-12", "seed": 2, "agent_name": "my-agent-v3"}'