SubAgent Task calls ignore subagent_type-implied model routing and instead inherit the parent agent’s model.
When using the Task tool with model-specific subagent_type values (e.g., planner-opus, plan-reviewer-codex, final-gate-opus), the subagents do not run on the models indicated by their type names. Instead, they appear to inherit the parent agent’s model, effectively ignoring the model binding that the subagent_type names suggest.
Steps to Reproduce
Open a Composer session (Plan mode was used, but likely reproducible in Agent mode)
Instruct the agent to sequentially call three subagents:
Task(subagent_type=“planner-opus”, …)
Task(subagent_type=“plan-reviewer-codex”, …)
Task(subagent_type=“final-gate-opus”, …)
None of the Task calls specify an explicit model parameter
Observe that all three subagents appear to run on the same model as the parent agent, rather than on their respective designated models (opus / codex / opus)
Expected Behavior
Each subagent_type with a model identifier in its name should automatically route to the corresponding model on the backend:
subagent_type
Expected Model
planner-opus
opus
plan-reviewer-codex
codex
final-gate-opus
opus
code-reviewer-codex
codex
coder-codex
codex
code-final-review-opus
opus
test-writer-codex
codex
This routing should happen regardless of the parent agent’s model.
The subagent_type parameter in the Task tool is just a name or identifier. It doesn’t control which model gets run. Adding “opus” or “codex” to the name doesn’t enable automatic model routing.
To assign a specific model to a subagent, set the model field in the subagent’s YAML frontmatter. Create .cursor/agents/planner-opus.md:
---
name: planner-opus
description: Task planning using Opus.
model: claude-4.6-opus-high-thinking
---
Your prompt here...
Valid values for model:
inherit uses the parent agent’s model
fast uses a faster, cheaper model
A specific model name, like claude-4.6-opus-high-thinking or gpt-5.2-codex
I actually already have the model field configured in the YAML frontmatter for all 7 of my subagents. Here’s what my .cursor/agents/ directory looks like:
Agent file
model in frontmatter
planner-opus.md
claude-4.6-opus-high-thinking
plan-reviewer-codex.md
gpt-5.3-codex-xhigh
final-gate-opus.md
claude-4.6-opus-high-thinking
code-reviewer-codex.md
gpt-5.3-codex-xhigh
coder-codex.md
gpt-5.3-codex-xhigh
code-final-review-opus.md
claude-4.6-opus-high-thinking
test-writer-codex.md
gpt-5.3-codex-xhigh
For example, my planner-opus.md frontmatter:
-–
name: planner-opus
model: claude-4.6-opus-high-thinking
description: xxx
readonly: true
-–
The issue is that even with model explicitly set in frontmatter, the subagents still appear to inherit the parent agent’s model rather than using their designated ones. So the frontmatter approach doesn’t seem to be working either — which is why I filed this as a bug rather than a feature request.
Is there any way to verify which model a subagent is actually running on? That would help confirm whether the frontmatter model field is being picked up at all.
Related question: How can we obtain exact string id for models available in Cursor (more reliable than browsing Claude / Codex official docs)? What is the correct name for “auto” or Composer models?
Can you share the Request ID (Chat context menu > Copy Request ID) with Privacy Mode turned off? That lets us verify on the backend which model is actually being used for subagents.
Are you on the usage-based plan or the legacy request-based plan? (You can check at https://cursor.com/dashboard?tab=usage. If it shows dollars instead of a request count, you are on usage-based.)
@DjWarmonger: There is no exact public list of all model string IDs in the docs. The most reliable way is to check the model dropdown in Cursor (the model picker in chat). The model values in subagent file frontmatter should match what you see in the model picker. For “auto”, you can try auto or just leave out the model field.
Thanks for confirming this is a bug, Dean. Good to hear a fix is expected in v2.5.
To answer your questions:
Plan type: I’m on the usage-based plan (dashboard shows dollar amounts).
Request ID: Unfortunately I’m unable to turn off Privacy Mode due to policy constraints, so I can’t provide a Request ID with privacy disabled. If there’s anything else I can provide without disabling Privacy Mode, happy to do so.