Flickering/rapid scroll from top to bottom for every character output or typed/random scrolls to top #23991

Closed
opened 2026-01-31 08:58:23 +00:00 by claunia · 1 comment
Owner

Originally created by @Caleb-KS on GitHub (Jan 23, 2026).

Windows Terminal version

1.23.13503.0

Windows build number

10.0.26100.7623

Other Software

While running common REPLs (Ink) or Claude Code, sometimes the terminal tab gets into a state where it rapidly scrolls to the top and all the way back down in the terminal history for every character typed or output while the REPL is running.

I am not sure how to reproduce it, but it happens sooner or later. Once a tab is "infected" it doesn't recover. I've played with hardware acceleration settings and other settings that seem related. Nothing affects it that I can tell.

If you look at the Claude Code github issues, you will see multiple people have submitted issues.

The weird thing is I don't think it's only Claude Code, since I had Claude Code write a REPL to do something else (it used Ink as the framework) and it also had the issue.

FWIW I have a HP ZBook 15 G9 with Intel and Nvidia graphics cards.

Steps to reproduce

Use Claude Code in a Windows Terminal tab for a while.

Expected Behavior

No response

Actual Behavior

Scrolling rapidly from top to bottom of terminal history.

Or just random scroll all the way to the top and stay there.

Originally created by @Caleb-KS on GitHub (Jan 23, 2026). ### Windows Terminal version 1.23.13503.0 ### Windows build number 10.0.26100.7623 ### Other Software While running common REPLs (Ink) or Claude Code, sometimes the terminal tab gets into a state where it rapidly scrolls to the top and all the way back down in the terminal history for every character typed or output while the REPL is running. I am not sure how to reproduce it, but it happens sooner or later. Once a tab is "infected" it doesn't recover. I've played with hardware acceleration settings and other settings that seem related. Nothing affects it that I can tell. If you look at the Claude Code github issues, you will see multiple people have submitted issues. The weird thing is I don't think it's only Claude Code, since I had Claude Code write a REPL to do something else (it used Ink as the framework) and it also had the issue. FWIW I have a HP ZBook 15 G9 with Intel and Nvidia graphics cards. ### Steps to reproduce Use Claude Code in a Windows Terminal tab for a while. ### Expected Behavior _No response_ ### Actual Behavior Scrolling rapidly from top to bottom of terminal history. Or just random scroll all the way to the top and stay there.
claunia added the Needs-TriageIssue-Bug labels 2026-01-31 08:58:23 +00:00
Author
Owner

@lhecker commented on GitHub (Jan 23, 2026):

Let me preface this with a tl;dr: This is not a bug in our terminal. Copilot CLI and Claude Code are simply poorly written right now - seriously.

The shortest description for, what a terminal is, is: A terminal is basically a text editor. Yep, that's it.
So, here's how Claude Code works, to my current knowledge:

  • Every time you type something or do something, it re-renders everything
  • When it re-renders, it erases the entire text buffer (= like pressing Ctrl+A & Delete in a text editor)
  • Then it re-prints everything (= like pressing Ctrl+V to paste your clipboard)

Imagine you do "Ctrl+A, Delete, Ctrl+V" in that order in your favorite text editor. No matter how fast you do that, you'll have brief period where the text editor is completely empty. And if you paste a ton of text with Ctrl+V, you may even have to wait a bit before the text is pasted. Because of this, there's nothing you can do to fix this. This will happen in any terminal, on any hardware, because fundamentally the issue is how Claude Code renders itself.

The solution is for Claude Code is to either stop using Ink, which really isn't a great TUI framework to begin with, or to start using something like ink-virtual-list, which will put large amounts of text into a virtual scroll view.

FWIW, Copilot CLI has a slightly different issue, but is fundamentally the same, as they also use Ink (unfortunately). The good news is that they're working on using something like ink-virtual-list.

@lhecker commented on GitHub (Jan 23, 2026): Let me preface this with a tl;dr: This is not a bug in our terminal. Copilot CLI and Claude Code are simply poorly written right now - seriously. The shortest description for, what a terminal is, is: A terminal is basically a text editor. Yep, that's it. So, here's how Claude Code works, to my current knowledge: * Every time you type something or do something, it re-renders everything * When it re-renders, it erases the entire text buffer (= like pressing Ctrl+A & Delete in a text editor) * Then it re-prints everything (= like pressing Ctrl+V to paste your clipboard) Imagine you do "Ctrl+A, Delete, Ctrl+V" in that order in your favorite text editor. No matter how fast you do that, you'll have brief period where the text editor is completely empty. And if you paste a ton of text with Ctrl+V, you may even have to wait a bit before the text is pasted. Because of this, there's nothing you can do to fix this. This will happen in any terminal, on any hardware, because fundamentally the issue is how Claude Code renders itself. The solution is for Claude Code is to either stop using Ink, which really isn't a great TUI framework to begin with, or to start using something like [`ink-virtual-list`](https://github.com/archcorsair/ink-virtual-list), which will put large amounts of text into a virtual scroll view. FWIW, Copilot CLI has a slightly different issue, but is fundamentally the same, as they also use Ink (unfortunately). The good news is that they're working on using something like `ink-virtual-list`.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#23991