Terminal rendering repeats entire conversation history (regressed in v2.1.101)

Open 💬 5 comments Opened Apr 21, 2026 by huiyi9420

Bug Description

The Ink terminal renderer appends full frames instead of updating in-place, causing the entire conversation history to be repeated on every re-render cycle.

Environment

  • OS: macOS (Darwin 25.3.0, ARM64)
  • Terminal: Apple_Terminal (TERM_PROGRAM=Apple_Terminal, TERM=xterm-256color)
  • Install method: Volta (volta install @anthropic-ai/claude-code)
  • Locale: LANG=zh_CN.UTF-8

Regression

Binary search across versions:

| Version | Status |
|---------|--------|
| v2.1.100 | ✅ No issue |
| v2.1.101 | ❌ First affected version |
| v2.1.104 | ❌ Affected (particularly severe) |
| v2.1.108 | ❌ Affected |
| v2.1.112 | ❌ Affected |

The bug was introduced in v2.1.101 and affects all subsequent versions.

Steps to Reproduce

  1. Install via Volta: volta install @anthropic-ai/claude-code@2.1.101
  2. Start an interactive session: claude
  3. Send a few messages
  4. Observe that the entire conversation history is re-rendered below the existing output on each update cycle (e.g., when the spinner state changes)

Expected Behavior

Ink should update the terminal display in-place using ANSI escape sequences, only changing the portions that actually changed.

Actual Behavior

Each re-render cycle appends the full conversation as a new frame below the previous one, causing the terminal to scroll with massive duplicated output.

Additional Notes

  • The issue is not related to Chinese localization — verified by reproducing on the unmodified English CLI
  • The issue may be related to Ink's ANSI escape sequence handling changes in v2.1.101
  • Apple_Terminal has limited support for complex cursor manipulation compared to iTerm2 or VS Code terminal

View original on GitHub ↗

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