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:
- The cursor lands in the wrong row — visibly floating in empty space below the prompt.
- 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
- On 2.1.163+, send any prompt that produces a multi-line response.
- Observe the cursor settle in the wrong row after the response renders.
- 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/claude → versions/2.1.162) with autoupdate disabled.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗