Ink renderer crash on Windows: blit=0 + unbounded screen height growth kills sessions

Status Closed — duplicate
Maintainer reply None cached
Activity 3 comments · opened Feb 22, 2026 · closed Feb 26, 2026

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

  1. blit=0 in 99% of cases — the renderer never does incremental updates, always rewrites the entire screen
  2. Screen height grows unboundedly — from 24 rows up to 1,147 rows in a 52-min session
  3. Growth rate ~20–40 rows per minute on average
  4. Width stays constant (157 columns) — only height explodes
  5. 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:

  1. Terminal pipe saturation
  2. 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

  1. Launch Claude Code in VSCode integrated terminal on Windows 11
  2. Have a conversation with tool use (Bash, Read, Edit calls)
  3. After ~10–15 minutes the session crashes without a clean exit
  4. 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 unavailable debug spam appears to contribute to the render churn but is not the root cause

View original on GitHub ↗

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