Haiku 5.5 shipped on October 7 as "the subagent model", a tenth of the old price per token. I opened a month of my own Claude Code logs the same evening. 2,631 subagent runs. 42 on Haiku.
Not because I chose Opus for them. Because every subagent, the built-in Explore agent included, inherits the main session's model. Nothing goes to Haiku unless a file says so.
So I flipped them and asked the only question that matters on a plan: what does the usage meter actually give back when the workers run on Haiku 5.5?
What I actually tested
One real repo, tinydb, 226 tests in its suite. Seven tasks a subagent gets every day: explore the code, fix a failing test, clean lint errors, write a commit message, add a small feature, review a diff, summarize the architecture.
Four workers: Haiku 5.5 at medium effort, Haiku 5.5 at low effort, Sonnet 5.5, Opus 5.5. 182 runs in all. Every run was accepted or rejected by a hidden test or a fixed rule, never by eye.
Every headless run with streaming output emits one rate limit event carrying the five-hour and the weekly fraction, two decimals each, straight from Anthropic's response headers. I ran the four workers as four blocks, nothing else touching the account, and read the meter before and after each block.
Haiku passed everything and cost a fortieth of Opus
70 of 70 at medium effort. 70 of 70 at low. Sonnet and Opus passed their 21 each. On these seven tasks the quality gap did not show up.
The list price did. The small feature cost half a cent on Haiku low and 17 cents on Opus. Exploring the codebase: a third of a cent on Haiku, 14.5 cents on Opus. About forty times.
And Haiku was never slower. The feature took 17 seconds on Haiku low and 30 on Opus.
Anthropic's own caveat still stands: Sonnet and Opus remain better for complex agentic coding, and Terminal Bench puts Haiku at 39.2 against Sonnet's 70.6. None of my seven tasks is that kind of work. That is the point of routing: send the scoped tasks, keep the hard ones.
The setting everyone reaches for does nothing on its own
Since release 2.1.198 the built-in Explore agent inherits the main model, capped at Opus. Before that it ran on Haiku. The docs give the resolution order: the model named at launch, the model in the agent file, the subagent model variable, then the main model. And they say plainly that the variable alone does not change what Explore and Plan run on.
I checked with headless runs. Main session on Fable, one question: use the Explore agent to find where the query cache is cleared. The tool result names the model that ran. Opus 5.5. Same run with CLAUDE_CODE_SUBAGENT_MODEL=claude-haiku-5-5 and nothing else: Opus 5.5 again.
Two files fix it. The first is an agent file in your project:
.claude/agents/Explore.md
---
name: Explore
description: "Read-only codebase explorer. Use it to find where something is defined or called and to summarize what it found, with file paths and function names."
model: claude-haiku-5-5
effort: low
tools: Read, Glob, Grep, Bash
---
Claude Code treats a project agent named Explore as the Explore agent from then on. Same headless run: the tool result now reads Haiku 5.5.
The second is your settings:
{
"env": {
"CLAUDE_CODE_SUBAGENT_MODEL": "claude-haiku-5-5",
"CLAUDE_CODE_SUBAGENT_MODEL_FORCE": "1"
}
}
Force is the part people miss. Since 2.1.257 it applies the subagent model to every subagent, ignoring the overrides at launch or in an agent file. Which file for whom: the env block when every subagent should be cheap, knowing it also drags your deliberately Opus agents down. The agent file when only the explorer should.
Pin the full model id. The haiku alias means Haiku 5.5 on the Anthropic API only. On Bedrock, Vertex and Foundry it still means Haiku 4.5. And check: /tasks shows the model each subagent ran on. Trust that line, never the file.
The meter moved less than a point per block
Before and after each block:
Haiku 5.5 low, 70 runs: 5h window 21% -> 21%
Haiku 5.5 medium, 70 runs: 5h window 21% -> 21%
Sonnet 5.5, 21 runs: 5h window 21% -> 22%
Opus 5.5, 21 runs: 5h window 22% -> 23%
Weekly window, all 182 runs: 67%
The whole matrix cost $4.09 at list price. On the meter: two points of a five-hour window, zero of the week. The Haiku half cost 54 cents and moved nothing. One point of this account's window is worth more than 140 of these tasks on Haiku.
Anthropic publishes one sentence on model weight: Opus costs several times more per turn than Sonnet, and Sonnet more than Haiku. Several. No number. The windows are one pool for every model, so switching mid-session restores nothing.
The /usage breakdown is computed on your machine
The usage panel shows percentages per skill, subagent, plugin and MCP server. It looks like server data. The docs say it is approximate and computed from local session history. So the formula lives in the binary. Run strings on it and two functions fall out: a model tier (Fable 10, Opus 5, Haiku 1, anything else 3) and a record weight (cached tokens 1, fresh input 10, cache writes 12.5, output 50).
Run that on my blocks: 70 Haiku medium runs score 29.5 units, 21 Opus runs score 27.3. The panel would rank the Haiku block above the Opus block. The real meter said zero against one. Use the panel for what eats your local history, not for what a model weighs in your quota.
Where the week really goes
Andrea Grandi published his setup the day Haiku 5.5 shipped, on a Pro plan: Opus main session, a Sonnet implementer, and two Haiku agents, a scoper in plan mode and a shipper at low effort. 13 pull requests over 10 sessions, about 6% of the five-hour window per PR, about 1% of the week. His own line is the point: priced at Opus rates, those Haiku tokens would make the sessions only 5% more expensive. The saving came from the main context staying small: 75 requests became 54.
My logs say the same from the other side. Subagents took 48.1% of the tokens, 96% of everything was cache reads, and every worker starts with a launch prompt whose median is 47,000 tokens on this account, the same stack whether the worker is Opus or Haiku. The model switch does not shrink it.
Effort does change appetite. The same feature read 233,000 tokens over 14 turns at medium and 140,000 over 8 turns at low, for the same accepted result.
What this doesn't prove
One small repo. Seven scoped tasks under a minute each, not a day of agentic coding. A meter with one point of resolution, plus or minus a point per block, so Sonnet's point and Opus's point cannot be told apart. Grandi's dollars are an estimate on a Pro plan. And there is an open issue reporting 1,149 subagents out of 1,371 running on the parent's Opus model despite the file; on the current build every one of my 182 runs carried the configured model, but check yours.
The full run
The video shows the headless tool results, the meter reads block by block, and the strings output of the binary on screen.
When you route a subagent to Haiku 5.5, what do you send it? A) everything scoped B) only Explore C) nothing, the hard stuff is all I launch. I would like to know where the line sits for other people.
An AI assistant helped tidy the prose. The runs, the numbers and the opinions are mine.
Top comments (0)