Plan mode does not ask for model spec

Resolved 💬 5 comments Opened Mar 11, 2026 by smileBeda Closed Mar 15, 2026
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

What version of Codex CLI is running?

0.114.0

What subscription do you have?

PRO, PLUS

Which model were you using?

gpt-5.4

What platform is your computer?

Darwin 25.3.0 arm64 arm

What terminal emulator and version are you using (if applicable)?

Terminal.app

What issue are you seeing?

This https://github.com/openai/codex/discussions/10628#discussioncomment-15940645 is not working since at least v0.113.0
After command /plan nothing else is asked for.

What steps can reproduce the bug?

Open codex CLI and /plan, hit enter.

What is the expected behavior?

According that comment it should ask what model and reasoning to use as override.

Additional information

We probably can set it manually in config plan_mode_reasoning_effort, but its still broken.

View original on GitHub ↗

5 Comments

github-actions[bot] contributor · 5 months ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #13206

Powered by Codex Action

smileBeda · 5 months ago

That ticket is long superseded by https://github.com/openai/codex/discussions/10628#discussioncomment-15940645as far I understand and as such actually should be closed

howardpen9 · 5 months ago

I looked into this — the root cause is that /plan only calls set_collaboration_mask() to switch into Plan mode, but never triggers the model/reasoning selection popup afterward.

The model selection prompt ("Apply to Plan mode override" vs "Apply to global default") currently only appears when you're already in Plan mode and manually run /model with a different reasoning effort. So the two-step flow works (/plan → /model), but /plan alone doesn't prompt for model spec as users expect.

Proposed fix: Call open_model_popup() after set_collaboration_mask(mask) in the /plan handler (chatwidget.rs), so users get the model/reasoning selection in one step:

SlashCommand::Plan => {
    if !self.collaboration_modes_enabled() { /* ... */ }
    if let Some(mask) = collaboration_modes::plan_mask(self.models_manager.as_ref()) {
        self.set_collaboration_mask(mask);
        self.open_model_popup(); // prompt for model spec right after entering Plan mode
    } else {
        self.add_info_message("Plan mode unavailable right now.".to_string(), None);
    }
}

This keeps the existing /model flow intact while making /plan a single-step entry point. Happy to open a PR if this approach sounds right.

charley-oai contributor · 5 months ago

I think running /model while in plan mode and selecting "Apply to Plan mode override" in the UI will auto-switch to that reasoning effort every time you switch to plan mode?
<img width="902" height="134" alt="Image" src="https://github.com/user-attachments/assets/734a5bc1-a603-447f-b4db-00513006177f" />

And the history will show this change when you shift+tab or run /plan (if the reasoning effort is changed as a result of the mode switch):
<img width="915" height="109" alt="Image" src="https://github.com/user-attachments/assets/b3788f0f-1ac3-470e-95e8-2ac2d9fee761" />

So I'm wondering why you want the plan switch flow to always pull up the model picker, if a reasonable default matching the user's preference can be chosen (set-it-and-forget-it)?

charley-oai contributor · 5 months ago

Closing for now based on the above comment, but please let us know if we are misunderstanding!