TUI /statusline exposes duplicate context-remaining options that render the same value

Resolved 💬 1 comment Opened Apr 16, 2026 by zhatlas Closed Apr 16, 2026

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?

  1. Run Codex CLI 0.121.0.
  2. Open /statusline.
  3. Notice that both context-remaining and context-remaining-percent are listed as separate options with the same description.
  4. Enable both options.
  5. 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 /statusline and 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.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗