Subagents should default to Sonnet, not inherit Opus
Summary
When running Claude Code with Opus as the main model, all subagents (Task tool) inherit Opus by default. This means a simple file search agent, a test runner, or a code reviewer all consume Opus-level resources — even though Sonnet performs equally well (or better) for these focused, well-prompted tasks.
Anthropic's own research and model cards recommend using the right model for the right task. Opus excels at complex reasoning, architectural decisions, and nuanced judgment. Sonnet excels at focused execution, code generation, and well-scoped tasks — which is exactly what subagents do.
Current behavior
- Main session: Opus (correct — user chose it for complex orchestration)
- All subagents via Task tool: Opus (wasteful — they do focused work)
- The
modelparameter exists but defaults to inheriting from parent
Proposed behavior
- Main session: whatever the user chose
- Subagents: default to Sonnet unless explicitly overridden with
model: "opus" - Agent definition files (
.mdfrontmatter) should havemodel: sonnetas the default, withmodel: opusormodel: inheritas opt-in for agents that genuinely need it
Real-world impact
I audited all 62 agent definitions across 6 plugins (superpowers, pr-review-toolkit, code-simplifier, plugin-dev, GSD, voyager). Zero agents actually need Opus. I had to create a post-update patch script (reapply-model-patches.sh) that rewrites model: opus and model: inherit to model: sonnet across all agent files after every plugin update.
# What users currently need to do after every plugin update:
find ~/.claude/plugins -path "*/agents/*.md" -exec \
sed -i 's/^model: opus/model: sonnet/' {} \;
find ~/.claude/plugins -path "*/agents/*.md" -exec \
sed -i 's/^model: inherit/model: sonnet/' {} \;
Context
On Max plans, Opus and Sonnet have separate rate pools. Defaulting subagents to Sonnet would:
- Reduce Opus pool consumption — more headroom for the main session
- Reduce latency — Sonnet is faster for focused tasks
- Improve cost efficiency on pay-as-you-go plans
- Align with Anthropic's own guidance on model selection
The only exception I found was deep research agents (Voyager) where Opus quality genuinely matters for expert-level synthesis. Everything else — code review, plan checking, test running, parallel dispatching — is Sonnet territory.
Suggestion
- Change the default in Task tool from "inherit from parent" to "sonnet"
- Official plugins should ship with
model: sonnetin agent frontmatter - Document the
modelparameter more prominently so users know they can override
🤖 Generated with Claude Code
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗