[Bug] Scroll position resets to top during streaming on VTE 0.80.3 (Ptyxis, Linux/Wayland)

Open 💬 0 comments Opened Jun 17, 2026 by khatchad

Bug Description

Scroll snaps to top during long streaming responses. The cursor jumps into the middle of the viewport and scrolling restarts at the top instead of continuing down, on long (~400+ line) streaming responses. Only happens during active streaming; short responses (incremental updates) are fine. Reproduces both with and without tmux—tmux's scrollback does not insulate against it.

This is the same symptom as #35580 (CSI 2J erase-display inside a DEC 2026 synchronized-output block resetting the viewport), but that issue and the related ones (#34794, #36621, #37226) are all closed and locked, so this couldn't be added there. Those are all Windows Terminal/iTerm2 reports—this is the first Linux/VTE data point, which matters because the bug tracks the emitted escape sequences, not the emulator.

Environment

| Field | Value |
|---|---|
| Claude Code | 2.1.179 (latest) |
| Terminal | Ptyxis 49.1—default terminal on GNOME 49/Ubuntu 25.10 |
| GTK/VTE | GTK 4.20.1, VTE 0.80.3 |
| TERM/COLORTERM | xterm-256color/truecolor |
| Session | Wayland |
| OS/kernel | Ubuntu 25.10, 6.17.0-35-generic |
| tmux | reproduces with and without |

Steps to Reproduce

  1. Run claude
  2. Ask for a 500+ line response
  3. Scroll up while it streams

Expected: viewport stays where you scrolled; streaming continues below.
Actual: viewport snaps to the top, cursor lands mid-screen, scrolling restarts from the top.

Notes

  • VTE-backed terminal, so the bug is not confined to Windows Terminal/iTerm2.
  • Consistent with the CSI 2J analysis in #35580—emitting erase-entire-display inside the DEC 2026 sync block resets the scroll position each render cycle on long responses.
  • Already on the latest version (2.1.179); no shipped fix yet.

View original on GitHub ↗