[TUI] /model in Plan mode updates Default globally and changes Medium to High
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
- Start a Codex CLI session in Default mode using
gpt-5.6-terrawith Medium reasoning. - Press Shift+Tab to enter Plan mode.
- Run
/modelwhile Plan mode is active. - Select
gpt-5.6-solwith Medium reasoning. - 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.
1 Comment
The state you ended with falls out of two separate settings that
/modeldoesn't bridge (main@ 1f41cc5d92):/modelare 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 togpt-5.6-sol, Medium.plan_mode_reasoning_effort, its own config key andUpdatePlanModeReasoningEffortevent) that the/modelpicker 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
/modelis invoked with Plan mode active, either writeplan_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 (OpenPlanReasoningScopePromptmachinery) 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.