This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Summary
AI summaryScreen reader mode added and numerous bugs fixed including context reset, memory leaks, and authentication issues.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
Adds screen reader mode via `--ax-screen-reader` flag or setting. Adds screen reader mode via `--ax-screen-reader` flag or setting. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Feature | Low |
Adds `vimInsertModeRemaps` setting to map two-key sequences like `jj` to Escape in vim mode. Adds `vimInsertModeRemaps` setting to map two-key sequences like `jj` to Escape in vim mode. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Feature | Low |
Adds `CLAUDE_CODE_PROCESS_WRAPPER` env var to run Claude Code self-spawn through a corporate launcher executable. Adds `CLAUDE_CODE_PROCESS_WRAPPER` env var to run Claude Code self-spawn through a corporate launcher executable. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Feature | Low |
Adds mouse-click support for multi-select menus and "Other" input rows in fullscreen mode. Adds mouse-click support for multi-select menus and "Other" input rows in fullscreen mode. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Performance | Medium |
Eliminates memory leak where pasted images were retained for the screen's lifetime after sending peek replies in agent view. Eliminates memory leak where pasted images were retained for the screen's lifetime after sending peek replies in agent view. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Performance | Medium |
Fixes multiple memory leaks: MCP stdio stderr cap at 64 MB per server, LSP documents limited to 50 with LRU eviction, async hook output cleared after backgrounding, and unbounded growth from large tool‑result payloads in headless/SDK sessions. Fixes multiple memory leaks: MCP stdio stderr cap at 64 MB per server, LSP documents limited to 50 with LRU eviction, async hook output cleared after backgrounding, and unbounded growth from large tool‑result payloads in headless/SDK sessions. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Performance | Medium |
Returns clean error instead of loading entire extremely long line when reading files with offset/limit, avoiding memory blowup. Returns clean error instead of loading entire extremely long line when reading files with offset/limit, avoiding memory blowup. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Performance | Low |
Limits large markdown tables to 200 rows with a “… N more rows” notice, reducing rendering stalls and memory usage. Limits large markdown tables to 200 rows with a “… N more rows” notice, reducing rendering stalls and memory usage. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Medium |
Fixes fast mode staying off after switching back to a model that supports it; now restores automatically from settings. Fixes fast mode staying off after switching back to a model that supports it; now restores automatically from settings. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Bugfix | Medium |
Fixes replies to background agents being lost when delivery fails; text is now saved and delivered on session restart. Fixes replies to background agents being lost when delivery fails; text is now saved and delivered on session restart. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Bugfix | Medium |
Fixes background‑session attach permanently failing after CLI auto‑update replaces the binary. Fixes background‑session attach permanently failing after CLI auto‑update replaces the binary. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Bugfix | Medium |
Fixes context window resetting to 200 k after CLI auto‑update, preventing false "100% context used" warnings. Fixes context window resetting to 200 k after CLI auto‑update, preventing false "100% context used" warnings. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Bugfix | Medium |
Fixes supervised and background sessions crashing when server sends GOAWAY while requests are in flight. Fixes supervised and background sessions crashing when server sends GOAWAY while requests are in flight. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Bugfix | Medium |
Fixes truncated stream‑json output and missing result message when piping large responses from `claude -p`. Fixes truncated stream‑json output and missing result message when piping large responses from `claude -p`. Source: llm_adapter@2026-07-14 Confidence: high |
— |
| Bugfix | Medium |
Corrects CLAUDE_CODE_MAX_OUTPUT_TOKENS env vars to properly parse scientific‑notation values like 1e6. Corrects CLAUDE_CODE_MAX_OUTPUT_TOKENS env vars to properly parse scientific‑notation values like 1e6. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Medium |
Shows apiKeyHelper script errors within three attempts instead of hiding them behind generic 401 after many retries. Shows apiKeyHelper script errors within three attempts instead of hiding them behind generic 401 after many retries. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Fixes Edit tool failure on files modified after reading when target text still matches uniquely. Fixes Edit tool failure on files modified after reading when target text still matches uniquely. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Corrects Read reporting empty files as "shorter than offset", Grep silent failures for invalid regex, under‑reported Grep counts in pagination, and Glob crashes with null bytes. Corrects Read reporting empty files as "shorter than offset", Grep silent failures for invalid regex, under‑reported Grep counts in pagination, and Glob crashes with null bytes. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Provides clearer error for Bedrock streaming requests when gateway transforms response, naming content‑type and pointing to proxy. Provides clearer error for Bedrock streaming requests when gateway transforms response, naming content‑type and pointing to proxy. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Shows upgrade URL directly instead of login flow when browser fails to open on /upgrade. Shows upgrade URL directly instead of login flow when browser fails to open on /upgrade. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Prevents stream‑json input from killing session on blank CRLF or whitespace‑only lines from Windows SDK hosts. Prevents stream‑json input from killing session on blank CRLF or whitespace‑only lines from Windows SDK hosts. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Responds with error when headless stream‑json receives non‑string set_model payload in control_request, avoiding permanent hang. Responds with error when headless stream‑json receives non‑string set_model payload in control_request, avoiding permanent hang. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Collapses repeated "No completion record was found" notices on session resume into a single summary. Collapses repeated "No completion record was found" notices on session resume into a single summary. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Ensures Remote Control clients see background agents and workflow progress immediately without waiting for task start/stop. Ensures Remote Control clients see background agents and workflow progress immediately without waiting for task start/stop. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Returns clear error when Agent tool launches with no tools due to empty subagent `tools` list. Returns clear error when Agent tool launches with no tools due to empty subagent `tools` list. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Refreshes /usage and /mcp displays after config edits, removing stale cached bars and reclassifying placeholder servers. Refreshes /usage and /mcp displays after config edits, removing stale cached bars and reclassifying placeholder servers. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Allows "Change directory" in SDK hosts even when a background task is idle but running. Allows "Change directory" in SDK hosts even when a background task is idle but running. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Shows correct CLAUDE_CONFIG_DIR location in workflow save dialog instead of default ~/.claude/workflows/ path. Shows correct CLAUDE_CONFIG_DIR location in workflow save dialog instead of default ~/.claude/workflows/ path. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Prevents /release-notes from injecting viewed changelog into model context on "Show all" clicks. Prevents /release-notes from injecting viewed changelog into model context on "Show all" clicks. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
| Bugfix | Low |
Preserves agents defined via initialize request during SDK plugin refresh before client attachment. Preserves agents defined via initialize request during SDK plugin refresh before client attachment. Source: granite4.1:30b@2026-07-14-audit Confidence: low |
— |
Full changelog
What's changed
- Added screen reader mode: opt-in plain-text rendering for screen reader users. Run
claude --ax-screen-reader, set CLAUDE_AX_SCREEN_READER=1, or add "axScreenReader": true to settings. - Added
vimInsertModeRemapssetting: map two-key insert-mode sequences likejjto Escape in vim mode - Added
CLAUDE_CODE_PROCESS_WRAPPER: agent view and the background service now honor a corporate launcher by running every Claude Code self-spawn through a required wrapper executable - Added mouse-click support for multi-select menus and "Other" input rows in fullscreen mode
- Fixed fast mode staying off after switching back to a model that supports it — it now restores automatically when enabled in settings
- Fixed replies typed to a background agent being lost when delivery fails — the text is now saved and delivered when the session restarts
- Fixed background-session attach failing permanently ("Couldn't start the background daemon") after an update replaced the binary a running
claude agentsprocess was launched from - Fixed the context window (and auto-compact indicator) briefly resetting to 200k after the CLI auto-updates, causing a false "100% context used" when resuming long-context sessions
- Fixed supervised and background sessions crashing when a server closed an HTTP/2 connection with a GOAWAY while requests were in flight
- Fixed truncated stream-json/JSON output and missing result message when piping large responses from
claude -p - Fixed
CLAUDE_CODE_MAX_OUTPUT_TOKENSand similar env vars silently using the mantissa of scientific-notation values (1e6became1) - Fixed very large markdown tables stalling rendering or using excessive memory; tables over 200 rows show the first 200 with a "… N more rows" notice
- Fixed the Edit tool failing on files modified after reading when the target text still matches uniquely
- Fixed Read reporting empty files as "shorter than offset", Grep silently returning "No files found" for invalid regex patterns, Grep count mode under-reporting totals when paginated, and Glob crashing with an unclear error when the pattern, path, or working directory contained a null byte
- Fixed
apiKeyHelperscript failures being hidden behind a generic 401 after ~10 silent retries; the script's own error is now shown within 3 attempts - Fixed Bedrock streaming requests failing with a misleading "Truncated event message received" when a gateway transforms the response — the error now names the content-type and points at the proxy
- Fixed
/upgradeshowing a login flow instead of the upgrade URL when the browser fails to open - Fixed stream-json input killing the session on blank CRLF or whitespace-only lines from Windows-style SDK hosts
- Fixed headless stream-json sessions hanging permanently when a
control_requestcarried a non-stringset_modelpayload; the CLI now answers with an error response - Fixed repeated "No completion record was found" notices on session resume — orphaned background tasks now collapse into a single summary
- Fixed Remote Control clients attaching to a terminal-hosted session not seeing background agents and workflow progress until a task started or stopped
- Fixed the Agent tool launching with no tools when a subagent's
toolslist resolves to nothing — it now returns a clear error naming the unrecognized entries - Fixed
/usageshowing stale cached bars over fresher data, and/mcpnot reclassifying placeholder servers after config edits - Fixed "Change directory" in SDK hosts (e.g. Claude Desktop) failing with "A turn is in progress" on idle sessions that have a running background task
- Fixed the workflow save dialog showing
~/.claude/workflows/instead of theCLAUDE_CONFIG_DIRlocation for user-scope saves - Fixed
/release-notesadding the viewed notes to the model's context — "Show all" previously injected the entire changelog into every subsequent request - Fixed a memory leak in the agent view where pasted images were retained for the screen's lifetime after sending peek replies
- Fixed SDK sessions losing agents defined via the initialize request when a plugin refresh ran before the client attached
- Fixed several memory leaks in long sessions: MCP stdio server stderr accumulating up to 64 MB per server, LSP documents staying open indefinitely (now LRU with 50-doc cap), async hook output retained after backgrounding, and unbounded growth in headless/SDK sessions from large tool-result payloads
- Fixed a memory blowup when reading files with extremely long single lines using offset/limit — the read now returns a clean error instead of loading the whole line
- Fixed multi-second per-turn slowdowns in sessions with many permission deny/ask rules — rule matchers are now compiled once and cached
- Improved input responsiveness while agent task lists update — task updates no longer re-render the entire UI
- Reduced per-tool-call CPU overhead in print/SDK sessions with many MCP tools by caching tool-pool assembly (up to 7x faster tool rounds at high tool counts)
- Reduced memory usage by bounding the file edit read cache to 16 MB instead of pinning up to 1,000 full files
- Reduced session transcript size (up to 79x in edit-heavy sessions) and bounded checkpoint disk usage by pruning superseded file-history backups
- Reduced memory usage when resuming sessions with background agents or forks spawned from large conversations
- Completed background agents now stay listed in
/tasksuntil 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
- Background sessions: an older daemon no longer silently restarts workers spawned by a newer version onto the older binary
- Agent view: Ctrl+X now deletes renamed-branch worktrees, never destroys unpushed commits, keeps the session row when a worktree is kept, and reused worktree names reset to the current base
- Catastrophic removals (e.g.
rm -rf ~) in commands containing$(…)/backticks/<(…)now prompt in--dangerously-skip-permissionsand auto mode, matching the plain form /install-github-appand the/mcpsettings menu no longer open in background sessions- MCP servers configured with an empty URL now show as "not configured" in
/mcpinstead of a config error /usagenow shows your last-known usage bars with an "as of" note when the usage endpoint is rate-limited, instead of an error screen- Fixed Bedrock auth failing with "Session token not found or invalid" for AWS SSO profiles whose sso_region differs from the Bedrock region (2.1.207 regression)
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About claude-code
All releases →Related context
Earlier breaking changes
- v2.1.215 Claude no longer automatically runs /verify and /code-review skills
- v2.1.160 Renames dynamic‑workflow trigger keyword from `workflow` to `ultracode`; `workflow` no longer triggers a run
- v2.1.160 Deprecates and removes the `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` environment variable; it is now a no‑op
- v2.1.147 Renames /simplify to /code-review; removes cleanup-and-fix behavior.
Beta — feedback welcome: [email protected]