diff --git a/CHANGELOG.md b/CHANGELOG.md
index 08ccf93f6..d0eab90e4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,28 @@
# Changelog
+## 2.1.217
+
+- Added emoji shortcode autocomplete in the prompt input: type `:heart:` to insert ❤️, or `:hea` for suggestions — disable with the `emojiCompletionEnabled` setting
+- Added warnings when transcript writes are failing (e.g. disk full) or when session saving is off due to an inherited environment variable, instead of losing transcripts silently
+- 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 background session isolation not canonicalizing symlinked working directories, which could let sessions escape their workspace folder
+- Fixed auto-compact never triggering for Claude Opus 4.8 on Bedrock and `/compact` failing once over the limit
+- Fixed corporate mTLS, TLS-verify, OAuth scope, and proxy settings being ignored in Claude Desktop sessions
+- 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 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
+- Fixed `--resume`/`--continue` and `/resume` failing with a TypeError when a transcript has a malformed attachment entry
+- Fixed Remote Control sessions not showing a pending permission prompt or dialog to viewers that connected after it appeared
+- 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
+- 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 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
+- Improved footer PR badge links to be clickable hyperlinks even when terminal support can't be detected (e.g. over ssh/tmux); set `FORCE_HYPERLINK=0` to opt out
+- Changed the login-expiry warning to appear 3 days before expiry instead of 5
+- Capped the frontend-design plugin suggestion tip at 3 lifetime impressions instead of repeating indefinitely
+- Added a cap on concurrently-running subagents (default 20, override with `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`) so one message can't fan out unbounded background agents
+- Changed subagents to no longer spawn nested subagents by default; set `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` to allow deeper nesting
+- Fixed `--max-budget-usd` not stopping background subagents: once the cap is reached, new spawns are denied and running background agents are halted
+
## 2.1.216
- Added `sandbox.filesystem.disabled` setting to skip filesystem isolation while keeping network egress control
diff --git a/feed.xml b/feed.xml
index 16de73f1c..a8b3cf6a0 100644
--- a/feed.xml
+++ b/feed.xml
@@ -6,7 +6,33 @@
Anthropic
- 2026-07-20T22:13:53Z
+ 2026-07-21T21:35:04Z
+
+ https://github.com/anthropics/claude-code/releases/tag/v2.1.217
+ Claude Code v2.1.217
+
+ 2026-07-21T21:35:04Z
+ <p>• Added emoji shortcode autocomplete in the prompt input: type :heart: to insert ❤️, or :hea for suggestions — disable with the emojiCompletionEnabled setting</p>
+<p>• Added warnings when transcript writes are failing (e.g. disk full) or when session saving is off due to an inherited environment variable, instead of losing transcripts silently</p>
+<p>• Fixed a memory leak where truncated MCP tool outputs kept the full untruncated result in memory for the rest of the session</p>
+<p>• Fixed Windows auto-update failures that could leave claude.exe missing; failed updates now restore the preserved executable automatically</p>
+<p>• Fixed background session isolation not canonicalizing symlinked working directories, which could let sessions escape their workspace folder</p>
+<p>• Fixed auto-compact never triggering for Claude Opus 4.8 on Bedrock and /compact failing once over the limit</p>
+<p>• Fixed corporate mTLS, TLS-verify, OAuth scope, and proxy settings being ignored in Claude Desktop sessions</p>
+<p>• 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</p>
+<p>• 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</p>
+<p>• Fixed --resume/--continue and /resume failing with a TypeError when a transcript has a malformed attachment entry</p>
+<p>• Fixed Remote Control sessions not showing a pending permission prompt or dialog to viewers that connected after it appeared</p>
+<p>• 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</p>
+<p>• 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</p>
+<p>• 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</p>
+<p>• Improved footer PR badge links to be clickable hyperlinks even when terminal support can't be detected (e.g. over ssh/tmux); set FORCE_HYPERLINK=0 to opt out</p>
+<p>• Changed the login-expiry warning to appear 3 days before expiry instead of 5</p>
+<p>• Capped the frontend-design plugin suggestion tip at 3 lifetime impressions instead of repeating indefinitely</p>
+<p>• Added a cap on concurrently-running subagents (default 20, override with CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS) so one message can't fan out unbounded background agents</p>
+<p>• Changed subagents to no longer spawn nested subagents by default; set CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH to allow deeper nesting</p>
+<p>• Fixed --max-budget-usd not stopping background subagents: once the cap is reached, new spawns are denied and running background agents are halted</p>
+ https://github.com/anthropics/claude-code/releases/tag/v2.1.216Claude Code v2.1.216
@@ -580,37 +606,4 @@
2026-06-30T17:56:29Z<p>• Introducing Claude Sonnet 5: now the default model in Claude Code, with a native 1M-token context window and promotional pricing of $2/$10 per Mtok through August 31. Update to version 2.1.197 for access. https://www.anthropic.com/news/claude-sonnet-5</p>
-
- https://github.com/anthropics/claude-code/releases/tag/v2.1.196
- Claude Code v2.1.196
-
- 2026-06-29T23:27:24Z
- <p>• Added support for organization default models — admins set it in the org console; it shows as "Org default" (or "Role default") in /model when you haven't picked one yourself</p>
-<p>• Added readable default names for sessions at start, making them easier to identify and message</p>
-<p>• Added clickable file attachments in chat — Cmd/Ctrl-click reveals the file in Finder/Explorer</p>
-<p>• Security: claude mcp list/get no longer spawn .mcp.json servers that a repo self-approved via a committed .claude/settings.json; untrusted workspaces show ⏸ Pending approval</p>
-<p>• Fixed waking a background job permanently deleting its conversation and re-running the original prompt when the transcript probe misread a real transcript; the file is now set aside, never deleted</p>
-<p>• Fixed the rate-limit warning flickering off and rate-limit telemetry being over-counted when multiple parallel requests were in flight at the moment a usage limit was hit</p>
-<p>• Fixed duplicate recap lines after a background session's turn: a schema-rejected StructuredOutput attempt no longer renders alongside its retry</p>
-<p>• Fixed PowerShell git diff/git grep, egrep/fgrep, and quoted search patterns containing | being reported as failures when they exit 1, matching Bash behavior</p>
-<p>• Fixed multiple claude agents side panel issues: keyboard focus getting stuck when opening an agent, background jobs losing their subagent types on every open, and sessions showing incorrect status while actively running</p>
-<p>• Fixed claude agents --dangerously-skip-permissions silently falling back to auto mode instead of showing the bypass disclaimer and applying bypass mode to spawned agents</p>
-<p>• Fixed mid-turn crash recovery for Remote sessions — sessions interrupted by a server restart now auto-resume on the next worker</p>
-<p>• Fixed sessions moved with /cd reappearing in the old directory's resume list after a non-graceful exit when the old path contained special characters</p>
-<p>• Fixed claude plugin validate skipping local plugins whose source is "." and stopping after the first error class</p>
-<p>• Fixed Esc Esc at an idle prompt not opening the rewind menu (regression); use Ctrl+C or Ctrl+X Ctrl+K to stop background agents</p>
-<p>• Fixed MCP OAuth requesting the authorization server's full scopes_supported catalog when no scope is specified, causing invalid_scope failures on GitLab self-hosted and other enterprise IdPs</p>
-<p>• Fixed /context showing 0 tokens for all tool groups on Bedrock</p>
-<p>• Fixed /deep-research misreporting verifier failures as "all claims refuted" instead of unverified</p>
-<p>• Fixed plugin dependency version pins not being honored when the marketplace was added as a local folder path backed by a git repo</p>
-<p>• Fixed claude agents session status: completed rows no longer flip between "Done" and "Needs your input", stalled agents are now labeled "Needs attention", and results that mention a PR show a clickable link</p>
-<p>• Fixed voice dictation swallowing spaces and spuriously starting a recording during very fast typing when voice mode is enabled</p>
-<p>• Improved background session reliability: long-running commands and workflows now survive the session's process being stopped, restarted, or updated — including on Windows, where background shells are handed off instead of being killed</p>
-<p>• Improved background agents: workers killed by a daemon restart are now automatically resumed from where they left off the next time the agents view opens</p>
-<p>• Improved /code-review workflow: merged five cleanup finders into one, cutting token usage by roughly 25%</p>
-<p>• Reduced per-frame rendering work in the terminal UI by skipping no-op subtree walks during streaming</p>
-<p>• The streaming idle watchdog is now on by default for all providers — it aborts and retries when a response stream produces no events for 5 minutes. Set CLAUDE_ENABLE_STREAM_WATCHDOG=0 to disable.</p>
-<p>• Remote Control is now disabled when ANTHROPIC_BASE_URL points at a non-Anthropic host, matching the existing behavior under CLAUDE_CODE_USE_BEDROCK/_VERTEX/_FOUNDRY</p>
-<p>• Changed opening the agents view from a foreground session to require a single ← press instead of two, matching the behavior in background sessions</p>
-