Terminal resize causes duplicated/corrupted output in tmux (regression in 2.1.116)

Resolved 💬 6 comments Opened Apr 23, 2026 by ArnaudValensi Closed May 31, 2026

Bug Description

Terminal resize in tmux causes duplicated/corrupted output with the main-screen (default) renderer. Each resize event (e.g., iOS keyboard show/hide) produces garbled, repeated content in the terminal. The output appears split and puzzle-like, making it unreadable.

Bisect Result

  • 2.1.114 (Apr 18): works correctly
  • 2.1.115: does not exist on npm
  • 2.1.116 (Apr 21): broken
  • 2.1.117: broken

The regression was introduced in 2.1.116.

Environment

  • OS: Linux (Arch, Docker container)
  • Terminal: xterm.js (web terminal) inside tmux 3.6a
  • TERM: xterm-256color
  • Shell: zsh
  • Renderer: default (main-screen)

Steps to Reproduce

  1. Run Claude Code inside tmux (default main-screen renderer, no tui: "fullscreen")
  2. Resize the terminal (e.g., toggle iOS virtual keyboard, or resize the terminal window)
  3. Observe duplicated/scrambled output in the terminal

Each keyboard show/hide adds a large number of lines to tmux scrollback (full session redraw captured as scrollback), and the visible output becomes corrupted.

Expected Behavior

Terminal resize should cleanly redraw the current frame without duplicating or corrupting output (as it does in 2.1.114 and earlier).

Workarounds

  • Pin to 2.1.114 (last working version)
  • Set "tui": "fullscreen" in ~/.claude/settings.json (uses alt-screen renderer, avoids the issue but changes UX)

Additional Context

  • The issue affects all sessions equally, but is more visible in short/new sessions where the duplicated content is near the top of scrollback.
  • The fullscreen (alt-screen) renderer is unaffected because it uses a virtualized scrollback that doesn't capture intermediate redraws.
  • Tested across multiple Claude Code versions (2.1.104, 2.1.110, 2.1.113, 2.1.114 all work; 2.1.116, 2.1.117 all break).

View original on GitHub ↗

This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗