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

Persistent Data Loss in Claude Projects: Conversations Disappearing Without Recovery
A long-form writer reports losing entire days of work in Claude Projects due to conversations disappearing from the project chat list, unsearchable and unrecoverable, with no response from Anthropic support after three incidents.

SCOTUS Declines to Hear AI Copyright Case, Leaving Lower Court Ruling Intact
The U.S. Supreme Court declined to hear a dispute over copyrights for AI-generated material, leaving a lower court ruling that denied copyright protection for works created without human authorship in place.

Senior Government AI Lead Lacks Local LLM Awareness: A Developer's Account
A local LLM developer reports that a senior government AI leader was unaware of why businesses would choose local LLMs over cloud APIs, despite understanding technical basics.

From Prompting to Specification Engineering: The Planner-Worker Architecture Shift
AI development is shifting from simple chat-based prompting to a planner-worker architecture where humans act as specification engineers. This requires defining strict acceptance criteria, constraint architecture, and decomposition patterns for autonomous AI agents.