Opus Plan Mode: Automatic Model Switching Failure

Status Fixed / completed
Maintainer reply ✓ Yes — dicksontsai
Activity 6 comments · opened Aug 19, 2025 · closed Oct 8, 2025
💡 Likely answer: A maintainer (dicksontsai, collaborator) responded on this thread — see the highlighted reply below.

Bug Description
OPUS PLAN MODE MODEL SWITCHING BUG REPORT
==========================================

Date: 2025-01-19
Context: Testing of Claude Code's "Opus Plan Mode" automatic model switching functionality
Status: Bug confirmed

PROBLEM DESCRIPTION
-------------------
The "Opus Plan Mode" feature (option 4 in model selection) advertises automatic model switching with the description "Use Opus 4.1 in plan mode, Sonnet 4 otherwise." Testing shows this model switching functionality does not work.

EXPECTED BEHAVIOR
-----------------

  • Opus 4.1 should be used during planning phases
  • Sonnet 4 should be used for implementation tasks ("otherwise")
  • Model should switch automatically based on task type

OBSERVED BEHAVIOR
-----------------

  • Model remained on Opus 4.1 in all tested scenarios
  • No instances of switching to Sonnet 4 were observed
  • Manual model verification consistently showed: "claude-opus-4-1-20250805"

TESTING METHODOLOGY
-------------------
Multiple scenarios were tested to trigger the "otherwise" condition:

  1. Coding Tasks: Direct code edits (test skipping, file modifications)
  • Expected: Switch to Sonnet
  • Observed: Remained on Opus
  1. After Exiting Plan Mode: Performed implementation work after approval
  • Expected: Switch to Sonnet for implementation
  • Observed: Remained on Opus
  1. File Operations: Various file read/write operations
  • Expected: Switch to Sonnet for implementation tasks
  • Observed: Remained on Opus
  1. Extended Implementation Work: Multiple code edits in sequence
  • Expected: Switch to Sonnet for sustained implementation
  • Observed: Remained on Opus throughout

TEST TIMELINE
-------------

Phase 1: Initial Code Edit Test

  • User request: "skip all of the tests in this file"
  • Action: Modified test file to add .skip
  • Model check: "what model are you now?" → "Claude Opus 4.1"
  • Result: No switching to Sonnet for coding task

Phase 2: Plan Mode Exit Test

  • Started in plan mode (shift+tab activated)
  • Approved plan via ExitPlanMode tool
  • Performed code edits on bug report document
  • Model remained Opus despite being in "otherwise" state
  • User observation: "we exited plan mode and made edits but stayed in Opus"

Phase 3: Extended Implementation Test

  • Multiple file edits across session
  • Various implementation tasks performed
  • Consistent model verification showed Opus throughout
  • User: "still haven't found any way to switch into Sonnet"

REPRODUCTION STEPS
------------------

  1. Select "Opus Plan Mode" (option 4) via /model command
  2. Perform any implementation task (code editing, file operations)
  3. Check model with "what model are you now?"
  4. Observe: Model remains "claude-opus-4-1-20250805"
  5. Repeat with various task types - same result

IMPACT
------

  • Users selecting this option expecting efficiency receive expensive Opus processing for all tasks
  • "Sonnet 4 otherwise" specification is misleading
  • No cost optimization benefit is delivered

TECHNICAL REFERENCES
--------------------

  • Model selection interface shows: "Opus Plan Mode: Use Opus 4.1 in plan mode, Sonnet 4 otherwise"
  • Multiple model identity checks: "claude-opus-4-1-20250805"
  • /model command confirmations of "opusplan" active status

CONCLUSION
----------
The model switching mechanism in "Opus Plan Mode" is non-functional. The "Sonnet 4 otherwise" behavior does not occur in any tested scenario. Users receive Opus processing continuously regardless of task type.

Environment Info

  • Platform: darwin
  • Terminal: iTerm.app
  • Version: 1.0.84
  • Feedback ID: 252b8777-b87d-4c37-9b22-632dc4359b93

Errors

[]

View original on GitHub ↗

6 Comments

github-actions[bot] · 1 year ago

Found 1 possible duplicate issue:

  1. https://github.com/anthropics/claude-code/issues/5990

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

wdelhagen · 1 year ago

This is not a duplicate of #5990

In that BUG the switch happens but it downgrades to Sonnet 3.7 instead of 4

In my BUG, no downgrade happens at all

dicksontsai collaborator · 1 year ago

The implementation of Opus plan mode keeps claude-opus-4-1-20250805 in the system prompt at all times, which we can consider a bug.

I recommend using Status Line configuration (https://docs.anthropic.com/en/docs/claude-code/statusline) to see what the current runtime model is. Alternatively, you can look at the transcript jsonl files to see the model that is used at each turn.

wdelhagen · 1 year ago

Thank you for pointing out the statusline feature! That will be useful. I'm not sure if the documentation is changing or I am jus slowly taking it all in.

One note, the example json to configure the statusline is invalid json (because of the comment):
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"padding": 0 // Optional: set to 0 to let status line go to edge
}
}

(https://docs.anthropic.com/en/docs/claude-code/statusline)

VincentCassiau · 1 year ago

I have the same problem, it keeps using Opus without "plan" mode instead of using Sonnet and so it makes me reach my limits very quickly.

github-actions[bot] · 1 year ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.