Ink renderer crash on Windows: blit=0 + unbounded screen height growth kills sessions
Description
Claude Code on Windows 11 (VSCode integrated terminal) crashes repeatedly due to an Ink renderer loop. Sessions die without a clean exit — the process is killed externally.
Environment
- OS: Windows 11 Pro (ARM64)
- Terminal: VSCode integrated terminal
- Claude Code: v2.1.50
- Shell: bash (Git Bash)
Data from a 2-hour observation window (15 sessions)
| Metric | Value |
|---|---|
| Total sessions | 15 |
| RENDER_DEATH | 11 (73%) |
| Clean exit | 0 (0%) |
| Average survival time | 11.5 min |
| Max survival time | 52.8 min |
| Crash frequency | ~every 11 min |
RENDER_DEATH pattern
The last lines in the debug log before every crash are always:
[DEBUG] High write ratio: blit=0, write=XXXXX (100.0% writes), screen=NxM
[DEBUG] Fast mode unavailable: Fast mode requires extra usage billing
Key findings
blit=0in 99% of cases — the renderer never does incremental updates, always rewrites the entire screen- Screen height grows unboundedly — from 24 rows up to 1,147 rows in a 52-min session
- Growth rate ~20–40 rows per minute on average
- Width stays constant (157 columns) — only height explodes
- Write count correlates with height — from 1,055 (24 rows) to 87,233 (1,147 rows)
Correlation data (sorted by session duration)
Duration | Max writes | Max height | Writes/s
---------|------------|------------|----------
34s | 1,055 | 24 | 31.0
45s | 1,892 | 40 | 42.0
176s | 22,859 | 212 | 129.9
253s | 3,074 | 78 | 12.2
348s | 32,656 | 268 | 93.8
462s | 18,032 | 270 | 39.0
698s | 17,651 | 386 | 25.3
717s | 11,695 | 274 | 16.3
797s | 10,521 | 206 | 13.2
910s | 18,989 | 391 | 20.9
3,169s | 87,233 | 1,147 | 27.5
Probable root cause
Ink (React CLI renderer) virtual terminal buffer grows with conversation content. Because blit=0, every render cycle rewrites the entire buffer instead of doing incremental updates. On Windows terminals (especially VSCode integrated terminal) this causes:
- Terminal pipe saturation
- The process gets killed by the terminal host or OOM
The fact that blit is always 0 suggests the Ink renderer's diff algorithm is failing to detect reusable regions on Windows, possibly due to a terminal capability detection issue (e.g., missing/incorrect TERM environment variable, or Windows ConPTY not reporting capabilities correctly).
Steps to reproduce
- Launch Claude Code in VSCode integrated terminal on Windows 11
- Have a conversation with tool use (Bash, Read, Edit calls)
- After ~10–15 minutes the session crashes without a clean exit
- Debug log ends with "High write ratio: blit=0" entries
Expected behavior
Sessions should survive indefinitely. The renderer should use incremental updates (blit > 0) instead of full screen rewrites.
Additional context
- The issue does not appear to be related to any specific conversation content — it happens across all types of interactions
- Longer sessions accumulate more virtual screen height, making crashes inevitable
- The
Fast mode unavailabledebug spam appears to contribute to the render churn but is not the root cause
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗