Claude Code 2.1.88: Flicker-Free Rendering, Cache Fixes
2.1.88 brings flicker-free rendering, fixes critical cache bugs causing 50% workflow failures, and resolves memory leaks and crashes in long sessions.
TL;DR
- Flicker-free alt-screen rendering now available via environment variable
- Fixed critical prompt cache misses and nested CLAUDE.md re-injection in long sessions
- Resolved StructuredOutput schema cache bug causing ~50% workflow failures
- Fixed memory leaks, crashes on large files, and voice mode issues across platforms
New
- Flicker-free rendering — Set
CLAUDE_CODE_NO_FLICKER=1to enable virtualized scrollback with alt-screen rendering, eliminating visual flicker in long sessions. - PermissionDenied hook — New hook fires after auto mode classifier denials; return
{retry: true}to let the model retry denied commands. - Named subagents in typeahead — Subagents now appear in
@mention suggestions for easier discovery.
Fixed
- Prompt cache misses in long sessions — Tool schema bytes no longer change mid-session, preventing cache invalidation.
- Nested CLAUDE.md re-injection — Files are no longer re-injected dozens of times when reading many files in extended sessions.
- StructuredOutput schema cache bug — Fixed ~50% failure rate in workflows using multiple schemas.
- CRLF doubling on Windows — Edit/Write tools no longer double CRLF or strip Markdown hard line breaks (two trailing spaces).
- Memory leak in long sessions — Large JSON inputs no longer retained as LRU cache keys.
- Out-of-memory crash on large files — Edit tool now handles files over 1 GiB without crashing.
- Crash on large session files — Message removal from files over 50MB now works reliably.
- --resume crash — Fixed crash when transcript contains tool results from older CLI versions or interrupted writes.
- Misleading rate limit errors — API entitlement errors now show actual error with actionable hints instead of generic "Rate limit reached" message.
- LSP server zombie state — Server now restarts on next request after crash instead of failing until session restart.
- Hook condition filtering —
ifconditions now match compound commands (ls && git push) and env-var prefixes (FOO=bar git push). - CJK/emoji in prompt history — Entries with CJK or emoji no longer silently dropped at 4KB boundaries in
~/.claude/history.jsonl. - /stats data loss — Historical data beyond 30 days now preserved when cache format changes.
- /stats token undercounting — Now includes subagent and fork usage in token counts.
- Scrollback disappearing — Scrolling up in long sessions no longer loses content.
- Collapsed badge duplication — Search/read group badges no longer duplicate during heavy parallel tool use.
- Notification invalidation —
invalidatesnow clears currently-displayed notifications immediately. - Prompt flashing after submit — Prompt no longer briefly disappears when background messages arrive during processing.
- Long /btw responses clipped — Responses now render in scrollable viewport instead of being cut off.
- Devanagari text truncation — Combining-mark text no longer truncated in assistant output.
- Terminal rendering artifacts — Layout shifts no longer cause visual artifacts on main-screen terminals.
- Voice mode microphone permission on macOS — Apple Silicon now correctly requests microphone permission.
- Voice push-to-talk activation — Some modifier-combo bindings now work correctly.
- Voice mode WebSocket error on Windows — Fixed "WebSocket upgrade rejected with HTTP 101" error.
- Shift+Enter on Windows Terminal Preview — Now inserts newline instead of submitting on version 1.25+.
- UI jitter in iTerm2 + tmux — Periodic jitter during streaming now eliminated.
- PowerShell stderr reporting — Commands like
git pushwriting to stderr no longer incorrectly reported as failures on Windows PowerShell 5.1. - SDK error result messages —
error_during_executionanderror_max_turnsnow correctly setis_error: truewith descriptive messages. - Task notifications lost on Ctrl+B — Backgrounding a session no longer loses notifications.
- Hook file_path not absolute — PreToolUse/PostToolUse hooks now provide absolute paths for Write/Edit/Read tools.
Improved
- PowerShell tool prompt — Now includes version-appropriate syntax guidance for 5.1 vs 7+.
- Thinking summaries disabled by default — No longer generated in interactive sessions; set
showThinkingSummaries: truein settings to restore. - Auto mode denials visibility — Denied commands now show notification and appear in
/permissions→ Recent tab. - /env scope expanded — Now applies to PowerShell tool commands (previously Bash only).
- /usage plan display — Hides redundant "Current week (Sonnet only)" bar for Pro and Enterprise plans.
- Collapsed tool summary — Now shows "Listed N directories" for ls/tree/du instead of "Read N files".
- Image paste behavior — No longer inserts trailing space.
- Bash mode entry — Pasting
!commandinto empty prompt now enters bash mode, matching typed!behavior.
Update Claude Code: brew upgrade claude-code or download from code.claude.com.
Source: Claude Code