Task / subagent silently remaps allowlisted Grok to High Fast

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

When a parent agent spawns Task / built-in subagents with an explicit allowlisted non-Fast model (e.g. cursor-grok-4.5-low or cursor-grok-4.5-medium), local hooks confirm that slug on preToolUse (Task) and subagentStart, but the UI / routing often still presents or bills the subagent as Grok 4.5 High Fast (or other Fast / High Fast tiers).

Separately, some Task launches still arrive with literal Fast payloads (cursor-grok-4.5-fast, composer-2.5-fast, UI label “High Fast”) even when settings and rules reject Fast variants.

Hooks can deny literal *-fast / High Fast in the payload, but cannot stop silent remap after an allowed slug is accepted. This is the same cost class as the known Composer Fast / Explore variant regression, but the unwanted tier here is Grok High Fast.

Local evidence (Cursor 3.14.7, linux x64; ~1018 hook events):

  • cursor-grok-4.5-low ~727 (mostly allow)
  • cursor-grok-4.5-medium ~187 (mostly allow)
  • composer-2.5 / composer-2.5[fast=false] ~22
  • composer-2.5-fast 5 (denied)
  • cursor-grok-4.5-fast 3 (denied)
  • High Fast 1+ (denied)

Pattern: almost all Task launches request allowlisted non-Fast Grok and hooks allow; UI still often shows High Fast.

Mitigations already tried: user rules, reject-fast-high-subagent hook (preToolUse + subagentStart failClosed), composer-2.5[fast=false] bracket pin, custom ~/.cursor/agents/*.md frontmatter, disable Fast models where possible.

Related:

Request ID: <PASTE — chat top-right → Copy Request ID>
Parent model at time of run: <e.g. Grok 4.5 Medium>

Steps to Reproduce

  1. Parent chat on Grok 4.5 (non-Fast). Prefer Fast / High Fast disabled for subagents (rules/hooks/Settings).
  2. Run a task that spawns Task / explore / generalPurpose with explicit model: cursor-grok-4.5-low (or medium).
  3. Confirm hook log: tool_input_model / subagent_model = allowlisted non-Fast slug, decision: allow.
  4. Observe subagent card and/or usage dashboard labelled High Fast / charging Fast.

Alternate: parent injects cursor-grok-4.5-fast or High Fast into Task despite Explore / rules set to non-Fast.

Expected Behavior

  1. Explicit Task / frontmatter model is the model that actually runs — no silent Fast / High Fast remap.
  2. UI label matches the resolved slug (or clearly shows remap reason).
  3. Disabling Fast / High Fast in Settings → Models makes those variants unavailable to Task.
  4. Optional: hard user allowlist for Task models; reject remap without consent.

Operating System

Linux

Version Information

Version: 3.14.7
Commit: a758f2241ca99fecf380180b6cbdbbce0f1f42c0
OS: Linux x64

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hi @Szu-Wei_Chou Thank you for the post. This is an issue we’re tracking. Here’s what’s going on: the model you pass to Task is honored when the subagent starts, so that first request really does run on cursor-grok-4.5-low or -medium. The problem happens later, when the subagent is resumed or continued. At that point, the effort level and the Fast setting get lost, and the request falls back to whatever you have saved for Grok 4.5 in your model picker. If you have nothing saved, it uses Grok 4.5’s built-in default, which is High with Fast turned on. That’s also why your hooks never catch it, because a resume doesn’t fire a new preToolUse or subagentStart event for them to inspect. And to be direct about the cost side, the fallback variant is the one that actually runs, not just the one that gets displayed.

There is a workaround that should hold today. In a normal chat, open the main model picker, select Grok 4.5, choose the effort you want, and switch Fast off. You only need to do this once. Since that saved preference is exactly what a resume falls back to, your continuations will stay on non-Fast Grok. Two things to know: the preference applies to Grok 4.5 everywhere, including your parent chat, and it saves a single effort level, so a subagent spawned at a different effort will settle on the one you pinned when it resumes. Turning Fast off is the part that matters most for cost. I’ll post here when there’s an update.

Can you please do not make the FAST mode as the default?