Claude Code v2.1.208: Screen Reader Mode, Vim Insert-Mode Remaps, and a Process Wrapper for Corporate Launchers
Claude Code v2.1.208 adds an opt-in screen reader mode, the vimInsertModeRemaps setting, and CLAUDE_CODE_PROCESS_WRAPPER for corporate launchers, plus memory, performance, and background agent fixes.
Claude Code v2.1.208 is a large release with 46 changelog entries. It adds an opt-in screen reader mode, vim insert-mode remaps, and a process wrapper for corporate launchers, and it extends mouse support in fullscreen menus. Much of the rest targets memory use and performance in long sessions, background agents, headless output, and authentication.
What’s New
Screen Reader Mode
A new opt-in screen reader mode provides plain-text rendering for screen reader users. Turn it on by running claude --ax-screen-reader, setting CLAUDE_AX_SCREEN_READER=1, or adding "axScreenReader": true to settings.
vimInsertModeRemaps Setting
The new vimInsertModeRemaps setting maps two-key insert-mode sequences, such as jj, to Escape in vim mode.
CLAUDE_CODE_PROCESS_WRAPPER for Corporate Launchers
With CLAUDE_CODE_PROCESS_WRAPPER, the agent view and the background service honor a corporate launcher by running every Claude Code self-spawn through a required wrapper executable.
Mouse Clicks in Fullscreen Menus
In fullscreen mode, multi-select menus and “Other” input rows now support mouse clicks.
Catastrophic Removals Prompt in More Cases
Catastrophic removals such as rm -rf ~ in commands containing $(…), backticks, or <(…) now prompt in --dangerously-skip-permissions and auto mode, matching the plain form of the command.
Background Agents in /tasks and on Attach
Completed background agents now stay listed in /tasks until cleanup instead of vanishing the moment they finish. Attaching to a stopped background agent now shows its transcript immediately while the session warms up, instead of a blank “Session is starting” screen.
Fixes and Improvements
- Performance: Sessions with many permission deny/ask rules no longer suffer multi-second slowdowns per turn, because rule matchers are now compiled once and cached. Print/SDK sessions with many MCP tools spend less CPU per tool call thanks to cached tool-pool assembly, with up to 7x faster tool rounds at high tool counts.
- Memory and disk: Several memory leaks in long sessions are fixed, including MCP stdio server stderr accumulating up to 64 MB per server, LSP documents staying open indefinitely (now LRU with a 50-doc cap), async hook output retained after backgrounding, and unbounded growth in headless/SDK sessions from large tool-result payloads. The file edit read cache is now bounded to 16 MB instead of pinning up to 1,000 full files, and session transcripts are smaller (up to 79x in edit-heavy sessions), with checkpoint disk usage bounded by pruning superseded file-history backups.
- Fast mode: Fast mode no longer stays off after you switch back to a model that supports it; it now restores automatically when enabled in settings.
- Background agents: Replies typed to a background agent are no longer lost when delivery fails; the text is saved and delivered when the session restarts. Background-session attach no longer fails permanently with “Couldn’t start the background daemon” after an update replaces the binary that a running
claude agentsprocess was launched from. - Context window: After the CLI auto-updates, the context window and auto-compact indicator no longer briefly reset to 200k, which had caused a false “100% context used” when resuming long-context sessions.
- Print mode: Piping large responses from
claude -pno longer produces truncated stream-json/JSON output or a missing result message. - Built-in tools: The Edit tool no longer fails on files modified after reading when the target text still matches uniquely. Read no longer reports empty files as “shorter than offset”, Grep no longer silently returns “No files found” for invalid regex patterns or under-reports totals in paginated count mode, and Glob no longer crashes with an unclear error when the pattern, path, or working directory contains a null byte.
- Authentication:
apiKeyHelperscript failures are no longer hidden behind a generic 401 after ~10 silent retries; the script’s own error now appears within 3 attempts. Bedrock auth no longer fails with “Session token not found or invalid” for AWS SSO profiles whose sso_region differs from the Bedrock region (a 2.1.207 regression). - Environment variables:
CLAUDE_CODE_MAX_OUTPUT_TOKENSand similar env vars no longer silently use the mantissa of scientific-notation values (1e6had become1). - Markdown tables: Very large tables no longer stall rendering or use excessive memory; tables over 200 rows show the first 200 with a ”… N more rows” notice.
/release-notes: Viewed notes are no longer added to the model’s context. Previously, “Show all” injected the entire changelog into every subsequent request./usage: When the usage endpoint is rate-limited,/usagenow shows your last-known usage bars with an “as of” note instead of an error screen.- Agent view: Ctrl+X now deletes renamed-branch worktrees, never destroys unpushed commits, and keeps the session row when a worktree is kept; reused worktree names reset to the current base.
- Fable 5: The Fable 5 usage-credits consent prompt now starts with the decline option focused.
This release contains 46 changes in total; see the full changelog for every item.
How to Update
- Check your installed version:
claude --version - Update in place:
claude update - If you run with
--dangerously-skip-permissionsor in auto mode, note that catastrophic removals such asrm -rf ~inside$(…), backticks, or<(…)now prompt, just like the plain form.