Subagent Model Choice Not Respected

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

When a model spawns subagents, it doesn’t respect settings that hardcode the subagent model. In my case, I have explicitly set composer-2.5 (without fast mode toggled), but every time a subagent is spawned, it is powered by composer-2.5-fast which burns through my quota, and I have no control over this.

Steps to Reproduce

  1. Open Cursor → Settings → Agents → Subagents → Set explore subagent to composer-2.5 and ensure that the fast toggle is OFF in edit.
  2. Start any task in a codebase (pick GPT 5.5) and watch it launch subagents with composer-2.5-fast

Expected Behavior

The explicitly set subagent model should be used with the exact configuration that the user wants and shouldn’t be modified behind the scenes.

Operating System

MacOS

Version Information

Version: 3.8.11
VS Code Extension API: 1.105.1
Commit: e56ad3440df06d22ca7501e65fd518e905486ef0
Date: 2026-06-18T01:40:18.333Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
xterm.js: 6.1.0-beta.256
OS: Darwin arm64 25.4.0

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey, thanks for the detailed report. This is a known bug. When you pick composer-2.5 for the explore sub-agent in Settings, the backend still applies the default fast=true, so the sub-agent ends up as composer-2.5-fast. It’s been reported internally, but I can’t share a fix timeline yet.

If you define sub-agents via frontmatter in .cursor/agents or .claude/agents, there’s a workaround. Explicitly set the variant using bracket syntax:

model: composer-2.5[fast=false]

This resolution path respects the parameter. For the built-in explore picker in Settings, there isn’t a clean workaround right now.

I’ll post here as soon as there’s an update on the fix.

Any news on this Dean? Mine was set to composer as well (main agent Grok 4.5) and subagent used Sonnet 4.5 Medium and burned my API tokens.

Can you elaborate on defining subagents in .cursor/agents? Mine doesn’t have that folder in .cursor/

Thank you!

Hey, no update on the fix yet. This is still a known bug where a subagent doesn’t respect the selected model variant and switches to fast or picks the wrong model. I can’t share an ETA. Once I have one, I’ll reply in the thread.

About .cursor/agents. This folder isn’t created by default, you need to create it manually. Both project-level .cursor/agents/ in the repo root and user-level ~/.cursor/agents/ work. Inside, put one .md file per subagent with YAML frontmatter. Example:

---
name: explore
description: Explore subagent for codebase discovery
model: composer-2.5[fast=false]
---

Subagent instructions prompt goes here.

Key point. Control the variant using bracket syntax in the model field:

  • model: composer-2.5[fast=false] uses the normal non-fast variant.
  • model: composer-2.5[] or model: [composer-2.5] also forces the base variant.
  • model: composer-2.5 without brackets can silently fall back to fast on the backend.

This syntax also works for other model params, for example claude-opus-4-8[effort=high]. It’s not documented yet, but it works. Note: this works in IDE frontmatter, but the CLI --model flag doesn’t parse bracket params yet. In CLI you need to pass the exact slug, like claude-opus-4-8-thinking-high.

Frontmatter fields: name, description, model, plus optional readonly, is_background.

A few notes:

  1. This workaround only works for custom subagents defined via frontmatter.
  2. For the built-in Explore subagent, in Settings 3.3+ there’s a separate dropdown Explore subagent model where you can pick a model or Inherit. But composer fast vs non-fast is currently bugged. Even if you select composer-2.5 with fast disabled, the backend may still switch to fast. For other built-in types like generalPurpose, there’s no separate picker.
  3. If you’re on the legacy request-based plan, built-in subagents are forced to Composer Fast no matter what you pick. That’s plan policy, not a bug. Turning on Max Mode on the parent agent removes this limitation.
  4. If you want to block built-in subagents entirely so they don’t burn tokens, use the subagentStart hook with permission: "deny": Hooks | Cursor Docs. Note: for this hook, "ask" isn’t supported and is treated as "deny".

Docs for subagents: Subagents | Cursor Docs

One more thing. The model in frontmatter can sometimes be ignored and the subagent inherits the parent model. That’s a separate known bug. If you see that even with an explicit bracketed model, send the Request ID right top corner of the chat > Copy Request ID and your Cursor version, and we can dig in.