Original Reddit post

A while back I posted a joke here about Sonnet spawning a subagent on the very first prompt of a brand new session. In the comments I said the annoying part was having two agents burning tokens for one job. I got downvoted, and the top reply was basically “isn’t that a Haiku subagent? it saves you money and keeps your main context clean.” That used to be correct. It isn’t anymore, and I think a lot of people are still running on the old mental model. From the docs: The model field in subagent frontmatter defaults to inherit . Omit it and the subagent runs on your main conversation’s model. Explore used to always run on Haiku. As of v2.1.198 it inherits the main model (capped at Opus on the Claude API). Plan and general-purpose inherit as well. So if your session is on Opus, that “cheap little background search agent” is an Opus agent. Resolution order, first match wins: CLAUDE_CODE_SUBAGENT_MODEL env var per-invocation model parameter the subagent’s model: frontmatter main conversation model If you want the old cheap behaviour back: CLAUDE_CODE_SUBAGENT_MODEL=haiku forces every subagent down or set model: haiku in a specific agent’s frontmatter for Explore specifically, define your own user or project agent named Explore with model: haiku . A user/project agent overrides the built-in. To be fair to the change, it was almost certainly made for quality, and context isolation is still the real win of subagents. But “subagents are basically free” is outdated advice now, and it matters if you’re on a plan where you feel every token. Lastly, I am stingy for the 3 down votes submitted by /u/HimaSphere

Originally posted by u/HimaSphere on r/ClaudeCode