← All briefs
Matins
21 changes / 4 actionable / 1 deep dive
Claude Code

TL;DR

  • Parallel tool calls no longer fail as a batch. A failed Bash command in a parallel group used to cancel the remaining calls; now each tool returns its own result independently.
  • claude mcp commands no longer print secrets. list, get, and add previously expanded ${VAR} references and showed credential headers and URL secrets in plain text; they're now redacted.
  • Background agents dispatched from claude agents now use the correct model. They were booting on a stale model from the daemon's environment instead of reading settings.json (more below).
  • claude -p stdout is no longer corrupted by background subagents. Output from background subagents was leaking into --output-format text and json stdout, silently breaking scripts that parse the output.

New in 2.1.161

2.1.161 (June 3, 2026)

  • OTEL_RESOURCE_ATTRIBUTES values are now included as labels on metric datapoints, so you can slice usage metrics by custom dimensions like team or repo
  • claude agents rows now show done/total before the detail when work is fanned out; peek shows the longest-running item
  • /mcp now collapses claude.ai connectors you've never signed in to behind a "Show unused connectors" row
  • Parallel tool calls: a failed Bash command no longer cancels other calls in the same batch. Each tool returns its own result independently
  • Fullscreen mode: clipboard now uses wl-copy/xclip/xsel on Linux when available, copies to both the clipboard and PRIMARY selection for middle-click paste, and the "hold {key} for native selection" hint now shows the correct key per terminal
  • Fixed the /effort dialog, workflow animations, and prompt keyword shimmer not honoring the "Reduce motion" setting
  • Fixed forceLoginOrgUUID/forceLoginMethod managed-settings policies blocking third-party provider sessions (Bedrock, Vertex, Foundry, Mantle) alongside the org pin (regression in 2.1.146)
  • Fixed background subagent output corrupting claude -p stdout when using --output-format text or json
  • Fixed /usage-credits starting a re-login for Team and Enterprise admins instead of pointing to the organization's usage settings page
  • Fixed /autofix-pr reporting "cannot run on the default branch" when the session is inside a git worktree or another repository
  • Fixed --resume picker not showing sessions from the current directory when it isn't a git worktree (e.g., jj workspaces)
  • Fixed Windows hooks that invoke bash explicitly (e.g., /usr/bin/bash script.sh) failing with "command not found" or "cannot execute binary file"
  • Fixed OpenTelemetry log events (user_prompt, api_request, tool_result, tool_decision) being silently dropped when emitted before telemetry initialization completed
  • Fixed claude mcp list/get/add printing secrets to the terminal: ${VAR} references are no longer expanded, and credential headers and URL secrets are redacted
  • Fixed Workflow agents spawned with isolation: "worktree" in background sessions being blocked from editing files inside their own worktree
  • Fixed background sessions dispatched from claude agents booting on a stale model from the daemon's environment instead of the model in settings.json
  • Fixed a potential crash when rendering Write tool results after resuming a session
  • Fixed completed subagents getting stuck showing as running when an error occurs while finalizing their result
  • Fixed EADDRINUSE errors from tools that bind Unix sockets under $TMPDIR when CLAUDE_CODE_TMPDIR is set to a deep path
  • Improved terminal rendering performance by stabilizing the layout engine's JIT compilation profile
  • Improved rendering performance for large file writes
  • [VSCode] Added a tip suggesting disabling terminal GPU acceleration (or running /terminal-setup) to fix garbled glyphs

Notes

Background agent model selection

The daemon's cached environment was overriding your settings.json model. When claude agents dispatches a background session, the daemon process spawns it. Before this fix, the daemon passed its own cached model to the child, ignoring your /model selection. Since 2.1.153 made /model persistent across sessions, this mismatch became more visible: you'd pick a new model, but dispatched agents would keep running the old one. The fix re-reads settings.json at session boot.