Subagent Model Choice Not Respected

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.