[FEATURE] Model switching per phase: auto-use different models for plan mode vs. implementation

Resolved 💬 2 comments Opened Mar 5, 2026 by shyamdhokia1 Closed Mar 5, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

When using Claude Code for complex tasks, I switch between high-level planning (plan mode) and implementation repeatedly. Both phases use the same model, which is either too slow/expensive for implementation or not capable enough for
planning. I have to manually run /model to switch before and after entering plan mode, which breaks my flow and is easy to forget. There's no way to set this preference once and have it applied automatically.

Proposed Solution

When entering plan mode, Claude Code should automatically switch to a configurable "plan model" and revert to the default model when exiting. This should be configurable in .claude/settings.json:

{
"model": "claude-sonnet-4-6",
"planModel": "claude-opus-4-6"
}

No other interaction needed — it should just work transparently when the user enters/exits plan mode.

Alternative Solutions

Currently working around it with manual /model switching before entering and after exiting plan mode. It works but adds friction and is easy to forget. Using a single powerful model for everything is an option but increases cost significantly
for implementation work where it isn't needed.

Priority

Medium - Would be very helpful

Feature Category

Configuration and settings

Use Case Example

  1. I'm working on a complex refactor across multiple files
  2. I enter plan mode to think through the approach — Opus is better here for reasoning
  3. Claude Code automatically switches to Opus for the planning phase
  4. I approve the plan and exit plan mode
  5. Claude Code switches back to Sonnet for implementation
  6. I get the best model for each phase without thinking about it

Additional Context

_No response_

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗