Renderer paints cursor in wrong position and overprints existing text on every response (regression introduced in 2.1.163)

Resolved 💬 3 comments Opened Jun 16, 2026 by and-0-1 Closed Jul 5, 2026

Summary

Starting in 2.1.163, the TUI miscalculates cursor position after rendering. Two linked symptoms on every response:

  1. The cursor lands in the wrong row — visibly floating in empty space below the prompt.
  2. Subsequent output is painted on top of already-rendered text, clobbering it (not just a stray cursor — real text overwrites real text).

This makes the session progressively unreadable as responses stack.

Regression

  • 2.1.162: clean. Renders correctly, cursor tracks properly. (last good)
  • 2.1.163: broken, as above. (first bad)
  • Confirmed still broken through 2.1.179.

Reproduction

  1. On 2.1.163+, send any prompt that produces a multi-line response.
  2. Observe the cursor settle in the wrong row after the response renders.
  3. Send another prompt — new output overprints the previous response's text.

Content-independent: reproduces with plain prose as well as markdown (tables / code blocks / emoji). It is not tied to wide characters or any specific markdown construct — every response drifts.

What I ruled out

  • Plugins / hooks / statusline / custom skills — reproduces under --safe-mode.
  • Terminal multiplexer — reproduces both inside tmux 3.5a and in a bare terminal (no tmux).
  • Markdown / emoji width — reproduces on plain-text responses too.

Environment

  • OS: macOS 25.5.0 (Darwin 25.5.0), arm64 (Apple Silicon)
  • Claude Code: first bad 2.1.163, last good 2.1.162, native install
  • Terminal: tmux 3.5a (TERM=tmux-256color) and bare terminal both affected
  • COLORTERM=truecolor

Workaround

Downgrade to 2.1.162: repoint the native shim (~/.local/bin/claudeversions/2.1.162) with autoupdate disabled.

View original on GitHub ↗

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