TUI /statusline exposes duplicate context-remaining options that render the same value
What version of Codex CLI is running?
codex-cli 0.121.0
What subscription do you have?
Plus
Which model were you using?
gpt-5.4
What platform is your computer?
Linux 6.6.87.2-microsoft-standard-WSL2 x86_64 x86_64
What terminal emulator and version are you using (if applicable)?
Windows Terminal
What issue are you seeing?
The /statusline picker exposes both context-remaining and context-remaining-percent as separate user-selectable options, but in the current implementation they render the exact same footer text: Context {remaining}% left.
Because they are separate IDs in the picker, both can be enabled at the same time, which produces duplicate footer output such as:
Context 100% left · Context 100% left
From a user perspective this looks like a bug, or at least an uncollapsed compatibility alias that leaked into the UI.
What steps can reproduce the bug?
- Run Codex CLI 0.121.0.
- Open
/statusline. - Notice that both
context-remainingandcontext-remaining-percentare listed as separate options with the same description. - Enable both options.
- Return to the main TUI and observe the footer.
What is the expected behavior?
Only one user-facing option should be shown for this feature, unless the two options intentionally render different information.
Reasonable fixes would be either:
- keep only one visible option in
/statuslineand treat the other as a backward-compatible config alias, or - make the two options render distinct output if both are intended to remain user-facing.
Additional information
This seems adjacent to #17438, but this report is specifically about duplicate selectable options and duplicate footer rendering, not the earlier meter-vs-percent regression.
I also confirmed this in the current codebase: StatusLineItem::ContextRemaining and StatusLineItem::ContextRemainingPercent are separate selectable IDs, but both map to the same rendered string branch in the status-line renderer.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗