Field note · 26 August 2026 · Daniel Wright

An unconfigured subagent inherits your model. Your log scanner is running on Opus.

A brass balance scale with three tiny slate-blue tokens on one pan, dragged down by one oversized block on the other
Three small jobs, one very expensive weight.

The tax

You wrote a subagent to do something dull. Scan logs. Rename files. Check a list. You never set a model on it, because there was no obvious reason to.

So it inherits yours. If you are working in Opus, that throwaway triage agent is doing throwaway work at Opus rates, every single time it runs, and nothing in the interface tells you.

Where the default comes from

Claude Code’s subagents documentation is explicit: if the model field is omitted from an agent’s frontmatter, it defaults to inherit — the model of the agent that called it. Practitioners have been raising this repeatedly in the Claude Code issue tracker, because it is invisible until you go looking at usage.

One line fixes it:

Subagent frontmatter · the missing line
---
name: log-scanner
description: Scans build logs and reports failing steps
model: haiku
---
You read log files and report which steps failed and why. Nothing else.

My rule of thumb: haiku for mechanical work with a clear definition of done, sonnet for research and reading, opus only where the plan itself decides the outcome. Most agent files in most repos should say haiku or sonnet.

The second half of the tax

There is a compounding effect, and it is also documented. Anthropic’s prompting best practices note that “Claude Opus 4.6 has a strong predilection for subagents” and that “Claude Opus 5 also delegates to subagents more readily than prior models”. The docs publish a sample damping prompt for exactly this.

So the newest models spawn more subagents than you expect, and unconfigured subagents cost more than you expect. The two multiply.

Here is the damping instruction I use:

Delegation damper · CLAUDE.md
## Delegation
Do the work yourself unless delegation is clearly cheaper.
Do not spawn a subagent for anything a single grep, glob or file read can answer.
Only delegate when the task is large, independent, and would otherwise fill this context.
When you do delegate, say in one line why.

“Do not spawn a subagent for anything a single grep can answer” is the load-bearing line. Search is cheap. A whole extra agent with its own context window is not.

Audit yours in one paste

Agent audit · read only
List every agent file in .claude/agents and in my global agents folder.
For each one show: name, the model field, and whether that field is missing.
Group them into mechanical work, research work and reasoning work based on what the file says it does.
Recommend haiku, sonnet or opus for each. Do not edit anything.

Every time I have run this on a repo that has been going a while, the answer has been the same shape: a handful of agents doing genuinely hard reasoning, and a long tail of mechanical helpers silently inheriting the big model.

Why it stays hidden

Because nothing goes wrong. The output is fine. Cheap models would have produced the same file rename. There is no error, no warning, no slow request — just a bill or a quota that runs down faster than the work you did would justify.

That is the whole category of problem worth caring about here. Not the failures you can see, but the defaults you never chose.

Sources

Make the next AI decision concrete.

NavAIgate helps leadership teams identify high-value AI opportunities, prove them safely and turn the winners into working systems.