OmniscioGuidesClaude Code terminal rendering
Claude Code terminal flickering and scrolling: what changes each symptom
Claude Code draws its interface in two different ways, and which one you are in decides whether the screen flashes, whether the view jumps to the top and whether your terminal's own search can find anything. This page takes each symptom, names the cause Anthropic documents for it, gives the switch that changes it, and lists which reports are still open. Every claim names the page or issue it comes from, read on the date shown.
Sources read October 26, 2026. By the Omniscio team. Updated .
Which symptom is yours?
Pick the line that matches what you see. Each section names the cause, the steps that change it, and the release notes behind them.
- The screen flashes while Claude works
- The view jumps to the top, or follows output while you read
- The scrollback is gone, or the terminal's search finds nothing
- The wheel does nothing, moves one line, or steps through prompt history
- You run Claude Code in tmux
- Rows are stale or in the wrong place on Windows
- Every switch in one table
- Which reports are still open
Two names run through the page. The classic renderer draws in your terminal's normal screen and leaves the conversation in the terminal's scrollback. The fullscreen renderer takes over the alternate screen buffer, the way vim does, and draws only the messages that are visible. Anthropic calls fullscreen rendering a research preview, and it documents that the starting renderer depends on your setup and your Claude Code version.
The screen flashes while Claude works
What it means. The terminal is asked to redraw more than the part that changed, so rows from earlier output flash again while the status line, the timer and tool results update. Two reports describe the mechanism the same way. Issue 769, filed against Windows Terminal on April 12, 2025, says the whole buffer redraws with each update of the status indicator. Issue 10794, filed against VS Code on macOS on November 1, 2025, says the whole buffer including scrollback is redrawn on every status update, and reports that VS Code itself crashes after ten to twenty minutes.
Anthropic's fullscreen page names the terminals where rendering throughput is the bottleneck: the VS Code integrated terminal, tmux and iTerm2. On the same page, flicker and a scroll position that jumps to the top are the two symptoms fullscreen rendering is documented to address.
What to do
- Run
/tui fullscreeninside the conversation. Claude Code saves thetuisetting and relaunches into fullscreen with the conversation intact, so you can switch mid-session. Run/tuiwith no argument to see which renderer is active. - To try it without saving a setting, start Claude Code with
CLAUDE_CODE_NO_FLICKER=1. The variable turns fullscreen on for that process, and the fullscreen page documents it as the other way to enable the mode. - If flicker is the only problem, and your terminal supports synchronized output without being detected, Anthropic names Emacs
eatas the example, setCLAUDE_CODE_FORCE_SYNC_OUTPUT=1. The environment variable page says it has no effect under tmux, and that unlikeCLAUDE_CODE_NO_FLICKERit does not change the renderer. - In VS Code, Cursor or Devin Desktop, run
/terminal-setup. Anthropic's terminal page says it setsterminal.integrated.gpuAccelerationto"off"to prevent garbled text in the integrated terminal, and that setting it back to"auto"and reloading the window undoes that change. - Update Claude Code. The changelog records that v2.1.282 fixed a blank screen flashing before the first frame when starting in fullscreen mode.
- If the screen looks garbled or partly blank, press
Ctrl+Lto redraw it, from v2.1.280 on. Anthropic's fullscreen page says the redraw keeps the conversation and your input in place, and thatCmd+Kdoes the same when your terminal passes it through.
Issues 769 and 10794 are both open on October 26, 2026, so read the fullscreen switch as the documented workaround rather than a report that closed them. Where the page says a change shipped in a version, that version is named in the sentence.
Where we read this
Anthropic's fullscreen rendering page, terminal configuration page and environment variable reference, read on October 26, 2026 against Claude Code v2.1.310. The two reports are issue 769 and issue 10794, re-read the same day. The v2.1.282 note is from Anthropic's changelog.
The view jumps to the top, or follows output while you read
What it means. Anthropic's fullscreen page lists a scroll position that jumps to the top while Claude is working as one of the two problems fullscreen rendering addresses, and it does not name the mechanism inside the classic renderer. What the page does say is that the classic renderer keeps the conversation in your terminal's scrollback, while fullscreen draws it on the alternate screen and handles scrolling itself. The reports describe two versions of the same experience: the view returns to the top on its own, or it pulls you back to the newest output while you are reading older rows.
Issue 826, filed by ocontant against iTerm2 on macOS on April 19, 2025, reports the terminal scrolling to the top and back on each character, with the screen flashing as it goes. It is open. Issue 3648, filed by JacobGoldenArt on July 16, 2025, reported the Cursor and VS Code built-in terminals scrolling on their own; it was closed on December 17, 2025, as completed. Issue 36582, filed by octoduchilli on March 20, 2026, reported the view returning to the top once the conversation is long, and was closed as a duplicate on October 22, 2026.
What to do
- Run
/tui fullscreen. The input box then stays fixed at the bottom and Claude Code handles scrolling inside the app, which is the change Anthropic documents for this symptom. - While you are scrolled up, auto-follow pauses. A dim header row at the top shows the most recent prompt that scrolled past, and a Jump to bottom button shows how many messages arrived while you were away.
- Return to the latest output with
Ctrl+End, which also turns auto-follow back on, or by clicking Jump to bottom, or by scrolling to the bottom with the wheel. - Jump to the start of the conversation with
Ctrl+Home. Move half a screen withPgUpandPgDn. - To stop the view following new output at all, open
/configand turn Auto-scroll off. Anthropic's page notes that permission prompts and other dialogs still scroll into view. - On a keyboard without dedicated
PgUp,PgDn,HomeorEndkeys, holdFnwith an arrow key. Anthropic notes thatCtrl+Fn+→does not reach Claude Code on macOS, and that the scroll actions can be rebound. - Update Claude Code. The changelog records that v2.1.284 fixed the view jumping to the previous message or to the bottom when a reply finished streaming while you were scrolled up, and that v2.1.299 fixed
/btwjumping the transcript to the bottom when asked while scrolled up.
Issue 826 remains open, so the switch and the shortcuts are what the documentation offers today, not a report that the problem ended. Every shortcut here is from Anthropic's fullscreen page and the keybindings reference, which lists scroll:top, scroll:bottom, scroll:pageUp and scroll:pageDown as rebindable actions.
Where we read this
Anthropic's fullscreen rendering page for auto-follow, the jump shortcuts and the Auto-scroll setting; the keybindings reference for the action names; and the changelog for the v2.1.284 and v2.1.299 notes. All read on October 26, 2026. The reports are issue 826, issue 3648 and issue 36582.
The scrollback is gone, or the terminal's search finds nothing
What it means. Fullscreen rendering draws the conversation on the terminal's alternate screen buffer, the way vim and htop do. That buffer is not the terminal's scrollback, so Cmd+F and tmux's own search cannot see the conversation. Anthropic's page lists this as a change of behaviour: the terminal's click-and-drag selection and its search stop reaching the conversation, and Claude Code supplies its own.
Two earlier reports are about scrollback being damaged rather than hidden. Issue 41965, filed by sstraus on April 1, 2026, reported that v2.1.89 turned flicker-free rendering on by default and that the re-render destroyed the terminal's scrollback; it was closed as a duplicate on April 17, 2026. Issue 28077, filed by SunkyYang on February 24, 2026, asked for a way to scroll back through the whole conversation in the CLI, and was closed as completed on August 17, 2026.
What to do
- Press
Ctrl+Oto open transcript mode. It gives the conversationless-style navigation, and/opens search withnandNto move between matches. - Press
[in transcript mode to write the whole conversation into the terminal's native scrollback, with tool output expanded. Anthropic notes that it lasts until you leave transcript mode, so a long session may pause for a moment while it happens. - Press
vinstead to write the conversation to a temporary file and open it in$VISUALor$EDITOR. - To keep the terminal's own scrollback and search, run
/tui defaultfor the classic renderer. Anthropic's environment variable page also documentsCLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1, which forces the classic renderer regardless of the saved setting. - Update Claude Code. The changelog records that v2.1.292 fixed a full-screen clear on every window resize and on
Ctrl+Lwhen iTerm2 is detected, which it says may be what filled iTerm2's scrollback with stale pages, and that v2.1.284 fixed fullscreen rendering erasing terminal output above the session when[writes the conversation to scrollback on macOS and Linux.
The clear-screen keys changed between releases. Anthropic's fullscreen page records that before v2.1.280, starting at v2.1.260, Ctrl+L cleared the screen in fullscreen rendering, and that before v2.1.238 pressing Ctrl+L twice within two seconds ran /clear.
Where we read this
Anthropic's fullscreen rendering page for transcript mode, the [ and v keys and the clear-screen history; the environment variable reference for CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN; and the changelog for v2.1.292 and v2.1.284. Read October 26, 2026. The reports are issue 41965 and issue 28077.
The wheel does nothing, moves one line, or steps through prompt history
What it means. In fullscreen rendering Claude Code handles the mouse itself, so the wheel only scrolls the conversation when the terminal forwards mouse events to it. When the terminal keeps the wheel, or when it reports each notch without any amplification, the conversation moves a line at a time or not at all. When the terminal sends arrow keys instead of wheel events, the wheel moves through your prompt history.
Issue 65833, filed by tatuliusi on June 6, 2026 against a PyCharm embedded terminal on WSL2, reports that the wheel stopped scrolling the conversation at v2.1.150, that it sends arrow keys instead, and that a message at the bottom of the interface said so. The report is open. Anthropic's fullscreen page separately documents that the JetBrains 2025.2 terminal has scroll-wheel bugs that produce spurious arrow keys, that Claude Code detects and mitigates them at runtime, and that upgrading to 2025.3 or later gives the best scroll experience.
What to do
- In iTerm2, turn on Settings → Profiles → Terminal → Enable mouse reporting. Anthropic's page says the same setting is needed for click-to-expand and text selection.
- In tmux, add
set -g mouse onto~/.tmux.confand reload. Without it the wheel events go to tmux rather than to Claude Code;PgUpandPgDnwork either way. - If each notch moves too few lines, run
/scroll-speedand scroll while the dialog is open to feel the change. Anthropic's page says the dialog steps in whole numbers up to 10, offers quarter steps down to 0.25 on terminals that support them, and is not available in the JetBrains IDE terminal. - Or set
CLAUDE_CODE_SCROLL_SPEEDto a multiplier. The environment variable page says it accepts any positive value up to 20, including fractions below 1, and that it is ignored in the JetBrains IDE terminal, where Claude Code applies its own scroll handling. - To stop the acceleration during a fast spin, set
wheelScrollAccelerationEnabledtofalseinsettings.json. The fullscreen page says the setting needs Claude Code v2.1.174 or later, and the settings reference lists the key with a default oftrue. - If the wheel works but clicks interfere with your selection, set
CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1. The environment variable page says it needs v2.1.195 or later, and that it keeps wheel scrolling while turning off click, drag and hover handling. - To hand the mouse back to your terminal entirely, set
CLAUDE_CODE_DISABLE_MOUSE=1. Anthropic's page says keyboard scrolling still works, and that the variable takes precedence when both are set. - For a one-off native selection, hold your terminal's key while you drag:
Fnin Terminal.app,Optionin iTerm2, andShiftin VS Code, Cursor, Devin Desktop and most other terminals.
Issue 70539, filed by janinko on June 24, 2026, asked for exactly the split that CLAUDE_CODE_DISABLE_MOUSE_CLICKS now provides and was closed as completed on August 17, 2026. Issue 65833 is still open, so the JetBrains mitigation is the documented behaviour today, not a closed report.
Where we read this
Anthropic's fullscreen rendering page for mouse capture, /scroll-speed, iTerm2 and tmux; the environment variable reference for the scroll and mouse variables; and the settings reference for wheelScrollAccelerationEnabled. Read October 26, 2026. The reports are issue 65833 and issue 70539.
You run Claude Code in tmux
What it means. Anthropic's fullscreen page lists three caveats for tmux. Mouse wheel scrolling needs tmux's mouse mode, or the wheel events go to tmux instead of Claude Code. Fullscreen rendering is incompatible with iTerm2's tmux integration mode, the mode you enter with tmux -CC, and the page says not to enable fullscreen there. tmux releases through the 3.6 series do not implement synchronized output, so you may see more flicker during redraws than when running Claude Code directly in your terminal.
The tui setting entry in Anthropic's settings reference adds that under tmux -CC, or over SSH to Claude Code running on Windows, Claude Code keeps the classic renderer unless you set CLAUDE_CODE_NO_FLICKER=1. Regular tmux inside iTerm2, without -CC, is documented to work.
What to do
- Add
set -g mouse onto~/.tmux.confand reload your config. Claude Code prints a one-time hint at startup if it detects tmux with mouse mode off. - Upgrade tmux to the newest release. If flicker continues under tmux, run Claude Code in its own terminal tab outside tmux, which is Anthropic's other suggestion on the same page.
- Do not enable fullscreen rendering inside
tmux -CC. Anthropic's page says the alternate screen buffer and mouse tracking do not work correctly there. - If the fullscreen session will not start, run
/tuiwith no argument. While a failed start is the reason you are in the classic renderer, theCurrent rendererline says so.
Claude Code's fullscreen renderer didn't finish starting last time on this machineClaude Code's fullscreen renderer has repeatedly failed to start on this machineAnthropic counts a start as successful once the first frame is drawn and the session has either stayed up for ten seconds or been ended with /exit, Ctrl+C or Ctrl+D. After two failed starts the classic renderer is kept until Claude Code is updated or /tui fullscreen is run again.
Where we read this
Anthropic's fullscreen rendering page, and the settings reference entry for tui, both read on October 26, 2026.
Rows are stale or in the wrong place on Windows
What it means. Fullscreen rendering sends only the cells that changed between frames. Anthropic's page says some terminals, most commonly Windows Terminal and other hosts backed by ConPTY, combine those positioned writes incorrectly and leave fragments of earlier output on screen until the window is resized.
What to do
- Set
CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT=1so every cell is repainted on every frame instead of sending incremental updates. - On Windows PowerShell, set it for the session with
$env:CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT = "1"before startingclaude. - On macOS or Linux, start with
CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT=1 claude. - Background sessions and agent view already enable full repaint automatically on Windows, so Anthropic says the variable is only needed for an interactive fullscreen session you started directly.
If a stray >0q appears at startup or >4m after exit, Anthropic's troubleshooting page attributes the text to terminals built on a VTE library older than 0.53 and says updating Claude Code to v2.1.301 or later makes it skip those sequences when it identifies such a terminal.
Where we read this
Sources: the troubleshooting section of Anthropic's fullscreen page and its troubleshooting page, read October 26, 2026.
Every switch in one table
Each row names the switch exactly as Anthropic writes it, what it changes, and the page that documents it. Where Anthropic states a version, the version is in the row; where it states none, the row says so.
| Switch | What it changes | Documented at | Version |
|---|---|---|---|
/tui fullscreen | Switches to fullscreen rendering, saves the tui setting and relaunches with the conversation intact. | fullscreen page | none stated |
/tui default | Returns to the classic renderer and saves that choice. | fullscreen page | none stated |
tui | The setting behind /tui, with "fullscreen" or "default". | settings reference | none stated |
CLAUDE_CODE_NO_FLICKER=1 | Turns fullscreen rendering on for one session, before Claude Code starts. | fullscreen page, environment variables | none stated |
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 | Forces the classic renderer and its native scrollback, ahead of the saved setting. | environment variables | none stated |
CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 | Uses synchronized output where the terminal supports it but does not report it. No effect under tmux. | terminal configuration, environment variables | none stated |
CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT=1 | Repaints every cell on every frame when fullscreen rows come out stale or misplaced. | fullscreen page, environment variables | none stated |
CLAUDE_CODE_SCROLL_SPEED | Multiplies the mouse-wheel scroll distance. Positive values up to 20, fractions allowed. Ignored in the JetBrains terminal. | fullscreen page, environment variables | none stated |
/scroll-speed | Sets the same wheel multiplier from a dialog, for the current session and saved to settings. Not available in the JetBrains terminal. | fullscreen page | none stated |
wheelScrollAccelerationEnabled | Turns the faster scroll during a quick wheel spin on or off. | settings reference, fullscreen page | v2.1.174 or later |
CLAUDE_CODE_DISABLE_MOUSE=1 | Turns off mouse capture so the terminal handles selection natively. Keyboard scrolling stays. | fullscreen page, environment variables | none stated |
CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1 | Keeps wheel scrolling while turning off click, drag and hover handling. | environment variables | v2.1.195 or later |
Ctrl+O | Toggles transcript mode, which carries the search and scrollback keys. | fullscreen page | none stated |
/, [, v | In transcript mode: search, write to the terminal's scrollback, open in your editor. | fullscreen page | none stated |
Ctrl+End, Ctrl+Home | Jump to the latest message and re-enable auto-follow, or to the start of the conversation. | fullscreen page, keybindings | none stated |
PgUp, PgDn | Scroll half a screen at a time. | fullscreen page | none stated |
Ctrl+L | Redraws a garbled or partly blank screen and keeps the conversation and input in place. | fullscreen page | redraws from v2.1.280; cleared the screen from v2.1.260 |
set -g mouse on | tmux's mouse mode, needed for the wheel to reach Claude Code. | fullscreen page | none stated |
/terminal-setup | In VS Code, Cursor and Devin Desktop, sets terminal.integrated.gpuAcceleration to "off" and adjusts wheel sensitivity. | terminal configuration | none stated |
Sources: the fullscreen rendering page, the environment variable reference, the settings reference and the terminal configuration page, all read on October 26, 2026.
Which reports are still open
Every row was re-read from the Anthropic repository on October 26, 2026. A closed report is named as closed, with the reason the repository gives where it gives one.
| Issue | Reporter | Filed | State on October 26, 2026 | What it reports |
|---|---|---|---|---|
| 826 | ocontant | 2025-04-19 | open, reopened, labelled duplicate | The view returns to the top of the history and back on each new character, in iTerm2 on macOS. |
| 769 | Cheffromspace | 2025-04-12 | open | The status indicator redraws the whole terminal buffer on each update, in Windows Terminal. |
| 10794 | 0xFlo | 2025-11-01 | open | Flicker in the VS Code terminal on macOS that ends in a full VS Code crash. |
| 65833 | tatuliusi | 2026-06-06 | open | The wheel sends arrow keys instead of scrolling, in PyCharm's terminal on WSL2 from v2.1.150. |
| 3648 | JacobGoldenArt | 2025-07-16 | closed 2025-12-17 as completed | The terminal scrolling on its own in the Cursor and VS Code built-in terminals. |
| 1913 | PierrunoYT | 2025-06-10 | closed 2026-10-22 as a duplicate | Terminal flickering, with a screen recording. |
| 41965 | sstraus | 2026-04-01 | closed 2026-04-17 as a duplicate | v2.1.89 turning flicker-free rendering on by default and destroying the terminal's scrollback. |
| 36582 | octoduchilli | 2026-03-20 | closed 2026-10-22 as a duplicate | The terminal returning to the top once the conversation gets long, on macOS. |
| 33367 | jkaster | 2026-03-11 | closed 2026-04-26 as a duplicate | The scroll position jumping while Claude streams output during upward scrolling. |
| 28077 | SunkyYang | 2026-02-24 | closed 2026-08-17 as completed | A request to scroll back through the whole conversation in the CLI. |
| 70539 | janinko | 2026-06-24 | closed 2026-08-17 as completed | A request for a scroll-only mouse mode, which became CLAUDE_CODE_DISABLE_MOUSE_CLICKS. |
Four reports on this page are still open: 826, 769, 10794 and 65833. Anthropic documents switches that change these symptoms, and no Anthropic page says one of those reports was closed because of them. Where a changelog entry names a fix, this page names the version it shipped in.
Where the terminal renderer does not run at all
Omniscio is the desktop app we make for running Claude Code sessions. It starts the Claude Code CLI without a terminal: the process is spawned with --output-format stream-json --input-format stream-json, among other flags, and Omniscio draws the conversation in its own view, on desktop and on a phone. The terminal renderer this page is about, and the flicker that comes with it, is not part of that path. That does not make Omniscio a repair for a terminal you are attached to; it is a different place to run the same agent.
Inside that view, scrolling belongs to the reader. Omniscio's library page on reader-owned scrolling sets out the rule: once you move a session's transcript yourself, with a finger, the wheel, the keys or the scrollbar, nothing automatic moves it again during that visit, apart from keeping you at the bottom while you stay there. Opening the session fresh, sending a message, or tapping the arrow back to the latest reply hands the view back. The features page lists the rest of it, and the download page has the installers.
Sources
Every claim on this page rests on one of these, and the date beside each is the day it was read. The Claude Code sources were read against release v2.1.310, published on October 23, 2026.
- Fullscreen rendering, for the renderer switch, what changes, auto-follow, mouse and wheel handling, transcript mode, tmux, native selection, stale text on Windows and the failed-start lines. Read October 26, 2026.
- Configure your terminal, for the flicker section,
CLAUDE_CODE_FORCE_SYNC_OUTPUTand what/terminal-setupchanges. Read October 26, 2026. - Troubleshooting, for the wheel speed note and the stray VTE sequences. Read October 26, 2026.
- Environment variables, for every variable this page names, including the version notes on
CLAUDE_CODE_DISABLE_MOUSE_CLICKS. Read October 26, 2026. - Settings reference, for
tuiandwheelScrollAccelerationEnabled. Read October 26, 2026. - Keybindings, for the scroll action names. Read October 26, 2026.
- Changelog, for the v2.1.282, v2.1.284, v2.1.292 and v2.1.299 entries this page names. Read October 26, 2026.
- The Anthropic GitHub repository, for the eleven reports in the table above, each read through the GitHub API on October 26, 2026.
- Our own library pages, for how Omniscio starts a Claude Code session and how its transcript scrolls: start a new session and your own scrolling always wins. Read October 26, 2026.
Anthropic's pages carry version notes such as "Before v2.1.280" and "Before v2.1.238", and its changelog moves with nearly every release. Read them again before you trust a copy of this page from a few months back. For the error messages Claude Code prints when a request fails, see the Claude Code error messages guide.
Common questions
Why does Claude Code flicker in VS Code?
The screen redraws more than the part that changed, so earlier rows flash while the status line and tool output update. Anthropic names the VS Code integrated terminal, tmux and iTerm2 as the places where this shows most. Run /tui fullscreen, which draws the interface on the alternate screen and renders only visible messages, or set CLAUDE_CODE_NO_FLICKER=1 for one session.
Does fullscreen rendering stop the flicker?
Anthropic's fullscreen page says the mode eliminates flicker and addresses the screen flashing as tool output streams in. It is a research preview, so the page also asks readers to report problems. Reports of flicker from before the switch, such as issues 769 and 10794, remain open, so a setting is the workaround today rather than a closed fix.
Why does Claude Code scroll to the top by itself?
Anthropic lists a scroll position that jumps to the top while Claude is working among the problems fullscreen rendering addresses, and /tui fullscreen is its documented switch. In fullscreen, scrolling up pauses auto-follow, a Jump to bottom button appears, and Ctrl+End returns you to the latest message. Auto-scroll can also be turned off in /config.
How do I scroll back through an older part of the conversation?
In fullscreen rendering the conversation lives in the alternate screen buffer, so the terminal's own scrollback and its search cannot see it. Press Ctrl+O for transcript mode, then / to search, [ to write the conversation into the terminal's scrollback, or v to open it in your editor. With the classic renderer, the conversation stays in the terminal's scrollback, so its own search and copy work as usual.
Why does the mouse wheel send arrow keys instead of scrolling?
In the JetBrains IDE terminal, Anthropic documents scroll-wheel bugs in 2025.2 that produce spurious arrow keys, which Claude Code detects and mitigates at runtime; upgrading to 2025.3 or later is the recommended fix. Issue 65833 reports the same symptom in a PyCharm embedded terminal on WSL2 from v2.1.150, and that report is still open.
Why did Cmd+F stop finding text in Claude Code?
Fullscreen rendering draws on the terminal's alternate screen buffer, so the conversation is not in the terminal's scrollback and its search cannot reach it. Use Ctrl+O for transcript mode and / to search, or press [ to write the conversation into the native scrollback, where Cmd+F and tmux copy mode can find it. The classic renderer keeps the conversation in the scrollback.