Switch Timer is useless

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Cursor Bug Report (Forum draft)

Post to: Bug Reports - Cursor - Community Forum
Category: Support → Bug Reports
Title: Plan→Agent mode switch reported as “rejected by user” when approval UI timer expires


Environment

  • OS: macOS 26.5.1 (Build 25F80)
  • Cursor version: 3.12.17
  • Request ID: 4a2fbc16-dc53-4338-a3c6-6da0aeac379f

Steps to reproduce

  1. Open a chat in Plan mode.
  2. User explicitly asks to implement / says go.
  3. Agent calls SwitchMode to agent (approval UI appears).
  4. Do not click Reject or Approve — wait until the approval timer expires.
  5. Observe the tool result returned to the agent.

Expected behavior

  • Timer expiry is reported as expired / timed out / cancelled, not as an intentional user rejection.
  • Agent is allowed to retry the mode switch or ask the user to switch manually.
  • After an explicit user “go”, the workflow is not blocked by a false rejection.

Actual behavior

  • Tool result: “Mode switch was rejected by the user. Do not attempt to switch modes again.”
  • User did not reject; only the approval timer expired.
  • Agent is instructed not to call SwitchMode again and remains stuck in Plan mode (cannot edit code), even though the user wanted execution.

Why this is wrong (UX)

  • While the approval is open, the user is waiting on that question — they are not “elsewhere”.
  • A timeout is not a rejection. Mislabeling it breaks Plan→Agent handoff and forces manual mode switching.
  • Comparable “Run” approvals do not behave this way in practice for the user’s workflow.

Impact

  • False “user rejected” signal.
  • Blocks implementation after the user already said go.
  • Wastes time and erodes trust in the approval UI.

Suggested fix

Primary: Remove the timer on Plan→Agent mode-switch approval. Keep the dialog open until the user clicks Approve or Reject — same mental model as an explicit “go”. There is no user-facing safety benefit to auto-expiring this prompt; timeout only creates stress and false rejections.

If a timeout must exist for internal reasons (should be justified publicly):

  1. Result must be expired / timeout, never rejected.
  2. Agent must be allowed to retry.
  3. Prefer: after explicit user “go”, skip the second gate or auto-approve Agent mode.

Steps to Reproduce

siehe oben

Expected Behavior

siehe oben

Operating System

MacOS

Version Information

siehe oben

For AI issues: add Request ID with privacy disabled

siehe oben

Additional Information

siehe oben

Does this stop you from using Cursor

No - Cursor works, but with this issue