Usage-limit handling breaks manual model selection — misleading “Switched to composer-2.5” copy, fallback fails, UI spawns agents

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

If I choose any model (other than Auto) - Cursor doesn’t work and sometimes the UI Jumps.. I know why it doesn’t work (maybe i have hit some limit) - however cursor is not handling it well on the IDE.

Here is a loom video: Composer Model Error After Credits Depleted | Loom

I also used cursor to build me a bug report of the bug (because it already has access to all the logs etc). Here it is: https://app.notion.com/p/Cursor-Bug-Report-3721eb5c7f2b8006a5e5c74185e8535d

Steps to Reproduce

Its detailed in the bug report + video

Operating System

MacOS

Version Information

Version: 3.6.31
VS Code Extension API: 1.105.1
Commit: 81fcf2931d7687b4ff3f3017858d0c6dee7e2a60
Date: 2026-05-31T17:46:29.630Z
Layout: glass
Build Type: Stable
Release Track: Early Access
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
xterm.js: 6.1.0-beta.220
OS: Darwin arm64 25.5.0

For AI issues: which model did you use?

Composer 2.5

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hey, this is probably the most detailed report I’ve seen all week. Thanks, it really helps.

Here’s how it breaks down:

  1. Misleading Switched to composer-2.5 when you’re already on Composer 2.5
    This is a known wording bug in that message. We’re tracking it, but I can’t share an ETA yet.

  2. Why Composer 2.5 itself fails in about 1s
    You’ve used up your included usage on the Pro plan. When you manually pick a model, the request hits the limit, and after the Composer 2 retry path was removed on May 28, the fallback path is currently behaving incorrectly. That’s also a known issue on our side, with no timeline yet. Auto still works because it routes to available capacity.

  3. Spawn storm UI jumps, agents keep multiplying
    From your logs, this looks like a separate issue. Every failed send on a limited model seems to create a new agent instead of reusing the current one. I’ll file this for investigation. To confirm on our side, it’d really help if you can share the zip logs you mentioned at ~/Library/Application Support/Cursor/logs/20260601T181450/, plus a Request ID from one of the failed Composer 2.5 requests. If Privacy Mode is off, you can copy it from the chat menu in the top right > Copy Request ID.

Workaround for now:

  • Stay on Auto, it avoids the broken fallback path
  • Don’t spam Submit and don’t switch models quickly back to back, each attempt can spawn a new agent
  • If you want to run specific models right now, either wait for your usage to reset or enable usage-based pricing on-demand spending in the dashboard. The reset time is shown in Settings > Usage

Let me know once you’ve shared the logs. If the spawn storm is confirmed, I’ll start a separate thread for it so we don’t mix everything together.

Hi Dean, No worries! thanks for the clear breakdown. That matches what I was seeing.

Logs attached: cursor-logs-20260601T181450.zip (full session from ~/Library/Application Support/Cursor/logs/20260601T181450/).

Request ID: I don’t have a Request ID copied from the chat menu for the failed Composer 2.5 attempts or jumps… (I didn’t grab it at the time). i tried to reproduce it again but jump didn’t happen this time in a new thread. it happened in the “monpage workspace” see below.

Correlation IDs from the logs (same session):

What ID
Bug-report chat (cursor bug workspace) composerId: 2f6f1021-94d6-42dc-9d86-714f88629a9d
monpage workspace (spawn storm) workspaceId: cb63fd33d71ab71e51714be8df07905c
Long-lived monpage thread (Auto worked) composerId: 37199e10-0052-466d-b7a5-26ceab326b0d
Example ephemeral agent from burst composerId: 9c978720-5774-42ec-8af5-5a5a116ebece
generationUUID (Sentry breadcrumb) c3014213-6731-4d88-a457-485b45d8e79a

Failed Composer 2.5 attempts (window1_wb2/renderer.log):

  • ~2026-06-02 01:45:45catalogModelId=composer-2.5, idSource=selectedModels[0], ended ~1.4s

  • ~01:46:22 — ~1.0s

  • ~01:46:29 — ~1.1s

Spawn storm (window1_wb1/renderer.log):

  • 01:39:55 – 01:40:07 — 11 new composerIds in ~12s, all composer-2.5

  • 00:58:35 – 00:58:51 — same pattern

Environment: Cursor 3.6.31 (prerelease), macOS arm64, Pro plan (included usage exhausted).

cursor-logs-20260601T181450.zip (318.8 KB)

Thanks again,
Saad

@saad I went through the full logs. Thanks for the correlation ID, it made this much faster.

Quick recap in 3 points:

  1. Model selection on the client side looks fine. In the logs, the client consistently sends composer-2.5 (you selected it manually and it was sent correctly). So the misleading Switched to composer-2.5 message and the failed fallback are from server-side handling of the usage limit, and that part doesn’t show up in the client log. These are the same two known bugs I mentioned in my last reply. No ETA yet.

  2. The Composer 2.5 failures around 1s are confirmed (3 attempts at 01:45 to 01:46, then it rolls back to default). There are no client errors, the rejection comes from the backend. Also, the [error] lines about OTLPExporterError / Trace spans collection is not enabled in that window are unrelated telemetry noise. You can ignore them.

  3. Spawn storm: confirmed, this is a real client bug. The logs show two bursts (01:39:55 to 01:40:06 and around 00:58:35). Agents aren’t being spawned by you, they’re spawned by the tab handling logic. When the active tab is a terminal, the handler keeps creating a fresh agent instead of reusing the current one. This is on our side, I’ve reported it internally. I can’t share an ETA yet, I’ll update you when I have one.

To avoid mixing everything in one thread, let’s split the spawn storm into a separate report. If you can, please create a new post in Bug Reports (Cursor 3.6.31, macOS, Layout: glass) describing the bursts and include the same correlation IDs you already shared: workspaceId=cb63fd33d71ab71e51714be8df07905c, example agent composerId 9c978720-5774-42ec-8af5-5a5a116ebece, burst timestamps, and attach the same zip. Drop the link here after you post it and I’ll pick it up there.

Workaround is the same: stay on Auto (it avoids both the broken fallback and the burst trigger) and don’t switch models quickly back to back. Let me know if you catch it again, especially with a Request ID.