Composer subagents run on Fast when the parent chat isn't Composer, ignoring the agent file's [fast=false] pin

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Custom subagents in ~/.cursor/agents/*.md declare model: composer-2.5[fast=false], which per the docs should give standard Composer 2.5. When one of them is spawned from a chat whose own model is not Composer (Claude Opus 5.5, Grok 4.7), it runs and is billed as Composer 2.5 Fast every time. Spawned from a chat running Composer 2.5 standard, the same subagent runs standard. So the subagent’s variant follows the parent chat, not the pin.

Also tried from an Opus parent, all still Fast:

  • passing model “composer-2.5” explicitly in the Task call
  • model: composer-2.5[] in the agent file
  • switching the model picker to Composer 2.5 standard and back, then spawning again

Steps to Reproduce

  1. Create ~/.cursor/agents/probe.md with model: composer-2.5[fast=false] in the frontmatter and a trivial instruction.
  2. Open a new chat with Claude Opus 5.5 (or Grok 4.7) as the model.
  3. Ask it to spawn the probe subagent.
  4. Open the usage dashboard: the subagent’s request is billed as Composer 2.5 Fast.
  5. Repeat from a chat whose model is Composer 2.5 (standard): the subagent is billed as standard composer-2.5.

Expected Behavior

The subagent runs on the model its agent file pins (composer-2.5 standard), whatever the parent chat’s model is. An explicit composer-2.5 in the Task call should also give standard. If the parent’s model is meant to win, the docs should say so and the pin should be rejected or warned about.

Operating System

MacOS

Version Information

IDE:
Version: 3.22.7
VSCode Version: 1.128.0
Commit: 37076c6c3f9e253c0fa2305197e45befd13a2260
Date: 2026-09-24T05:01:24.589Z
OS: macOS 26.6.2 (25G83), arm64

For AI issues: which model did you use?

Parent chats: Claude Opus 5.5 (medium) and Grok 4.7 (high), both show the bug. Composer 2.5 standard parent does not.
Subagents: composer-2.5[fast=false] in the agent file, billed as Composer 2.5 Fast.

For AI issues: add Request ID with privacy disabled

Request ID: 8d9d3a46-d95b-491d-a1aa-a044cd3c66f3

Additional Information

Fast is about 6x the standard price, so this defeats the point of pinning cheap subagents under an expensive orchestrator. In one feature run the subagents cost about $3.70 on Fast instead of roughly $0.60 on standard, and a single browser-testing subagent cost $16. The Task tool only accepts the slugs composer-2.5 and composer-2.5-fast, and neither the slug nor the agent-file parameter changes the result from a non-Composer parent.

Does this stop you from using Cursor

No - Cursor works, but with this issue

After re-saving all agent files (same model: composer-2.5[fast=false] line, moved above description:), two probes from the same Opus chat, both with no model argument, resolved differently: the scout ran as composer-2.5 with fast=true, and the verifier ran as the parent’s own model (claude-opus-5-5, effort high). The two files have identical frontmatter structure.

Hey @Maarkyy! This is an issue we’re tracking and I’ve added your report to it. It’s not something you misconfigured.

Quick fix to get your subagents back to standard: seeing the Fast toggle “off” isn’t enough, you have to actively re-save it.

  1. New chat → model picker → select Composer 2.5.
  2. Toggle Fast on, then off again (this writes “off” as your saved preference).
  3. Switch back to Opus/Grok, open a fresh chat, and spawn your probe.
  4. Usage should now show composer-2.5.

One caveat for longer runs: this holds for freshly spawned subagents. A worker kept alive until a background command finishes can flip back to Fast, so spawn a fresh one per chunk of work.

If you’d like us to review the usage impact on your account, drop a note to [email protected]. Let me know if the new subagent shows standard Composer 2.5!

Thanks! I tried the workaround three times, and the subagents still run on Composer 2.5 Fast.

Steps each time:

  1. New chat, picked Composer 2.5, toggled Fast on, then off (in attempt 2 I also sent “hi”).
  2. In that same chat, switched back to Opus 5.5 medium.
  3. Opened a brand-new chat (Opus 5.5 medium) and spawned a scout and a verifier in parallel, no model argument. Agent files pin model: composer-2.5[fast=false].

Result: all 6 subagents ran as Composer 2.5 Fast (fast=true).

  • Attempt 1: e70dbe53-4114-46f5-ba4e-6bd121fafb6a, b8edc0b3-8545-4a1b-804c-8b1145bc1aa0
  • Attempt 2: 9ff84ac1-8eb4-4428-8c96-d401c7dd8b1a, a66d8a4b-6a99-4955-b59e-992e65e16d6f
  • Attempt 3: 149ec829-7cb9-4386-a57e-6da2acbd1989, 47bf08ed-3359-4e8e-b676-166c30802ebf

Also still Fast: an explicit model: "composer-2.5" on the Task call, and Grok 4.7 as the parent. Only a Composer 2.5 standard parent gets standard subagents.

Cursor 3.22.7, macOS 26.6.2.

Thanks @Maarkyy, this isn’t your setup, and we’ve passed your conversation IDs to the team.

Until it’s fixed, a Composer 2.5 (standard) parent chat is the reliable way to keep subagents on standard. If subagents you launch from now on still show composer-2.5-fast on your usage page, send the time (with timezone) of one.

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Custom subagent composer-common-agent runs as Composer 2.5 Fast even though the account, the agent file, and the Task call all request Composer 2.5 with fast=false. Fast is marked increasesModelCost and its tooltip says it consumes more usage, so these runs are billed at the higher rate.

Steps to Reproduce

  1. Create a custom subagent at ~/.cursor/agents/example.md:

name: example
description: Repro agent for Composer 2.5 fast=false
model: composer-2.5[fast=false]

Reply with the single word ok.

  1. In the model picker, select Composer 2.5 and turn Fast off.
  2. In a new Agent chat, ask the parent model to launch a Task subagent with subagent_type “example” and model “composer-2.5”. Do not pass composer-2.5-fast, inherit, or an empty model.
  3. Open the subagent card.

Result: the card shows Composer 2.5 Fast. The stored modelConfig has modelId composer-2.5 and parameters [{ id: fast, value: true }], or an empty parameters array. fast=false from the agent file and from the model picker is not applied.

Any custom agent name reproduces this. The name composer-common-agent is local to my machine and is not required.

Expected Behavior

The subagent runs Composer 2.5 with fast=false. The stored config is parameters: [{ id: fast, value: false }].

Operating System

MacOS

Version Information

IDE:
Cursor 3.23.23 (stable)
commit 2dac2428994fe34f12658d9ecad1541b98db2c00
VS Code 1.128.0

For AI issues: which model did you use?

The parent chat was Grok 4.7 (and in another chat Claude Fable 5.1). The Task argument was the slug composer-2.5. The subagent actually ran as Composer 2.5 Fast.

Additional Information

Saved modelConfig on composer-common-agent is either:

{ modelName: composer-2.5, selectedModels: [{ modelId: composer-2.5, parameters: [{ id: fast, value: true }] }] }

or the same model with parameters: .

Of the last 80 composer-common-agent runs, 42 have fast=true, 38 have empty parameters, and 0 have fast=false.

In the local model catalog, the Fast variant is the default for both max and non-max. resolveModelParametersForSubmission applies modelParameterPreferences only when the parameter list is empty. The client writes fast=true first, so the saved fast=false preference is skipped. The Task Models override applies to Explore only, not to composer-common-agent.

Does this stop you from using Cursor

No - Cursor works, but with this issue