Reproduction steps
- Open any project in Zed on Windows 11
- Open the integrated terminal (Ctrl+`)
- Run
claude to start Claude Code (v2.1.81)
- Type any message (e.g., "hello") and wait for a response
- Observe the terminal, the entire Claude Code UI is now rendered twice
- Type another message, it renders a third time, stacking further
Additionally, the following actions make the duplication significantly worse:
- Resizing the terminal panel (dragging the panel border to make it taller/shorter) causes additional frame replications on every resize step
- Toggling zoom with
workspace::ToggleZoom (Shift+Escape) also replicates the frames when entering and exiting zoom
Normal terminal output (e.g., ls, git status) renders correctly. The issue is specific to TUI applications that do full-screen redraws. Claude Code uses Ink (a React-based terminal UI renderer) which does frequent full-screen repaints.
This does NOT reproduce in Windows Terminal with the exact same Claude Code session, shell, and project.
Claude Code's team has shipped synchronized output (DEC mode 2026) patches for VS Code's terminal and tmux. Zed's embedded Alacritty may not support synchronized output, which would explain the lack of proper frame buffering.
Terminal settings changes that did NOT fix the issue: line_height: "standard", line_height: { "custom": 1.0 }, TERM: xterm-256color, CLAUDE_CODE_DISABLE_TERMINAL_TITLE: 1
Current vs. Expected behavior
Current behavior: The previous frame is not cleared. Each new TUI repaint appends below the old one, creating duplicate ghost copies of the entire Claude Code interface that stack vertically. Resizing the terminal panel or toggling workspace::ToggleZoom multiplies the ghost frames further. See screenshots below.
Expected behavior: Each Claude Code interaction should render cleanly in place, replacing the previous frame — exactly as it does in Windows Terminal.
(The settings issue is unrelated to all this)
Zed version and system specs
Zed: v0.228.0 (Zed)
OS: Windows 11
Claude Code: v2.1.81 (native Windows install)
Shell: PowerShell 7.6.0
Reproduction steps
claudeto start Claude Code (v2.1.81)Additionally, the following actions make the duplication significantly worse:
workspace::ToggleZoom(Shift+Escape) also replicates the frames when entering and exiting zoomNormal terminal output (e.g.,
ls,git status) renders correctly. The issue is specific to TUI applications that do full-screen redraws. Claude Code uses Ink (a React-based terminal UI renderer) which does frequent full-screen repaints.This does NOT reproduce in Windows Terminal with the exact same Claude Code session, shell, and project.
Claude Code's team has shipped synchronized output (DEC mode 2026) patches for VS Code's terminal and tmux. Zed's embedded Alacritty may not support synchronized output, which would explain the lack of proper frame buffering.
Terminal settings changes that did NOT fix the issue:
line_height: "standard",line_height: { "custom": 1.0 },TERM: xterm-256color,CLAUDE_CODE_DISABLE_TERMINAL_TITLE: 1Current vs. Expected behavior
Current behavior: The previous frame is not cleared. Each new TUI repaint appends below the old one, creating duplicate ghost copies of the entire Claude Code interface that stack vertically. Resizing the terminal panel or toggling
workspace::ToggleZoommultiplies the ghost frames further. See screenshots below.Expected behavior: Each Claude Code interaction should render cleanly in place, replacing the previous frame — exactly as it does in Windows Terminal.
(The settings issue is unrelated to all this)
Zed version and system specs
Zed: v0.228.0 (Zed)
OS: Windows 11
Claude Code: v2.1.81 (native Windows install)
Shell: PowerShell 7.6.0