How to fix Claude Code flickering in the terminal
Stop Claude Code flickering or jumping scroll with /tui fullscreen, CLAUDE_CODE_NO_FLICKER, or synchronized output. Fixes for tmux, VS Code and Windows.
- CLI
- 0.2.17
- Preview ref
- a2c45c8
TL;DR
Run this inside Claude Code:
/tui fullscreenIt switches to Claude Code's fullscreen renderer, which Anthropic describes as flicker-free. The conversation relaunches intact and the setting is saved for future sessions. To go back, run /tui default.
Other fixes, depending on the cause:
- Flicker only, and your terminal supports synchronized output: start with
CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 claude. This keeps the classic renderer. - You'd rather set an environment variable:
CLAUDE_CODE_NO_FLICKER=1 claudeturns on fullscreen rendering at startup. - Under tmux: upgrade tmux, or run Claude Code in its own terminal tab.
- Leftover fragments on Windows Terminal:
CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT=1.
Fullscreen rendering is a research preview in Anthropic's docs, read on 26 October 2026, so details may change.
The problem
The symptoms are familiar. The screen flashes as tool output streams in. The scroll position jumps to the top while Claude is working. In a long session the terminal gets slower and the flashing gets worse. It's most noticeable in terminals where drawing speed is the bottleneck. Anthropic names the VS Code integrated terminal, tmux and iTerm2.
The cause is the classic renderer redrawing large parts of the screen on each update. The fixes either change how Claude Code draws or tell the terminal to apply each update in one go.
Fix 1: Switch Claude Code to fullscreen rendering
/tui fullscreenFullscreen rendering draws on the terminal's alternate screen buffer, the way vim or htop do, and only renders messages that are visible. That sends less data per update, keeps memory flat in long conversations, and adds mouse support. "Fullscreen" refers to taking over the drawing surface. It works at any window size.
What carries over when it relaunches: the conversation as shown on screen, your permission mode and effort level, the model you picked with /model, and flags such as --allowed-tools and --agent.
Check which renderer is active:
/tuiIf the input box stays fixed at the bottom while Claude works, fullscreen is on.
What changes in fullscreen mode
Because the conversation lives in the alternate screen buffer, your terminal's own scrollback and search don't see it:
| Before | In fullscreen |
|---|---|
Cmd+f or tmux search | Ctrl+o for transcript mode, then / to search |
| Native click-and-drag to copy | In-app selection, copied on mouse release |
| Terminal scrollback | Mouse wheel, PgUp and PgDn inside Claude Code |
In transcript mode, [ writes the whole conversation into your terminal's native scrollback, and v opens it in your editor.
If mouse capture gets in the way, keep the renderer and turn off the mouse:
CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claudeFix 2: Turn on synchronized output and keep the classic renderer
Some terminals support synchronized output, which applies each redraw as one update, but don't report it in a way Claude Code detects. Anthropic gives Emacs eat as an example. For those, force it:
CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 claudeThis stops the flicker without changing renderers, so native scrollback and selection keep working.
Fix 3: Set CLAUDE_CODE_NO_FLICKER
To turn on fullscreen rendering with an environment variable:
CLAUDE_CODE_NO_FLICKER=1 claudePowerShell:
$env:CLAUDE_CODE_NO_FLICKER = "1"; claudeOr in settings.json:
{
"env": {
"CLAUDE_CODE_NO_FLICKER": "1"
}
}Fix Claude Code flickering in tmux
Anthropic's fullscreen page says tmux releases through the 3.6 series don't implement synchronized output, so redraws can flicker more under tmux than directly in a terminal. The changelog for v2.1.201 also lists a fix for flicker under tmux 3.4 and later by enabling synchronized output. If you still see flicker:
-
Update Claude Code with
claude update. -
Upgrade tmux to a current release.
-
Try fullscreen rendering. For mouse wheel scrolling inside it, enable tmux mouse mode:
# ~/.tmux.conf set -g mouse on -
If it persists, run Claude Code in its own terminal tab outside tmux.
Don't use fullscreen rendering with iTerm2's tmux integration mode (tmux -CC). Anthropic's docs say the mouse wheel does nothing there and double-click can corrupt the terminal state. Regular tmux inside iTerm2 works.
Fix flickering in the VS Code terminal
The VS Code integrated terminal is one of the terminals Anthropic names as throughput-limited. Fullscreen rendering is the main fix. For native selection while the mouse is captured, hold Shift, or Option on macOS with terminal.integrated.macOptionClickForcesSelection enabled.
Fix leftover text on Windows Terminal
If old fragments stay on screen until you resize the window, the terminal is merging Claude Code's incremental updates incorrectly. Anthropic names Windows Terminal and other ConPTY-backed hosts. Repaint every cell instead:
$env:CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT = "1"
claudeFor a one-off redraw, press Ctrl+L. It keeps the conversation and your input.
Following the session somewhere other than the terminal
Some flicker reports come from watching a long run in a small terminal, often over SSH from another device. If the goal is to keep an eye on the session rather than type in the TUI, a different view helps more than tuning the renderer.
If you want to follow and steer Claude Code from your phone or a browser instead of a terminal window, Happier is an open-source app that lets you run and orchestrate Claude Code, Codex and other agents cross-device, from your phone, desktop or the web. It shows the session as a transcript of messages and tool calls in its own interface, so the terminal renderer isn't involved on that device. When you do want the real Claude TUI, Happier's Claude unified terminal option can run it in tmux or zellij. That's opt-in and applies to new sessions.
Setup is in Run Happier from your phone. Happier is on GitHub, you can download it here, and there's a Discord.
Troubleshooting
Cannot switch renderers in this session
Claude Code prints the reasons and doesn't switch. In screen reader mode it always uses the classic renderer, except in attached background sessions. Start a new session with CLAUDE_CODE_NO_FLICKER=1 if the reason allows it.
A warning that the fullscreen renderer didn't finish starting
Claude Code counts failed fullscreen starts and falls back to the classic renderer. After a failed start it still honors CLAUDE_CODE_NO_FLICKER but not the saved setting. Update Claude Code and your terminal, then try /tui fullscreen again.
Copy and paste stopped working
Fullscreen captures the mouse. Hold your terminal's selection key (Option in iTerm2, Fn in Terminal.app, Shift in most others), or set CLAUDE_CODE_DISABLE_MOUSE=1.
FAQ
Why does Claude Code flicker?
The classic renderer redraws large parts of the screen as output streams in. Terminals that draw slowly, or that apply partial updates, show that as flashing or jumping.
Does fullscreen mode change how Claude works?
No. It changes how the CLI draws. The model, permissions and tools are the same.
Does fullscreen rendering use less memory?
Anthropic's docs say it only keeps visible messages in the render tree, so memory stays constant regardless of conversation length.
Get Happier
Happier is an open-source app that lets you run and orchestrate Claude Code, Codex and other agents cross-device, from your phone, desktop or the web.