Claude Code v2.1.208: Screen Reader Mode, Vim Remaps, Memory Leak Fixes, and More
Claude Code v2.1.208 ships with accessibility improvements, vim quality-of-life features, corporate deployment support, and a massive sweep of bug fixes — especially around memory leaks and edge cases in streaming, SDK hosts, and background agents.
New Features
- Screen reader mode: Opt-in plain-text rendering. Activate via
claude --ax-screen-reader, setCLAUDE_AX_SCREEN_READER=1, or add"axScreenReader": trueto settings. - Vim insert-mode remaps: The
vimInsertModeRemapssetting lets you map two-key insert-mode sequences — e.g.,jjto Escape in vim mode. - Process wrapper:
CLAUDE_CODE_PROCESS_WRAPPERforces every Claude Code self-spawn (agent view, background service) through a required wrapper executable, enabling corporate launcher compliance. - Mouse-click support: Multi-select menus and "Other" input rows in fullscreen mode now accept mouse clicks.
Key Bug Fixes
- Fast mode: Switching back to a model that supports it now correctly restores fast mode if enabled in settings.
- Background agent replies: Text typed to a background agent when delivery fails is saved and delivered on session restart.
- Context window reset: The context window (and auto-compact indicator) no longer briefly resets to 200k after CLI auto-update, preventing false "100% context used" during long sessions.
- HTTP/2 GOAWAY: Supervised and background sessions no longer crash when a server closes an HTTP/2 connection with GOAWAY while requests are in flight.
- Piped output truncation: Large responses from
claude -pno longer have truncated stream-json/JSON output or missing result messages. - Scientific notation env vars:
CLAUDE_CODE_MAX_OUTPUT_TOKENS=1e6no longer silently becomes 1 — the mantissa is now parsed correctly. - Large markdown tables: Tables over 200 rows now show the first 200 with a "… N more rows" notice, preventing rendering stalls and excessive memory use.
- Edit tool: Now correctly handles files modified after reading when the target text still matches uniquely.
- Read/Grep/Glob: Empty files no longer reported as "shorter than offset"; invalid regex patterns now error instead of returning "No files found"; Grep count mode no longer under-reports when paginated; Glob crashes on null bytes in patterns/paths now show a clear error.
- apiKeyHelper: Script failures now surface within 3 attempts instead of being hidden behind a generic 401 after ~10 silent retries.
- Bedrock streaming: Gateway-transformed responses now error with the content-type and a proxy reference instead of misleading "Truncated event message received".
- /upgrade: Shows the upgrade URL directly instead of a login flow when browser fails to open.
- Windows stream-json: Blank CRLF or whitespace-only lines from Windows-style SDK hosts no longer kill the session.
- Headless stream-json: Non-string
set_modelpayloads incontrol_requestno longer hang permanently — the CLI now responds with an error. - Session resume notices: Orphaned background tasks collapse into a single summary instead of repeated "No completion record was found".
- Remote Control: Terminal-hosted sessions now expose background agents and workflow progress to remote clients immediately, not only after a task starts.
- Agent tool with no tools: If a subagent's
toolslist resolves to nothing, the tool now returns a clear error naming the unrecognized entries. - /usage: No longer shows stale cached bars over fresher data. /mcp: Reclassifies placeholder servers after config edits.
- SDK hosts: "Change directory" no longer fails with "A turn is in progress" on idle sessions with a running background task.
- Workflow save dialog: Now respects
CLAUDE_CONFIG_DIRinstead of hardcoding~/.claude/workflows/. - /release-notes: "Show all" no longer injects the entire changelog into every subsequent request.
- Memory leaks:
- Pasted images in agent view are no longer retained for the screen's lifetime after sending peek replies.
- SDK sessions no longer lose agents defined via the initialize request when a plugin refresh runs before client attach.
- MCP stdio server stderr no longer accumulates up to 64 MB per server.
- LSP documents now capped at 50 via LRU instead of staying open indefinitely.
- Async hook output no longer retained after backgrounding.
- Unbounded growth in headless/SDK sessions from large tool-result payloads fixed.
- Reading files with extremely long single lines using offset/limit no longer blows up memory.
This release is a heavy patch — if you've been hitting memory issues in long Claude Code sessions, stalling on markdown tables, or dealing with background agent reply loss, upgrading is strongly recommended.
📖 Read the full source: GitHub Claude-Code
👀 See Also

Claude AI Recovers 11-Year-Old Bitcoin Wallet Worth $400K by Finding Backup and Fixing Brute-Force Bug
A user recovered a 5 BTC wallet (worth ~$400K) after 11 years by feeding their entire college computer files into Claude. The AI found an older backup wallet and identified a bug in btcrecover's password combination logic, enabling successful decryption.

Anam Cara-3: Advancements in Interactive AI Avatars
Anam Cara-3 introduces advanced interactive avatars with a two-stage pipeline for audio-to-video conversion, achieving impressive speed and responsiveness.

Memory Now 63% of AI Chip Cost: HBM Spend Hits $32B
Epoch AI data shows HBM memory’s share of AI chip component costs rose from 52% to 63% between Q1 2024 and Q4 2025. Total component spend grew from $22B to $52B, with HBM accounting for $20B of that increase.

Anthropic Moves Claude Code Background Automation to Separate SDK Credit Bucket, Breaking Agent Workflows
Starting June 15, claude -p, Agent SDK usage, Claude Code GitHub Actions, and third-party Agent SDK apps stop counting against Pro/Max interactive quotas. A new separate Agent SDK credit bucket applies: $100/month for Max 5x plans. Background agent stacks (e.g., tickets → agents → hooks → executor → claude -p) will burn through this fast.