Agent tool ignores `effort:` frontmatter in subagent .md files — inherits global effortLevel instead
Summary
When spawning subagents via the Agent tool, the effort: field declared in the subagent's .md frontmatter is ignored. All subagents inherit the global effortLevel from .claude/settings.json regardless of their individual frontmatter declaration.
Environment
- Claude Code version: latest
- Project settings:
.claude/settings.jsonwith"effortLevel": "xhigh" - Subagent files in
.claude/agents/with varyingeffort:frontmatter values
Steps to Reproduce
- Create
.claude/settings.jsonwith"effortLevel": "high" - Create a subagent file
.claude/agents/agent-a.mdwith frontmattereffort: low - Create a subagent file
.claude/agents/agent-b.mdwith frontmattereffort: xhigh - Spawn both subagents via the
Agenttool in the same session - Observe: both subagents run at
high(the global setting), not at their declaredeffort:level
Expected Behavior
Each subagent spawned via the Agent tool should use the effort: value declared in its own frontmatter, allowing per-agent effort configuration.
Actual Behavior
All subagents inherit effortLevel from the parent session's .claude/settings.json, ignoring the frontmatter effort: field entirely.
Impact
This makes it impossible to build multi-agent pipelines with differentiated effort levels per role. A natural pattern is having some agents that perform simple, mechanical tasks (effort: low) alongside others that require deep reasoning (effort: xhigh). With the current behavior, the global effortLevel must be set to the highest required value, causing all agents — including lightweight ones — to run at maximum effort unnecessarily.
Workaround
Set effortLevel globally to the highest required value and accept the token overhead for lower-effort agents.
Request
Respect the effort: frontmatter field when spawning subagents via the Agent tool, using it to override the global effortLevel for that specific subagent invocation.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗