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

Google, Microsoft, and xAI Agree to Share Early AI Models with US Government
Google, Microsoft, and xAI (Elon Musk's AI firm) have agreed to voluntarily provide early access to their AI models to the US government for safety testing, as part of an initiative reported by the Wall Street Journal.

“Code Was Never the Hard Part” Is an Insult to All Programmers
Senko Rašić pushes back on the claim that coding is easy and figuring out what to build is hard, arguing both are hard and dismissing the idea is harmful.

Qwen3-30B-A3B vs Qwen3.5-35B-A3B Performance Comparison on RTX 5090
A head-to-head benchmark of Qwen3-30B-A3B and Qwen3.5-35B-A3B on an RTX 5090 shows the 30B model is 35% faster in generation, while the 3.5 model handles long context better with flat token scaling versus the 30B's 21% degradation.

Google donates Agent Payments Protocol (AP2) to FIDO Alliance, releases v0.2 with 'Human Not Present' payments
Google is donating the Agent Payments Protocol (AP2) to the FIDO Alliance, and releasing v0.2 with support for autonomous 'Human Not Present' payments and a new Verifiable Intent standard co-developed with Mastercard.