[FEATURE] Allow combined Sonnet/Haiku usage similarly to opusplan

Status Fixed / completed
Maintainer reply ✓ Yes — km-anthropic
Activity 12 comments · opened Oct 17, 2025 · closed Nov 24, 2025
💡 Likely answer: A maintainer (km-anthropic, contributor) responded on this thread — see the highlighted reply below.

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

With the introduction of Haiku 4.5 it would be viable to use that for doing code changes based on planning executed by Sonnet. This currently requires manually switching between models, which is an extra step, can be forgotten, etc.

Proposed Solution

Introduce a new mode similar to what we had with opusplan, e.g. claude --model sonnetplan which would dynamically use Sonnet for planning and Haiku for editing

Alternative Solutions

A seemingly feasible workaround would be to override the default models via the env variables and switch to opusmode, but that's not available on the pro plan.

myUser@myMachine myFolder % export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-sonnet-4-5
myUser@myMachine myFolder % export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-haiku-4-5
myUser@myMachine myFolder % claude --model opusplan
Claude Pro users are not currently able to use Opus in Claude Code. The current model is now Sonnet.

Priority

Medium - Would be very helpful

Feature Category

CLI commands and flags

Use Case Example

_No response_

Additional Context

_No response_

View original on GitHub ↗

12 Comments

github-actions[bot] · 10 months ago

Found 2 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/8358
  2. https://github.com/anthropics/claude-code/issues/9695

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

mgelei · 10 months ago

I'm not sure. The first mentioned ticket is not a duplicate, the second one seems related but that's a closed bug report, asking for a behavior that AFAIK doesn't exist. (And this ticket is about adding that behavior)

acidtech · 10 months ago

2.0.22: Set /model to Haiku. Then switch to plan mode and model will change from Haiku to Sonnet. So it appears they already implemented what you wanted.

mgelei · 10 months ago

That seems to contradict #9695 but I'll check tomorrow

mgelei · 10 months ago

Yeah, that's not working.

<img width="1227" height="504" alt="Image" src="https://github.com/user-attachments/assets/9651f2fa-2c9b-466e-887c-1d305943721c" />

cassus · 9 months ago

Status: Feature is NOT implemented - only shows up in statusline JSON

The Haiku→Sonnet plan mode switching described in this feature request is not actually working. When Haiku 4.5 is set as default and plan mode is entered:

  • The model responding is still Haiku 4.5 (verified via self-identification)
  • Only the statusline JSON shows "Sonnet 4.5" -- but this is not true

This is a bug in the JSON, not a proper feature implementation. This feature seems to remain unimplemented as of this test of v2.0.32

huyhandes · 9 months ago

Bump for this features. New sonnetplan mode should be added.

km-anthropic contributor · 9 months ago

Hi! Sometimes the model gets confused when it sees a different model string above. Instead I recommend clicking ctrl+O to deterministically find out what model was called. Here's a screenshot:

<img width="1778" height="452" alt="Image" src="https://github.com/user-attachments/assets/9f52b209-a4e8-45e0-9ea9-899039a4de69" />

Although the model says it's haiku, you can see the sampled model is sonnet (this is in Plan Mode, where it's automatically set as a default). We're working to better improve the model's identification of itself though!

cassus · 9 months ago

Wow, I didn't know about this, and I can confirm that it works as you described.

km-anthropic contributor · 9 months ago

No worries! It definitely is a bit confusing.

huyhandes · 9 months ago
Hi! Sometimes the model gets confused when it sees a different model string above. Instead I recommend clicking ctrl+O to deterministically find out what model was called. Here's a screenshot: <img alt="Image" width="1778" height="452" src="https://private-user-images.githubusercontent.com/209709241/517494327-9f52b209-a4e8-45e0-9ea9-899039a4de69.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjQwNTI3MDEsIm5iZiI6MTc2NDA1MjQwMSwicGF0aCI6Ii8yMDk3MDkyNDEvNTE3NDk0MzI3LTlmNTJiMjA5LWE0ZTgtNDVlMC05ZWE5LTg5OTAzOWE0ZGU2OS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUxMTI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MTEyNVQwNjMzMjFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02YjgwYjMzOGYwZjE1NDU2ZDg4ODI2YzA3MGYyMzhiNjEzMWQ5Y2Q5YjQ5YTZmNDJjMjI3OGY3YmJiNjdiOGQwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.iQ6i7IvETEk6sD29XibN0xnTXGbwiIawW6V3qdUTEIY"> Although the model says it's haiku, you can see the sampled model is sonnet (this is in Plan Mode, where it's automatically set as a default). We're working to better improve the model's identification of itself though!

So the workflow now is

claude --model haiku -> shift-tab to cycle to plan mode -> Let's go
github-actions[bot] · 9 months 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.