Gemini CLI PR stops wiping terminal scrollback: one escape code was purging history

diegogodinezr · ghdev · 2026-10-17

A PR to google-gemini/gemini-cli fixes terminal scrollback being lost during interactive sessions. The root cause: refreshStatic used ansiEscapes.clearTerminal, whose \x1b[3J (ED 3) instructs terminal emulators to purge the saved scrollback buffer — so output disappeared on window resizes or when toggling expanded output (Ctrl+O), and standard buffer mode is the default.

The fix swaps in non-destructive viewport clearing: \x1b[2J erases only the visible viewport plus cursor-to-origin, with \x1b[3J no longer emitted. The rest of the refresh pipeline (stdout corking, DEC synchronized output, width-change debounce) is unchanged. Trade-off: re-rendered <Static> history now appends after existing scrollback, so earlier renders at a previous terminal width may persist.

Original post →

More from coding & agent

coding & agent channel →