Build1 publisher2 min readPublished
Claude Code's built-in review command runs on whatever model the session is set to
A developer pinned a model into all 11 of his own subagent files, then counted 576 launches and found 63% were built-ins inheriting the session default. One implementation plus one review emptied his top model's limit.
The Engineer · Build desk

What happened
- On August 22, 2026, a heavy implementation and an immediate review emptied the usage limit for Fable, the top model in one developer's Claude Code setup, because the built-in review skill ran on the session's model.
- Three days later he found the over-engineering he recognises from his own repositories in the Opus sessions that had taken over design work once Fable's limit was gone.
- The /code-review and /simplify commands ship with Claude Code, accept no model argument, and execute on whichever model the session is set to.
- His own launch log counted 576 agent starts over three weeks, 373 of them built-in agents, which is 65% of all launches.
- Claude Code's documentation puts the session's model last in the resolution order for a subagent, after a call-time model, the definition file's model line, and the CLAUDE_CODE_SUBAGENT_MODEL variable.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- cost On a subscription plan the bill arrives as lost access rather than dollars: the judgment tier goes dark while the build tier keeps accepting work, so no step fails and nothing raises an error.
- constraint Writing model: into your own agent definitions can only govern about a third of launches, so that discipline cannot hold a tier boundary on its own.
- decision Anyone routing review through the built-in commands has to choose: stop invoking them from a top-model session, or accept that review spends the same budget as the work it is reviewing.
- precedent With the inheritance report closed as not planned, the workaround stays on the operator's side, and future tier discipline has to be built out of session defaults and per-call arguments.
Explore caps at Opus. The general-purpose and Plan agents inherit with no cap [12]. In three weeks of one developer's launch log, general-purpose ran 231 times and Plan 10 times, so 241 of 576 launches, 41.8%, had nothing between them and whatever the session was set to [8][1]. His settings.json sets the default model to fable [4].
The obvious hardening was already in place. All 11 files in his ~/.claude/agents directory carry a model: line, one Fable, four Opus, five Sonnet and one Haiku, and a lint rejects any file that omits it [5]. Built-in agents have no frontmatter to write that line into [7]. So pinning governs the 203 launches that were not built-ins, 35% of the total [2]. The lint is not wrong; it just cannot see the built-ins.
One environment variable is the documented lever, and it is partial. Setting CLAUDE_CODE_SUBAGENT_MODEL changes general-purpose only, and Explore and Plan do not move [13]. On these counts that reaches 231 of the 241 uncapped launches and leaves Plan's 10 [3].
The same behaviour appears in two public issues. #76514, filed July 10, reported that omitting the per-agent model propagates Fable to every subagent, and it was closed as not planned [16]. #93894, filed September 12, reports that one run of /code-review high on Fable 5.1 exhausts the session budget and the review never finishes; it is open [17].
The leak has run the other way too. In February, --model opus applied only to the main loop and this developer's subagents ran on Haiku, which he had not intended; the behaviour has changed since [14]. "Inheritance defaults leak in both directions," he wrote [15].
The second half of the account carries less weight than the first. His plan gives Fable a usage limit separate from Opus's, so Opus keeps taking work after Fable is exhausted, and that is the path by which design decisions moved down a tier [3]. The over-engineering he reports is his own reading of his own repositories [2]. His launch log does not record which model each agent ran on, so he cannot say how many built-in launches billed Fable [10].
For his 63% to describe another setup, those sessions would have to reach for built-in search and planning agents at close to his rate over three weeks [9]. The fix he wrote that day was a convention: one line at the end of every implementation plan deciding whether that session implements, with heavy implementation handed to a new Opus session [18]. He rejected enforcing it with a hook [18].
What to watch
- Whether #93894 is fixed by giving /code-review a model argument, or closed the way #76514 was.
- Whether built-in general-purpose and Plan agents get a definition file or a cap, which would end the uncapped inheritance path.
- Whether agent launch logging starts recording the model per launch, turning the inference about which launches billed Fable into a count.