[BUG] Multiple terminals attached to the same live session have locked/synced scroll position, and resizing one corrupts rendering in the other
Status Open
Reported on v2.1.235
Maintainer reply None cached
Activity 2 comments · opened Aug 19, 2026
Bug Description
When resuming a session that is already live in another terminal (e.g. via the session picker: press left arrow / claude --resume and select a session already open elsewhere), the new terminal attaches to the same live backend session rather than opening an independent view. This is expected/documented for the interleave case, but two aspects of the attached view make it unusable in practice:
- Scroll position is locked/synced across all attached terminals. Every terminal currently attached to that session is forced to the same scroll offset. There is no way to have one window showing the top of the transcript and another showing the bottom — e.g. to compare an early paragraph against a later one side-by-side. Scrolling in one window immediately scrolls the other(s) to match.
- Resizing one attached terminal window corrupts the rendering — in the other attached window, not just the one being resized. Text becomes overlapped/garbled/interleaved into unreadable noise (see screenshots). This is more severe than a same-window resize-redraw glitch: the corruption appears in a window that was never itself resized, because both windows are rendering from the same shared transcript/cursor state.
Steps to reproduce
- Open Claude Code in Terminal A (
claude), start a session, send a couple of prompts. Note it as "session abc". - Open a second terminal front-end — e.g. an IDE-integrated terminal panel (in my case Cursor/VS Code-style) alongside a separate floating terminal window, or two plain terminal windows.
- In Terminal B, run
claude, then use the session picker (left arrow //resume) and select "session abc" (the one already live in Terminal A). - Observe: Terminal A and Terminal B are now fully synced — same content streams to both, and scrolling either one moves both to the identical scroll offset.
- Try to scroll Terminal A to the top of the transcript while leaving Terminal B at the bottom, to compare content side-by-side. Not possible — both windows always track the same position.
- Resize either terminal window (e.g. drag-resize a floating terminal window, or resize the IDE panel it lives in).
- Observe rendering corruption: overlapping/garbled text, duplicated fragments, and misplaced UI elements — sometimes in the window that was not resized.
Expected behavior
- Multiple terminals attached to the same live session should share transcript content (per documented interleave behavior), but each attached terminal should maintain its own independent scroll position/viewport, the same way multiple
tail -freaders or multiple browser tabs on the same doc don't force each other's scroll position. - Resizing one attached terminal should not corrupt the render in a different, unresized terminal attached to the same session.
Actual behavior
- Scroll position is shared/locked across all terminals attached to one session, making side-by-side comparison of different parts of the transcript impossible no matter how many terminal front-ends are spawned.
- Resizing one attached terminal's window visually corrupts rendering (overlapping/garbled text, misplaced highlighted blocks) — including in the other attached terminal that wasn't resized.
Screenshots
- Two front-ends (IDE-embedded terminal pane + floating terminal window) attached to the same session, showing identical synced content:
session abcopen in both. - After a resize, text renders overlapping/garbled ("Jump to bottom (click)" overlaid mid-sentence, corrupted layout).
- More severe corruption example — overlapping characters render as unreadable noise in one pane while the smaller attached terminal window renders correctly.
- Both windows scrolled to the exact same position, confirming the scroll-lock — proving it's not possible to view the top and bottom of the transcript simultaneously across the two attached terminals.
(Screenshots to be attached — will add as a comment.)
Environment Info
- Platform: darwin (macOS 26.5.2, Build 25F84)
- Claude Code version: 2.1.235 (screenshots captured on 2.1.227)
- Terminal setup: IDE-integrated terminal panel + separate floating terminal window (
xterm-256color)
Related issues (not exact duplicates, but adjacent)
- #58906 — Terminal UI becomes corrupted after resizing window (single-window resize corruption; this report is about corruption propagating to a different, unresized window attached to the same session, plus the scroll-lock issue which isn't covered there)
- #80427 — Session fork instead of interleave when resuming from multiple terminal windows (opposite failure mode — sessions diverging instead of staying synced; this report is about the sync working too rigidly, at the viewport level)
- #29937, #46834, #78890 — other terminal rendering corruption reports, none covering the multi-attached-terminal scroll-lock behavior specifically
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗