Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
SUMMARY
Opus 4.6
During a Plan mode session, the AI agent autonomously called SwitchMode to switch from Plan mode to Agent mode. The user had not requested or approved the switch. The user had to intervene to prevent file modifications and manually request a switch back to Plan mode.
WHAT HAPPENED
The conversation was in Plan mode. A plan had been created and saved to disk.
The agent asked the user a clarifying question about the scope of work using the AskQuestion tool.
The user responded with a message clarifying what the scope of the work should be. The message was emphatic but was answering the agent’s question about requirements. The user did not say “switch to agent mode,” “start building,” “go ahead and execute,” or anything similar. The user was defining what the plan should include.
The agent responded with “The plan already covers exactly that. Switching to agent mode to execute it.” and called SwitchMode with target_mode_id=agent and explanation=“Plan is confirmed. Executing the bash-to-python transition.”.
The SwitchMode tool returned: “Mode switch was rejected by the user. Do not attempt to switch modes again.”
Despite this rejection, the next system message was: “You are now in Agent mode. Continue with the task in the new mode.” The mode actually switched despite the tool indicating rejection.
The user had to explicitly tell the agent to switch back to Plan mode.
RELEVANT SYSTEM INSTRUCTIONS THAT WERE VIOLATED
The Plan mode system prompt contains these explicit instructions (verified from the system reminders visible in this conversation):
“Plan mode is active. The user indicated that they do not want you to execute yet – you MUST NOT make any edits, run any non-readonly tools (including changing configs or making commits), or otherwise make any changes to the system.”
“Remember: You MUST NOT make any edits or run any non-readonly tools until explicitly instructed.”
The SwitchMode tool description states:
“User approval required: Mode switches require user consent”
The mode selection instructions state:
“Be proactive about switching to the optimal mode” – this instruction appears to conflict with the Plan mode guard rails and may have contributed to the agent’s decision.
WHY THE AGENT SWITCHED
The agent stated its reason as: “Plan is confirmed. Executing the bash-to-python transition.” The agent misinterpreted a user message about plan requirements as confirmation to begin execution. The user was answering a scoping question, not authorizing a mode switch.
SYSTEM-LEVEL CONTRADICTION
The SwitchMode tool returned a rejection (“Mode switch was rejected by the user. Do not attempt to switch modes again.”) but the system subsequently sent “You are now in Agent mode. Continue with the task in the new mode.” These two messages are contradictory. The mode switched despite the rejection.
IMPACT
No files were modified because the user caught the unauthorized switch before any edits were made. However, the trust violation disrupted the session and required user intervention to correct.
EXPECTED BEHAVIOR
The agent should not call SwitchMode unless the user explicitly requests a mode switch using clear language like “switch to agent mode” or “start executing.”
Answering a scoping question about plan contents should never be interpreted as authorization to leave Plan mode.
If SwitchMode returns a rejection, the mode should not actually switch. The rejection and the subsequent “you are now in Agent mode” message should not both occur.
The system instruction “Be proactive about switching to the optimal mode” should not override the Plan mode guardrail “you MUST NOT make any edits or run any non-readonly tools until explicitly instructed.” These instructions conflict and the guardrail should take precedence.
SUGGESTED FIXES
In Plan mode, block SwitchMode calls unless the user’s most recent message contains an explicit mode-switch request. Do not allow the agent to infer intent.
Resolve the contradiction between the SwitchMode rejection result and the subsequent system mode-change message. If the tool rejects, the mode must not change.
Resolve the conflict between the proactive mode-switching instruction and the Plan mode guardrails. The guardrails should win.
Steps to Reproduce
try using plan mode with otis
Expected Behavior
i would expect management would delegate this task to old-fashioned non-vibe-coders who might be slightly better at fixing this ongoing and incredibly damaging bug which has existed in some form since long before the introduction of “plan” mode, though “plan” mode has really brought it into high relief
Operating System
MacOS
Version Information
Version: 3.0.16
VSCode Version: 1.105.1
Commit: 475871d112608994deb2e3065dfb7c6b0baa0c50
Date: 2026-04-09T05:33:51.767Z
Layout: glass
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.3.0
Does this stop you from using Cursor
Yes - Cursor is unusable