Source: raw/anthropic-watch-claude-code-tag-v2-1-160.md / -v2-1-161.md / -v2-1-162.md / -v2-1-163.md / -v2-1-165.md (CC v2.1.160–v2.1.163 + v2.1.165, June 2–5, 2026); ai-research/claude-code-docs-changelog-2026-06-05.md (live changelog snapshot, corroborates + fills truncated watcher stubs)
Week 24 is a security, observability, and developer-experience hardening week. No headline model launch or research preview — instead, five tightly grouped releases close gaps opened by the Opus 4.8 + dynamic-workflows rollout in W23. The marquee changes: v2.1.160 adds safety prompts before Claude writes to shell startup files and build-tool configs, and officially renames the dynamic-workflow trigger from "workflow" to "ultracode"; v2.1.161 adds OTEL metric dimensions (slice usage by team/repo), makes parallel Bash failures non-cancelling for the batch, and shows done/total progress on fanned-out agent rows; v2.1.162 adds waitingFor to claude agents --json and quiets startup noise; v2.1.163 ships managed version gates (requiredMinimumVersion/requiredMaximumVersion), expands Stop/SubagentStop hooks to return additionalContext (feedback without blocking), and adds /plugin list --enabled/--disabled; v2.1.165 is bug fixes only.
v2.1.164 not captured
The ecosystem watcher jumped from v2.1.163 to v2.1.165 — v2.1.164 is absent from
raw/and its changelog entry is not in this digest. Confirm via the GitHub release page if its detail matters.
Headline changes
Claude Code v2.1.160 (June 2) — Security hardening + ultracode trigger rename
Source: raw/anthropic-watch-claude-code-tag-v2-1-160.md (tagged 2026-06-02T02:10:25Z, author ashwin-ant); stub truncated mid-sentence, gaps filled from ai-research/claude-code-docs-changelog-2026-06-05.md.
Security surface:
- Prompt before writing shell startup files. Claude now asks before writing
.zshenv,.zlogin,.bash_login, and~/.config/git/— paths that execute automatically on shell open and can introduce unintended command execution. Previously these were modified without a separate confirmation prompt. acceptEditsmode: prompt before build-tool config files. When running in acceptEdits (background agent) mode, Claude now confirms before writing.npmrc,.yarnrc*,bunfig.toml,.bazelrc,.pre-commit-config.yaml,.devcontainer/, and similar files that grant code execution at the package-manager or build-runner level. Both changes narrow the surface where background agents can make persistent changes that affect future shell or build behavior.
Dynamic workflows — trigger keyword confirmed ultracode:
- The dynamic-workflow trigger keyword is officially
ultracodeas of v2.1.160. The word"workflow"no longer kicks off a dynamic workflow — use"ultracode"to trigger one explicitly, or ask Claude in natural language. Asking for a workflow in natural language still works when intent is clear; only the literal trigger word changed. The trigger keyword is highlighted in violet in the prompt input. Note: the raw watcher stub for v2.1.160 was truncated before capturing this entry; it is confirmed from the live changelog and from the prior refresh of dynamic-workflows via the June 3 @ClaudeDevs signal./effort ultracode(xhigh + dynamic-workflow eligibility) is also fixed — it no longer incorrectly blames the dynamic-workflows setting when the model cannot run xhigh; theultracodeeffort level is no longer offered on unsupported models.
Developer ergonomics:
- Edit no longer requires a separate Read after a single-file grep.
grep,egrep, andfgrepcommands scoped to a single file now satisfy the read-before-edit check — no extra file-read step needed when you’ve already viewed it via grep output. CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDEremoved — the environment variable is now a no-op. Deprecated in W23 (v2.1.154); fully removed here.- JetBrains plugin install suggestion removed from startup.
Fixes (selection):
- Fixed copy-on-select not writing to Windows clipboard on WSL (now uses PowerShell interop instead of OSC 52, fixing MobaXterm and similar terminals).
- Fixed restoring a completed session from
claude agentsdropping chat history and re-running the original prompt. - Fixed background sessions re-attached after overnight retire losing their conversation and re-running the original prompt.
- Fixed
claude --bgoccasional “socket missing” failure during cold-start on a loaded machine. - Fixed
claude agentsfreezing when returning to the session list (auto-updater was re-checking on every exit). - Fixed Esc/arrow keys/typing becoming unresponsive on Windows under heavy CPU when attached to a background session.
- Fixed CJK IME composition appearing at the bottom-left of the screen instead of at the caret in
claude agents. - Fixed voice mode failing to connect when the project directory or branch name contains non-ASCII or special characters.
- Improved auto mode classifier latency by reducing reasoning on routine actions.
- Improved
claude rm/stopteardown to SIGTERM before SIGKILL, so cleanup handlers run.
Claude Code v2.1.161 (June 2) — OTEL dimensions + parallel-tool resilience + agents done/total
Source: raw/anthropic-watch-claude-code-tag-v2-1-161.md (tagged 2026-06-02T21:58:22Z).
Observability:
OTEL_RESOURCE_ATTRIBUTESas metric labels. Values set inOTEL_RESOURCE_ATTRIBUTESare now included as labels on every Claude Code metric datapoint. Practical effect: setOTEL_RESOURCE_ATTRIBUTES=team=backend,repo=api-gatewayand your metrics dashboard can filter or group by team or repo. Previously,OTEL_RESOURCE_ATTRIBUTESwas forwarded to the OTEL exporter but not attached per-metric. Builds on the W23/W22 OTEL subagent-trace work (OTEL_LOG_TOOL_DETAILS, subagent trace IDs) — this adds the team/project slice.claude agentsrows showdone/totalon fan-out. When work is fanned out across parallel subagents, each row now shows adone/totalcounter before the detail text. The peek overlay shows the longest-running item. Gives at-a-glance progress for large dynamic workflow fan-outs without having to attach to each session.
Reliability:
- Parallel tool calls: failed Bash no longer cancels the batch. Previously, if one Bash call in a parallel batch (Claude calling multiple tools simultaneously) failed, the failure cancelled the remaining tool calls in the batch. Now each tool in the batch returns its own result independently — a single failure is reported and the others continue. Practical win for any subagent or workflow that runs parallel tool calls in a single turn.
- Fixed
forceLoginOrgUUID/forceLoginMethodmanaged-settings policies blocking third-party provider sessions (Bedrock, Vertex, Foundry, Mantle) — a regression from v2.1.146 that made org-pin policies also block non-OAuth endpoints. Fixed.
Other:
/mcpnow collapses claude.ai connectors you’ve never signed in to behind a “Show unused connectors” row, reducing noise in the MCP panel.- Linux fullscreen clipboard improvements:
wl-copy/xclip/xselused when available, copies to both clipboard and PRIMARY selection for middle-click paste, “hold {key} for native selection” hint shows the correct key per terminal. /usage-creditsnow routes Team/Enterprise admins to the organization’s usage settings page instead of triggering a re-login.- Fixed
claude -pstdout corruption when background subagent output was interleaved in--output-format textorjsonmode. - Fixed OpenTelemetry log events dropped when emitted before telemetry initialization completed.
- Fixed
claude mcpprinting credential secrets to the terminal (${VAR}references no longer expanded, headers/URL secrets redacted). - Fixed workflow agents with
isolation: "worktree"in background sessions blocked from editing their own worktree files. - Fixed background sessions dispatched from
claude agentsbooting on a stale model from the daemon environment instead ofsettings.json.
Claude Code v2.1.162 (June 3) — Agents JSON + Devin Desktop rebrand + startup polish
Source: raw/anthropic-watch-claude-code-tag-v2-1-162.md (tagged 2026-06-03T21:31:35Z).
Agents scripting:
claude agents --jsonincludeswaitingFor. The JSON output fromclaude agents --jsonnow includes awaitingForfield for sessions blocked on a permission prompt or other gate, showing what the session is waiting for (e.g.,"permission prompt"). Useful for scripted dashboards or tmux-resurrect integrations that need to surface “stuck” sessions.
UX:
- Devin Desktop replaces Windsurf in the IDE menu.
/ide,/terminal-setup, and/scroll-speednow show “Devin Desktop” following the editor’s rebrand from Windsurf. No functional change — same IDE integration, new name. - Slash command autocomplete: click to fill, Enter to run. Clicking a slash command in the autocomplete dropdown now fills it into the prompt input instead of running it immediately. Press Enter to execute. Eliminates accidental slash command executions when browsing the autocomplete list.
- Remote Control as persistent footer pill. Remote Control connection status now shows as a footer pill with a link to the session, replacing the previous startup message. Persistent visibility without scroll-away.
/effortconfirms when a chosen level will persist. If you set an effort level that will be saved as the default for new sessions, the command now confirms this explicitly.--tools: Grep/Glob honored on native builds. Explicitly listingGreporGlobin--toolsnow provides the dedicated embedded search tools on native builds (previously these names were silently ignored on native builds that have embedded search).
Startup quieter:
- Notices group by severity; session info and announcements share a single line per launch.
- Startup warnings rewritten shorter with concrete fixes.
- Launch-prompt warnings stay pinned below input until acted on.
- Failed turns show a compact warning line instead of a multi-line red block.
- Removed “Claude in Chrome enabled” and “marketplace installed” startup messages.
Fixes (selection):
- Fixed silent startup hang when the config directory is read-only or unwritable — now starts with in-memory config and surfaces the error.
- Fixed
WebFetchpermission rules not being applied to preapproved domains — explicitWebFetch(domain:...)deny/ask/allow rules now take precedence over the preapproved-host auto-allow. - Fixed Windows permission rules never matching with backslash paths or case-variant paths;
Readdeny rules now also hide files from Glob/Grep. - Fixed MCP per-server
timeoutvalues below 1000 ms being floored to a 1-second watchdog; sub-1000 ms values now fall back toMCP_TOOL_TIMEOUTor default, andclaude mcp getannotates them. - Fixed LSP tool’s
workspaceSymboloperation returning no results (now accepts aqueryparameter). - Fixed
claude agentstruncating status text and session names on wide terminals. - Fixed cross-session messaging (
SendMessage) failing whenCLAUDE_CODE_TMPDIRor$TMPDIRpoints at a deep path. - Fixed opening a running background session from
claude agentsstalling for 5 seconds. - Improved background service startup to wait out endpoint-security scanning of new binaries.
Claude Code v2.1.163 (June 4) — Managed version gates + hooks feedback + plugin list
Source: raw/anthropic-watch-claude-code-tag-v2-1-163.md (tagged 2026-06-04T21:52:51Z).
Enterprise / managed settings:
requiredMinimumVersionandrequiredMaximumVersionmanaged settings. Enterprise IT can now lock Claude Code to a version range. If the installed version is belowrequiredMinimumVersionor aboverequiredMaximumVersion, Claude Code refuses to start and directs the user to an approved version. Closes the gap where managed-settings policies could control behavior but not the binary version itself — useful for compliance environments that require specific builds or want to block a regression until a patch ships.
Hooks — Stop/SubagentStop feedback loop:
- Stop and SubagentStop hooks can now return
hookSpecificOutput.additionalContextto give Claude feedback without blocking. Previously, a Stop hook that returned exit code 2 was labeled a “hook error” — it blocked the turn but the framing was wrong for feedback use cases. Now Stop and SubagentStop hooks can returnadditionalContextin theirhookSpecificOutputJSON to inject context back into Claude’s turn and keep it going, without the error label. Example use: a Stop hook that checks the output and feeds back “your last diff doesn’t compile — fix it before finishing” to drive a correction loop. This is distinct from the existing Stop-hook block cap (8 blocks before forced exit, v2.1.143). See Hooks.
Plugin improvements:
/plugin list --enabled/--disabledfilters. The new/plugin listcommand lists all installed plugins. Pass--enabledto show only active plugins, or--disabledto show inactive ones. Complements the existing/plugin marketplaceandclaude plugin prunewith a quick inventory view./btwcopy shortcut. The/btwpanel now has a “c to copy” shortcut that copies the raw markdown answer to the clipboard, preserving formatting when pasted elsewhere.
Skills:
\$escape syntax for skills. Skill command bodies can now use\$to include a literal$character before a digit (e.g.,\$1). Previously,$1in a skill command body was ambiguous with shell positional parameters; the escape makes the literal intent explicit. Useful for skills that construct shell commands referencing$1,$2, etc., as literal text rather than arguments.
stdio MCP servers:
CLAUDE_CODE_SESSION_IDpassed to stdio MCP servers on--resume. MCP servers now receive the sameCLAUDE_CODE_SESSION_IDenvironment variable as hooks and Bash when the session is resumed via--resume— not just on initial launch. Closes a gap where MCP-server-side session-correlation logic would see a missing session ID on resumed sessions.
Fixes (selection):
- Fixed
claude -phanging forever when a backgrounded command never exits — background shells are now stopped ~5s after the result once stdin closes. - Fixed
claude -pfailing with “ANTHROPIC_API_KEY required” on Bedrock/Vertex/Foundry whenCI=trueand no Anthropic API key is present. - Fixed bash commands failing under bazel and EDR-protected Go workflows (
$TMPDIRregression in v2.1.154). - Fixed org-managed permission rules not applying for the whole session when the managed-settings fetch completed during startup on a fresh config directory.
- Fixed
claude agentslosing running background tasks when a session is reattached after a Claude Code update. - Fixed hook
if: "Bash(...)"conditions incorrectly firing on every Bash command containing$()or$VAR. - Fixed deny rules on
~/Desktop/**-style paths not blocking Bash commands that use$HOME. - Background agent sessions now update to a new Claude Code version in the background — no cold-restart wait when opening a session after an update.
- Subscription-switch suggestion now shows in the startup announcement slot instead of a toast.
Claude Code v2.1.165 (June 5) — Bug fixes
Source: raw/anthropic-watch-claude-code-tag-v2-1-165.md (tagged 2026-06-05T05:45:06Z). A single-line release: bug fixes and reliability improvements. No new surfaces.
Key Takeaways
- Security discipline tightens in v2.1.160: Claude now prompts before writing to shell startup files and build-tool configs under acceptEdits mode — two surfaces where background writes could have persistent execution consequences. Neither is a behavior change for interactive mode; both are new confirmations for agentic flows.
ultracodeis the official trigger word for dynamic workflows (v2.1.160 confirmation). The word “workflow” no longer triggers one — incidental use of the word is safe again. See Dynamic Workflows.- OTEL gets team/repo dimensions (v2.1.161):
OTEL_RESOURCE_ATTRIBUTESlabels now propagate to every metric datapoint. Pairs with the W23OTEL_LOG_TOOL_DETAILSsurface and the W21 subagent trace-ID work to make Claude Code cost and behavior fully attributable by team and project. - Parallel Bash failures no longer cancel the batch (v2.1.161): a reliability improvement that matters most for dynamic workflows and any subagent that runs multiple tools per turn.
done/totalon agent rows (v2.1.161): at-a-glance progress without attaching to each session during large dynamic-workflow fan-outs.- Managed version gates (v2.1.163): enterprise IT can now enforce a minimum and maximum binary version. First managed setting that controls which binary runs, not just how it behaves.
- Stop/SubagentStop hooks gain a feedback loop (v2.1.163): hooks can now inject
additionalContextto drive correction passes without triggering an error label. Expands the hook surface from gate/block to gate/block/coach. See Hooks. /plugin list --enabled/--disabled(v2.1.163): quick plugin inventory without opening the marketplace panel.claude agents --jsongetswaitingFor(v2.1.162): scripted dashboards can now surface “stuck” sessions by name.- Startup noise continues to drop (v2.1.162): messages consolidated, errors shown as compact lines, removed chrome-enabled/marketplace notices.
- v2.1.164 was not captured by the ecosystem watcher.
Related
- Dynamic Workflows in Claude Code —
ultracodetrigger rename (workflow → ultracode) confirmed in v2.1.160; effort-levelultracodefix - Claude Code Hooks — Stop/SubagentStop
hookSpecificOutput.additionalContext(v2.1.163) — feedback without blocking - CLI Reference —
/plugin list --enabled/--disabled(v2.1.163);--toolsGrep/Glob fix (v2.1.162);/btwcopy shortcut (v2.1.163) - Week 23 Digest — Opus 4.8 launch, dynamic workflows flip-on, plugin auto-load from
.claude/skills; the W24 releases are the cleanup and hardening pass after that rollout - Claude Agent SDK —
claude -pfixes (hanging + Bedrock CI=true) affect SDK programmatic usage; parallel-tool resilience applies to any Agent SDK session - Claude Code Subagents —
done/totalcounter on agents rows,waitingForin--json, parallel-tool resilience - Essential MCP Servers — MCP
timeoutsub-1000 ms fix (v2.1.162); stdio MCPCLAUDE_CODE_SESSION_IDon resume (v2.1.163);/mcpunused-connectors collapse (v2.1.161) - Anthropic + SpaceX Compute Deal — rate limits context; the June 15
claude -p→ SDK credit split confirmed in W21