This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Affected surfaces
ReleasePort's take
Light signalThe release adds a `waitingFor` field to `claude agents --json` output and clarifies that `/effort` persists its level for new sessions.
Why it matters: Developers can now diagnose agent stalls via the waiting reason, and users receive explicit confirmation of effort‑level persistence across sessions.
Summary
AI summaryRenamed Windsurf to Devin Desktop, added waitingFor field, clarified /effort persistence, improved slash‑command handling, and fixed multiple UI/permission bugs.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
`claude agents --json` includes `waitingFor` field showing block reason. `claude agents --json` includes `waitingFor` field showing block reason. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Feature | Low |
Explicitly listing Grep/Glob in `--tools` now enables dedicated search tools on native builds. Explicitly listing Grep/Glob in `--tools` now enables dedicated search tools on native builds. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Feature | Low |
`/effort` command confirms when chosen level persists as default for new sessions. `/effort` command confirms when chosen level persists as default for new sessions. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Feature | Low |
Clicking a slash command in autocomplete fills it into prompt instead of running immediately; press Enter to run. Clicking a slash command in autocomplete fills it into prompt instead of running immediately; press Enter to run. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Feature | Low |
Remote Control appears as persistent footer pill with session link rather than startup message. Remote Control appears as persistent footer pill with session link rather than startup message. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Performance | Low |
Improved background service startup and `claude update` verification to wait out endpoint‑security scanning of new binaries. Improved background service startup and `claude update` verification to wait out endpoint‑security scanning of new binaries. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Medium |
Fixed silent startup hang when config directory is read‑only; starts with in‑memory config and surfaces errors. Fixed silent startup hang when config directory is read‑only; starts with in‑memory config and surfaces errors. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Bugfix | Medium |
WebFetch permission rules now apply to built‑in preapproved domains; explicit deny/ask/allow overrides auto‑allow. WebFetch permission rules now apply to built‑in preapproved domains; explicit deny/ask/allow overrides auto‑allow. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Bugfix | Medium |
Windows permission rules now match backslashes and case‑variant paths; Read deny rules hide files from Glob/Grep. Windows permission rules now match backslashes and case‑variant paths; Read deny rules hide files from Glob/Grep. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Bugfix | Medium |
Interrupt (Esc) at turn start no longer silently dropped; provides "Interrupted" feedback in stream‑json/SDK sessions. Interrupt (Esc) at turn start no longer silently dropped; provides "Interrupted" feedback in stream‑json/SDK sessions. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Bugfix | Low |
Fixed API 400 `no low surrogate in string` errors for classifier side-queries and MCP descriptions with emoji near truncation boundaries. Fixed API 400 `no low surrogate in string` errors for classifier side-queries and MCP descriptions with emoji near truncation boundaries. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
MCP per-server `timeout` values below 1000 ms are now ignored instead of being floored to 1 second; `claude mcp get` annotates them. MCP per-server `timeout` values below 1000 ms are now ignored instead of being floored to 1 second; `claude mcp get` annotates them. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
LSP tool's `workspaceSymbol` operation now accepts a `query` parameter and passes it to the language server. LSP tool's `workspaceSymbol` operation now accepts a `query` parameter and passes it to the language server. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
'claude agents' no longer cuts live status text at 60‑120 columns; uses full terminal width. 'claude agents' no longer cuts live status text at 60‑120 columns; uses full terminal width. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
'claude agents' no longer truncates long session names at 40 columns; name column grows with terminal width. 'claude agents' no longer truncates long session names at 40 columns; name column grows with terminal width. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
Fixed `claude agents` attach bouncing back to session list after background‑service restart. Fixed `claude agents` attach bouncing back to session list after background‑service restart. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
Ctrl+V image paste now shows a hint when no image is pasted in dispatch input and reply box. Ctrl+V image paste now shows a hint when no image is pasted in dispatch input and reply box. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
Backgrounding a session no longer loses conversation if background service cannot start; remains as failed row. Backgrounding a session no longer loses conversation if background service cannot start; remains as failed row. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
Failed turns in agents view are now queued and delivered on next session start instead of being lost. Failed turns in agents view are now queued and delivered on next session start instead of being lost. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
Fixed cross‑session messaging (`SendMessage`) breaking when `CLAUDE_CODE_TMPDIR` or `$TMPDIR` points to deep directories. Fixed cross‑session messaging (`SendMessage`) breaking when `CLAUDE_CODE_TMPDIR` or `$TMPDIR` points to deep directories. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
Opening a running background session no longer stalls for 5 seconds before attaching. Opening a running background session no longer stalls for 5 seconds before attaching. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Low |
Background dispatch spawn failures now report error class name when no errno is available. Background dispatch spawn failures now report error class name when no errno is available. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Refactor | Low |
Renamed Windsurf to Devin Desktop in /ide menu, /terminal-setup, and /scroll-speed. Renamed Windsurf to Devin Desktop in /ide menu, /terminal-setup, and /scroll-speed. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Refactor | Low |
Startup notices now group by severity; session info and announcements share a single line per launch (quieter startup). Startup notices now group by severity; session info and announcements share a single line per launch (quieter startup). Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Refactor | Low |
Launch‑prompt warnings (deep link/pre‑filled prompt) stay pinned below input until acted upon. Launch‑prompt warnings (deep link/pre‑filled prompt) stay pinned below input until acted upon. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Refactor | Low |
Failed turns now show a compact warning line instead of multi‑line red error block. Failed turns now show a compact warning line instead of multi‑line red error block. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Refactor | Low |
Removed "Claude in Chrome enabled" and "marketplace installed" startup messages; model auto‑updates and onboarding tip shown as quiet notices under logo. Removed "Claude in Chrome enabled" and "marketplace installed" startup messages; model auto‑updates and onboarding tip shown as quiet notices under logo. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
Full changelog
What's changed
claude agents --jsonnow includeswaitingForshowing what a waiting session is blocked on (e.g. permission prompt)--tools: explicitly listing Grep/Glob now provides the dedicated search tools on native builds with embedded search (previously these names were silently ignored)/effortnow confirms when your chosen level will persist as the default for new sessions- Clicking a slash command in the autocomplete menu now fills it into your prompt instead of running it immediately; press Enter to run
- Remote Control now shows as a persistent footer pill (with a link to the session) instead of a startup message
- Renamed Windsurf to Devin Desktop in the
/idemenu,/terminal-setup, and/scroll-speed, following the editor's rebrand - Fixed a silent startup hang when the config directory is read-only or unwritable — Claude Code now starts with in-memory config and surfaces startup errors instead of showing a blank screen
- Fixed WebFetch permission rules not being applied to built-in preapproved domains; explicit
WebFetch(domain:...)deny/ask/allow rules now take precedence over the preapproved-host auto-allow - Fixed Windows permission rules never matching when spelled with backslashes (
~\,\\server\share) or case-variant paths, and Read deny rules not hiding files from Glob/Grep results - Fixed an interrupt (Esc) sent at the very start of a turn being silently dropped in stream-json/SDK sessions, leaving the turn running with no "Interrupted" feedback
- Fixed API 400
no low surrogate in stringerrors for classifier side-queries and MCP server descriptions containing emoji near a truncation boundary - Fixed MCP per-server
timeoutconfig values below 1000 ms being floored to a 1-second watchdog that aborted every tool call; sub-1000 ms values are now ignored (falling back toMCP_TOOL_TIMEOUTor default), andclaude mcp getannotates them accordingly - Fixed the LSP tool's
workspaceSymboloperation returning no results; it now accepts aqueryparameter and passes it to the language server - Fixed
claude agentscutting live status text (tool args, replies, prompts, exec output) at 60–120 columns on wide terminals; the status detail now uses the full terminal width - Fixed
claude agentstruncating long session names at 40 columns; the name column now grows with terminal width - Fixed
claude agentsattach occasionally bouncing straight back to the session list on the first try after a background-service restart - Fixed
claude agentsCtrl+V image paste doing nothing in the dispatch input and the session reply box; pasting with no image now shows a hint - Fixed backgrounding a session with ← silently losing the conversation when the background service cannot start; the session stays in the list as a failed row you can wake with Enter
- Fixed replies from the agents view that fail to send being lost; they are now queued for delivery on the next session start
- Fixed cross-session messaging (
SendMessage) silently breaking whenCLAUDE_CODE_TMPDIRor$TMPDIRpoints at a deep directory - Fixed opening a running background session from
claude agentsstalling for 5 seconds before attaching - Quieter startup: notices group by severity, and session info and announcements share a single line per launch
- Startup warnings rewritten to be shorter and clearer, each with a concrete fix
- Launch-prompt warnings (deep link/pre-filled prompt) now stay pinned below the input until you act instead of scrolling away
- Failed turns now show a compact warning line instead of a multi-line red error block
- Improved background service startup and
claude updateverification to wait out endpoint-security scanning of new binaries instead of failing after 5 seconds - Background dispatch spawn failures now report the error class name when no errno is available
- Removed the "Claude in Chrome enabled" and "marketplace installed" startup messages; model auto-updates and the team-onboarding tip now show as quiet notices under the logo
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
Related tools
Earlier breaking changes
- 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]