You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[TUI] /model in Plan mode updates Default globally and changes Medium to High #38236
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-terra with Medium reasoning.
Press Shift+Tab to enter Plan mode.
Run /model while Plan mode is active.
Select gpt-5.6-sol with 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.
The state you ended with falls out of two separate settings that /model doesn't bridge (main @ 1f41cc5):
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.
Activity
jdcodes1 commentedon Aug 18, 2026
The state you ended with falls out of two separate settings that
/modeldoesn't bridge (main@ 1f41cc5):/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.fix(agents-details): show the real two-pass /model flow in the Codex …