TUI: cursor jank during streaming/scroll + occasional bottom-pane drift

Open 💬 3 comments Opened Feb 8, 2026 by anujsaharan

What version of Codex CLI is running?

codex-cli 0.99.0-alpha.9

What subscription do you have?

Pro

Which model were you using?

gpt-5.2-codex

What platform is your computer?

Linux 6.17.0-12-generic x86_64

What terminal emulator and version are you using (if applicable)?

Gnome Terminal

What issue are you seeing?

While the output is streaming, the terminal cursor visibly jumps/blinks during scroll updates, and bottom-pane anchoring looks unstable under heavy text output streams.

Proposed fix

  • Hide the terminal cursor while writing wrapped output into scrollback.
  • Split flex allocation behavior:
  • FitContent for desired_height()
  • FillAssignedExtent for render() / cursor_pos()

What steps can reproduce the bug?

  1. Send a long streaming prompt (e.g. "write a 50 stanza poem").
  2. Watch cursor + bottom pane as output scrolls.

What is the expected behavior?

Expected
Cursor stays visually stable and composer/footer remain anchored.

Actual
Visible cursor jank during streaming/scroll and occasional anchoring instability.

View original on GitHub ↗

3 Comments

anujsaharan · 6 months ago

opened a PR here if helpful: https://github.com/openai/codex/pull/11064

oxysoft · 5 months ago

Related feature request: #14045\n\nThis bug is about anchoring instability/jank, while #14045 is the deliberate UX behavior request: keep the composer inline at the bottom of the chat normally, but make it sticky to the viewport bottom when the user scrolls upward through history.

Jurio0304 · 2 months ago

I ran into the same issue during long terminal sessions, especially when using Codex over SSH and inside tmux.

I implemented a lightweight community fork called Codex Sticky that adds this sticky-on-scroll composer behavior:

https://github.com/Jurio0304/codex-sticky

When scrolling back through older transcript content, the composer remains reachable at the bottom of the terminal. The fork is installed side by side as codex-sticky, so it does not overwrite the official codex command.

It is currently intended as a small, unofficial workaround for Linux x86_64 users while keeping the experience close to upstream. Feedback is very welcome.