claudekit / updates / claude-code-2-1-172
[ PATCH · ]

Claude Code 2.1.172

Sub-agents can now spawn their own sub-agents up to 5 levels deep. Amazon Bedrock reads the AWS region from ~/.aws config files when AWS_REGION isn't set, matching AWS SDK precedence, and a search bar lands when browsing a marketplace's plugins in /plugin. Sessions using 1M context without usage credits no longer get permanently stuck — they automatically compact back under the standard context limit. A batch of model-selection fixes also lands: availableModels restrictions now apply to subagent model overrides and the dispatch model picker, and WebFetch(domain:*.example.com) wildcard domain rules now actually match subdomains.

Official announcement →

This article is a summary based on official documentation.

What changed

Claude Code 2.1.172 shipped on June 10, 2026. Sub-agent nesting opens up to 5 levels, Bedrock region resolution now matches AWS SDK conventions, and a cluster of regressions around model selection (availableModels, the /model picker, opusplan) and permission wildcard rules gets cleaned up, alongside performance work for long conversations and idle CPU.

New features

  • Sub-agents can spawn their own sub-agents (up to 5 levels deep)

    Sub-agents could not delegate their own sub-tasks, so complex task decomposition had to be orchestrated entirely by the main agent. Sub-agents can now spawn their own sub-agents, up to 5 levels deep.

  • Bedrock reads the AWS region from ~/.aws config files

    Without the AWS_REGION environment variable, Bedrock had no region — configuration that worked with the AWS CLI and SDKs did not carry over. Amazon Bedrock now reads the AWS region from ~/.aws config files when AWS_REGION isn’t set, matching AWS SDK precedence, and /status shows where the region came from.

  • Search bar when browsing a marketplace’s plugins in /plugin

    Long marketplace plugin lists meant scrolling to find anything. A search bar now filters the list while browsing.

  • model attribute on the claude_code.lines_of_code.count OTEL metric

    The lines-of-code metric could not be broken down by which model produced the work. The new model attribute makes per-model aggregation possible.

Key improvements

  • Long-conversation performance

    Redundant message normalization and full message-history transforms accumulated as conversations grew. Redundant normalization was removed, and full history transforms are skipped when streaming tool-use state is unchanged.

  • Reduced idle CPU usage

    The /goal status chip re-rendered the terminal at 5 Hz while idle, and UI re-renders were frequent while subagents ran in parallel. Both paths now re-render less.

  • Claude in Chrome batched tool loading

    Browser tools loaded one call per tool. They now load in a single batched call.

  • Improved non-interactive Usage Policy refusal message

    A Usage Policy refusal in non-interactive runs gave little guidance. The message now suggests starting a new session or changing your model.

  • /code-review keeps the ultra option visible

    The ultra option was hidden when not signed in to claude.ai, so the feature was undiscoverable. It now stays visible with an explanation that the cloud review requires a claude.ai account.

  • Shorter Remote Control footer indicator

    The footer indicator is shortened to “/rc active” and hidden on narrow terminals.

Bug fixes

Sessions & context

  • Sessions using 1M context without usage credits getting permanently stuck — the session now automatically compacts back under the standard context limit.
  • Repeating “an image in the conversation could not be processed and was removed” error when the conversation contained multiple images — fixed.
  • Agents view keeping a session under Working with a busy spinner for up to 30 seconds after the worker replied — fixed.

Background agents

  • Background agents potentially reading another directory’s project settings (.mcp.json approvals, trust) when dispatched onto a pre-warmed worker — fixed.
  • Background-session attach failing with EAUTH for sessions started on an older version after the daemon auto-updated — fixed.
  • A background sub-agent staying stuck as “active” in the agent panel after a nested agent it spawned was stopped — fixed.

Model selection

  • availableModels restrictions not being applied to subagent model overrides, the agent dispatch model picker, and the advisor model — fixed.
  • availableModels allowlists hiding the /model picker’s Opus and Sonnet 1M rows when entries use version-specific IDs like claude-opus-4-8 — fixed.
  • The /model picker on Bedrock offering models the provider doesn’t serve — selecting one silently switched the session model and lit the selection marker on multiple rows. Fixed.
  • Model IDs getting a doubled 1M-context suffix (e.g. [1M][1m]) when ANTHROPIC_DEFAULT_OPUS_MODEL already includes one — fixed.
  • opusplan model setting not shipping with 1M context in plan mode for entitled users — fixed; the opusplan[1m] workaround now also correctly switches to Opus in plan mode.
  • /model suggestions in the claude agents dispatch input rendering with a misleading slash prefix and showing models disabled for your org — fixed.

Permissions & memory

  • WebFetch(domain:*.example.com) wildcard domain rules never matching subdomains in allow, deny, and ask position — fixed, along with file permission rules with mid-pattern wildcards (e.g. Read(secrets-*/config.json)) being rejected at startup.
  • Up-arrow prompt history showing the main agent’s prompts while a subagent’s chat tab is open — fixed.
  • Memory recall not finding mounted team memory stores (CLAUDE_MEMORY_STORES) in remote sessions — fixed.
  • Workflow validation rejecting scripts whose prompt strings or comments merely mention Date.now()/Math.random() — fixed.

Terminal & platform

  • Mouse tracking disabled on Windows consoles that don’t fully support it.
  • The /plugin marketplace list losing its cursor after backing out of a long plugin list, and Esc from the plugin browser returning to the wrong tab — fixed.
  • [VS Code] PowerShell tool calls rendering as raw JSON instead of a proper command display and permission dialog — fixed, and ANSI escape codes are stripped from displayed shell output.

Notes

  • 2.1.170 was the Fable 5 access release; 2.1.171 was not published — 2.1.170 contained only the Claude Fable 5 access note and a fix for sessions not saving transcripts when launched from the VS Code integrated terminal, so it is not covered as a standalone post; Fable 5 itself is covered separately. 2.1.171 was never published to GitHub Releases.
  • Sub-agent nesting is capped at 5 levels — sub-agents can spawn sub-agents, but depth is limited to 5.
  • Check Bedrock region with /status — when the region comes from ~/.aws config instead of AWS_REGION, /status shows where it came from.
  • Orgs restricting models via availableModels should re-verify behavior — restrictions now actually apply to subagent overrides, the dispatch picker, and the advisor model. Paths that previously bypassed the restriction will behave differently after upgrading.
  • Audit WebFetch wildcard domain rulesdomain:*.example.com patterns now actually match subdomains. Allow rules that silently never applied (causing repeated prompts) start working after the upgrade — and so do deny rules.