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

Claude Code 2.1.217

Emoji shortcode autocomplete lands in the prompt input (`:heart:` → ❤️), and warnings now surface when transcript writes fail silently or session saving is off. To rein in runaway subagents, concurrent runs are capped by default (20), nested spawning is off by default, and `--max-budget-usd` now halts background subagents at the cap. Fixes cover corporate mTLS, proxy, and OAuth settings being ignored in Claude Desktop, auto-compact on Opus 4.8 over Bedrock, a memory leak that kept truncated MCP outputs in memory, and Windows auto-updates that could leave `claude.exe` missing.

Official announcement →

This article is a summary based on official documentation.

What changed

Claude Code 2.1.217 shipped on July 21, 2026. Emoji shortcode autocomplete arrives in the prompt input, and warnings now surface when transcripts are being lost silently. The headline theme is reining in runaway subagents: a concurrency cap, nested spawning off by default, and budget-cap enforcement all land together. The rest of the release is enterprise and stability work — corporate network settings in Claude Desktop, auto-compact over Bedrock, and a memory leak.

New features

  • Emoji shortcode autocomplete

    Inserting an emoji meant copying one in from outside the input. Now you can type :heart: in the prompt input to insert ❤️, or :hea to get suggestions. Disable it with the emojiCompletionEnabled setting.

  • Warnings when transcript writes fail

    When the disk was full or session saving was off due to an inherited environment variable, transcripts were lost silently with no indication. Now Claude Code warns when transcript writes are failing or session saving is off, instead of losing transcripts silently.

Key improvements

  • Cap on concurrently-running subagents

    A single message could fan out unbounded background subagents, so one message could spin up an unexpected number at once. There’s now a cap on concurrently-running subagents (default 20, override with CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS).

  • Nested subagent spawning off by default

    Subagents spawning their own nested subagents could lead to unexpected fan-out. Subagents no longer spawn nested subagents by default; set CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH to allow deeper nesting.

  • --max-budget-usd now stops background subagents

    Reaching the budget cap didn’t stop subagents already running in the background, so costs could run past the cap you set. Now, once the cap is reached, new spawns are denied and running background agents are halted.

  • Clickable footer PR badge links

    Over ssh or tmux, where terminal hyperlink support can’t be detected, the footer PR badge wasn’t clickable. It’s now a clickable hyperlink even when support can’t be detected; set FORCE_HYPERLINK=0 to opt out.

  • Login-expiry warning moved to 3 days out

    The login-expiry warning appeared 5 days before expiry, well ahead of the actual deadline. It now appears 3 days before expiry.

  • Capped the frontend-design plugin tip

    The frontend-design plugin suggestion tip repeated indefinitely. It’s now capped at 3 lifetime impressions.

Bug fixes

Sessions and resume

  • Fixed auto-compact never triggering for Claude Opus 4.8 on Bedrock, and /compact failing once over the limit.
  • Fixed --resume/--continue and /resume failing with a TypeError when a transcript has a malformed attachment entry.
  • Fixed the transcript preview sitting flush against the input area when attaching to a starting background session — it now leaves the same one-line gap as the live layout, so the transcript no longer shifts when the session takes over.

Background sessions and subagents

  • Fixed background session isolation not canonicalizing symlinked working directories, which could let sessions escape their workspace folder.
  • Fixed background shells sometimes becoming impossible to stop after a session is sent to the background (/background or ) or when the session exits on a heavily loaded machine — most visible on Windows.

Enterprise and networking

  • Fixed corporate mTLS, TLS-verify, OAuth scope, and proxy settings being ignored in Claude Desktop sessions.
  • Fixed managed settings that set OTEL_EXPORTER_OTLP_ENDPOINT not governing all signals — lower-scope, signal-specific overrides no longer redirect telemetry away from the managed endpoint.

Platform and stability

  • Fixed a memory leak where truncated MCP tool outputs kept the full untruncated result in memory for the rest of the session.
  • Fixed Windows auto-update failures that could leave claude.exe missing — failed updates now restore the preserved executable automatically.
  • Fixed a CLAUDE.md or SKILL.md paths frontmatter value with many brace groups OOM-killing or stalling the CLI at startup — brace expansion is now budget-bounded.
  • Fixed screen reader mode’s startup announcement being cut off by the first prompt render, and the thinking status row re-rendering every few seconds to update elapsed time and token counts.
  • Fixed Remote Control sessions not showing a pending permission prompt or dialog to viewers that connected after it appeared.

Notes

  • Nested subagents are now off by default — 2.1.172 opened nested subagent spawning up to 5 levels deep, but as of this release subagents no longer spawn nested subagents by default. If a workflow relied on multi-level delegation, set CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH to re-enable deeper nesting.
  • The default concurrency cap is 20 — if a workflow fanned out large parallel batches from one message, concurrent runs are now capped at 20 by default. Raise CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS if you need more parallelism.
  • Disable emoji autocomplete with emojiCompletionEnabled — if turning :-prefixed input into emoji suggestions gets in the way, this setting turns it off.
  • Enterprise setups should re-check Claude Desktop network settings — corporate mTLS, proxy, and OAuth scope settings were being ignored in Claude Desktop sessions; if you had workarounds in place, behavior may change after updating.