v2.1.89 regression: flicker-free rendering destroys terminal scrollback
v2.1.89 introduced "flicker-free alt-screen rendering with virtualized scrollback" (CLAUDE_CODE_NO_FLICKER=1), but this behavior appears to be enabled by default, causing terminal scrollback to be destroyed after ~2 pages of output.
Observed behavior
When Claude Code output exceeds the visible terminal height (~24 rows), the terminal is fully re-rendered — the startup banner and conversation are reprinted from scratch. This destroys existing scrollback content. The startup mascot/banner remains visible at the top because it's re-rendered each time, but intermediate content is lost.
Evidence
I ran identical tests across three configurations using PTY sessions (24 rows × 120 cols):
Test: Two consecutive prompts — "print numbers 1-100" then "print alphabet A-Z"
| Configuration |
Result |
| v2.1.87 |
Single banner, linear output: header → 1-100 → A-Z. Scrollback preserved. |
| v2.1.89 (default) |
Banner appears 3 times in output. CC re-renders the entire conversation when content exceeds screen height. Scrollback destroyed on each re-render. |
v2.1.89 + CLAUDE_CODE_NO_FLICKER=0 |
Same as v2.1.87 — single banner, linear output, scrollback preserved. |
v2.1.89 default output (truncated for clarity)
▐▛███▜▌ Claude Code v2.1.89 ← 1st render
11
...
85
▐▛███▜▌ Claude Code v2.1.89 ← 2nd render (re-render, scrollback destroyed)
❯ print the numbers from 1 to 100...
1
...
83
▐▛███▜▌ Claude Code v2.1.89 ← 3rd render (re-render again)
1
...
100
❯ now print the alphabet...
1. A
...
26. Z
Reproduction
- Install Claude Code v2.1.89
- Open any terminal (iTerm2, xterm.js, etc.)
- Start a session and ask for output longer than the terminal height
- Scroll up — only ~2 pages of content are available
Workaround: Set CLAUDE_CODE_NO_FLICKER=0 in environment or Claude Code settings.
Environment
- macOS (Darwin 25.4.0, arm64)
- Claude Code v2.1.89
- Tested in: iTerm2, xterm.js (via Tauri WebView)
- Both terminals exhibit the same behavior
v2.1.89 regression: flicker-free rendering destroys terminal scrollback
v2.1.89 introduced "flicker-free alt-screen rendering with virtualized scrollback" (
CLAUDE_CODE_NO_FLICKER=1), but this behavior appears to be enabled by default, causing terminal scrollback to be destroyed after ~2 pages of output.Observed behavior
When Claude Code output exceeds the visible terminal height (~24 rows), the terminal is fully re-rendered — the startup banner and conversation are reprinted from scratch. This destroys existing scrollback content. The startup mascot/banner remains visible at the top because it's re-rendered each time, but intermediate content is lost.
Evidence
I ran identical tests across three configurations using PTY sessions (24 rows × 120 cols):
Test: Two consecutive prompts — "print numbers 1-100" then "print alphabet A-Z"
CLAUDE_CODE_NO_FLICKER=0v2.1.89 default output (truncated for clarity)
Reproduction
Workaround: Set
CLAUDE_CODE_NO_FLICKER=0in environment or Claude Code settings.Environment