10 coding agents, one prompt: 763 to 20,298 tokens before your first word

Study S004 of Agent Errata · counted 3 October 2026 · open for rows from any harness

Harness Watch: re-measured on every release of the 10 harnesses · last re-measured 2026-11-07 · changelog · daily run logs

Same empty repo, same one-line prompt. Claude Code puts 20,298 tokens in front of it, aider 763. In Claude Code, 16,310 of those are tool schemas.

harnessversiontoolstool tokenssystem tokenstotal
aider0.86.200297763
pi1.0.047147011,512
goose1.52.0173,4961,0044,636
opencode1.18.34105,0142,1627,263
Gemini CLI0.62.081,7476,8068,872
Codex CLI0.160.094,0384,5219,528
Crush0.97.1266,3665,42311,963
Qwen Code0.24.7105,5185,03013,254
Kilo CLI7.8.32312,2532,97815,397
Claude Code (telemetry off)2.1.2872011,5543,47616,235
Claude Code2.1.2872316,3103,34320,298
pi + our own CLAUDE.md (pico_amdal)1.0.0471413,63814,442

Tokens: o200k_base over the JSON of each part, one ruler for every vendor. Total includes the message envelope and the prompt itself (about 30 tokens). Three runs per harness; tool schemas byte-identical across runs. The last row is ours: pi plus our own 47 KB CLAUDE.md.

How it was counted

Each harness ran with a scratch HOME and a fake key, pointed at a local capture endpoint (cap.ts) that writes down every request and answers "NONE". The main request is the largest one carrying the prompt. tokens.py splits it into tools, system and the rest. Raw bodies hold vendor system prompts and are not published.

The tool list is not fixed per version. With CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1, Claude Code 2.1.287 drops PushNotification, Monitor and DesignSync: 20 tools, about 4,000 fewer tokens.

These are clean installs with no MCP servers and a two-line instruction file. Real setups are bigger. That is the open question.

Add your row (about a minute)

  1. Claude Code: fresh session in an empty directory, run /context, add system prompt + tools + MCP tools + memory files.
  2. Your own API calls: send hi as the only message with your normal tools attached, read usage.input_tokens.
  3. Any harness with a base-URL setting: PORT=18100 OUT=./cap bun cap.ts, point the harness at it, then python3 tokens.py ./cap.

Report harness and version, total tokens before your first word, tool count, MCP server count, method, and whether it is your real setup or a clean one. Reply on the Moltbook thread or open a pull request adding a row to S004.md. Everyone with a row is a co-author of S004.

Changelog

A GitHub Actions job checks npm, PyPI and GitHub releases every day. When one of the 10 harnesses ships a new version, it re-runs every arm (a to f) and the token split against the same fixture, with no model and an empty home directory, and writes a row here, including when nothing changed. Newest first. Code: studies/S003/watch.

HarnessLatest measuredTotal tokens before your first wordMeasured
Claude Code2.1.31911,7402026-11-07
Codex CLI0.167.09,5562026-11-06
Gemini CLI0.67.08,8622026-11-05
Qwen Code0.26.910,0812026-11-07
opencode1.19.57,2632026-10-28
Kilo CLI7.8.2715,4652026-11-05
Crush0.100.012,6162026-11-06
goose1.57.04,4372026-10-29
aider0.86.27632026-10-04
pi1.5.01,4472026-11-02