[TUI] /model in Plan mode updates Default globally and changes Medium to High

Open 💬 1 comment Opened Aug 12, 2026 by rajagiriravi

What version of Codex CLI is running?

codex-cli 0.146.0

What platform are you using?

Windows, Codex CLI TUI.

What issue are you seeing?

Changing the model with /model while Plan mode is active does not preserve separate Default- and Plan-mode settings.

Starting state:

  • Default mode: gpt-5.6-terra, Medium
  • Plan mode entered with Shift+Tab

After running /model in Plan mode and selecting gpt-5.6-sol, Medium, the resulting state is:

  • Default mode: gpt-5.6-sol, Medium
  • Plan mode: gpt-5.6-sol, High

The requested Sol/Medium selection is applied to Default mode, while Plan mode retains or introduces a High reasoning override. This makes it impossible through the observed flow to configure Default as Terra/Medium and Plan as Sol/Medium.

Steps to reproduce

  1. Start a Codex CLI session in Default mode using gpt-5.6-terra with Medium reasoning.
  2. Press Shift+Tab to enter Plan mode.
  3. Run /model while Plan mode is active.
  4. Select gpt-5.6-sol with Medium reasoning.
  5. Cycle between Default and Plan modes and inspect the model/reasoning shown for each.

Expected behavior

Either:

  • the selection made while Plan mode is active is saved as the Plan-mode override, leaving Default mode at Terra/Medium; or
  • the UI clearly asks whether the selection applies to the Plan override or the global Default setting, and respects that choice.

Expected final state for this reproduction:

  • Default mode: Terra/Medium
  • Plan mode: Sol/Medium

Actual behavior

  • Default mode changes to Sol/Medium.
  • Plan mode becomes Sol/High.

Additional context

Related issue #14379 states that /model in Plan mode should offer an “Apply to Plan mode override” path. The behavior above suggests that the scope is ambiguous, the Plan override is not being saved, or a separate Plan reasoning override is unexpectedly replacing Medium with High.

View original on GitHub ↗

1 Comment

jdcodes1 · 9 days ago

The state you ended with falls out of two separate settings that /model doesn't bridge (main @ 1f41cc5d92):

  • The model + effort picked in /model are persisted as the default-mode session settings (model, model_reasoning_effort) — there's no Plan-mode branch in the selection handler, so running it from Plan mode still writes the global default. That's your Default flipping to gpt-5.6-sol, Medium.
  • Plan mode's effort is a distinct setting (plan_mode_reasoning_effort, its own config key and UpdatePlanModeReasoningEffort event) that the /model picker never writes — so Plan mode kept its own value (High), silently discarding the Medium you chose while standing in Plan mode.

So nothing is "corrupted" — the picker just has no notion of which mode you're in. Fix shape: when /model is invoked with Plan mode active, either write plan_mode_reasoning_effort (and scope the model change per-mode if that's the intended data model), or reuse the existing plan-reasoning scope prompt (OpenPlanReasoningScopePrompt machinery) to ask which scope the selection applies to. Either resolves the surprise; today's silent global write from inside Plan mode is the worst of both.