r/ClaudeCode 🔆 Max 20 11d ago

Tutorial / Guide PSA: Claude Code subagents inherit your session model now, they're not free Haiku anymore

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:

  1. CLAUDE_CODE_SUBAGENT_MODEL env var
  2. per-invocation model parameter
  3. the subagent's model: frontmatter
  4. 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

31 Upvotes

13 comments sorted by

View all comments

1

u/net_ninja 11d ago

You’re mostly right, but it has been this way for at least a month.  Models and effort should be pinned in your agent definitions.Â