diff --git a/CHANGELOG.md b/CHANGELOG.md
index 97c4a8e7a..7ca26b54c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## 2.1.220
+
+- Bug fixes and reliability improvements
+
## 2.1.219
- Added Claude Opus 5 (`claude-opus-5`), now the default Opus model — 1M context, fast mode at $10/$50 per Mtok
@@ -10,10 +14,7 @@
- Added nested subagent forwarding in stream-json: subagents spawned at depth-2+ now appear when `--forward-subagent-text` is set, keyed by their spawning Agent `tool_use` id
- Fixed `claude -p` text output dropping the answer already produced when a turn dies on a mid-stream API error
- Added HTTP status and error text to `claude mcp list` and `/mcp` when a server fails to connect, and a warning for MCP config values with hidden leading or trailing whitespace
-- Fixed a permission you approved while a self-hosted runner was restarting being dropped when the session resumed, so the approved action now runs
- Fixed the Fable model row showing "Requires usage credits" for plans that include it, when a stale cache had baked the label in
-- Fixed a SIGTERM arriving while a self-hosted runner was starting up leaving a stale active row until the lease expired; it now deregisters cleanly
-- Added structured failure categories to self-hosted runner spawn and session failures, so hook errors, runner crashes and config errors can be told apart
- Fixed the `/model` picker showing the merged Opus row as plain "Opus" instead of "Opus (1M context)"
- Fixed copy-on-select inside GNU screen printing base64 into the terminal instead of copying the selection
- Fixed Remote Control clients keeping a stale fast-mode status after a model switch, reconnect, or failed org check
@@ -953,7 +954,6 @@
## 2.1.169
-- Self-hosted runner: added a `post-session` lifecycle hook that runs after the session ends and before the workspace is deleted, so you can snapshot uncommitted work or export logs; also made the child-process SIGTERM→SIGKILL window configurable (default unchanged at 5s)
- Added `--safe-mode` flag (and `CLAUDE_CODE_SAFE_MODE`) to start Claude Code with all customizations (CLAUDE.md, plugins, skills, hooks, MCP servers) disabled for troubleshooting
- Added `/cd` command to move a session to a new working directory without breaking the prompt cache mid-session
- Added a `disableBundledSkills` setting and `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` environment variable to hide bundled skills, workflows, and built-in slash commands from the model
diff --git a/feed.xml b/feed.xml
index bd5b4b7c2..154191677 100644
--- a/feed.xml
+++ b/feed.xml
@@ -6,7 +6,14 @@
Anthropic
- 2026-07-24T17:14:14Z
+ 2026-07-25T01:35:47Z
+
+ https://github.com/anthropics/claude-code/releases/tag/v2.1.220
+ Claude Code v2.1.220
+
+ 2026-07-25T01:35:47Z
+ <p>• Bug fixes and reliability improvements</p>
+ https://github.com/anthropics/claude-code/releases/tag/v2.1.219Claude Code v2.1.219
@@ -20,10 +27,7 @@
<p>• Added nested subagent forwarding in stream-json: subagents spawned at depth-2+ now appear when --forward-subagent-text is set, keyed by their spawning Agent tool_use id</p>
<p>• Fixed claude -p text output dropping the answer already produced when a turn dies on a mid-stream API error</p>
<p>• Added HTTP status and error text to claude mcp list and /mcp when a server fails to connect, and a warning for MCP config values with hidden leading or trailing whitespace</p>
-<p>• Fixed a permission you approved while a self-hosted runner was restarting being dropped when the session resumed, so the approved action now runs</p>
<p>• Fixed the Fable model row showing "Requires usage credits" for plans that include it, when a stale cache had baked the label in</p>
-<p>• Fixed a SIGTERM arriving while a self-hosted runner was starting up leaving a stale active row until the lease expired; it now deregisters cleanly</p>
-<p>• Added structured failure categories to self-hosted runner spawn and session failures, so hook errors, runner crashes and config errors can be told apart</p>
<p>• Fixed the /model picker showing the merged Opus row as plain "Opus" instead of "Opus (1M context)"</p>
<p>• Fixed copy-on-select inside GNU screen printing base64 into the terminal instead of copying the selection</p>
<p>• Fixed Remote Control clients keeping a stale fast-mode status after a model switch, reconnect, or failed org check</p>
@@ -605,34 +609,4 @@
<p>• Improved screen-reader output: decorative glyphs are now hidden, transcript symbols read as short labels, and nested tables read as Header: value. lines</p>
<p>• Improved the install script to explain when installation is killed by the system running out of memory</p>
-
- https://github.com/anthropics/claude-code/releases/tag/v2.1.199
- Claude Code v2.1.199
-
- 2026-07-02T23:35:12Z
- <p>• Stacked slash-skill invocations like /skill-a /skill-b do XYZ now load all leading skills (up to 5), not just the first</p>
-<p>• Fixed SSL certificate errors (TLS-inspecting proxies, missing NODE_EXTRA_CA_CERTS, expired certs) burning retries before showing actionable guidance — they now fail immediately with the fix hint</p>
-<p>• Fixed streaming responses being discarded when the API emits a mid-stream overloaded/server error after partial output — the partial is now kept with an incomplete-response notice</p>
-<p>• Fixed subagents cut off by a rate limit or server error silently failing instead of returning their partial work to the parent</p>
-<p>• Fixed subagents reporting API errors (e.g. usage limit reached) as successful results — the error is now reported to the parent agent</p>
-<p>• Fixed the background-agent daemon on Linux killing itself and every running agent every ~50 seconds after an unclean shutdown left a corrupted worker record</p>
-<p>• Fixed background agents failing to cold-start over SSH on macOS with "Could not switch to audit session" (regression in 2.1.196)</p>
-<p>• Fixed claude stop being silently undone when it raced a background-agent respawn — the respawn now honors the stop</p>
-<p>• Fixed background job progress indicators stalling for minutes while the job ran long commands</p>
-<p>• Fixed background sessions on memory-starved machines showing a generic error — they now indicate low memory and suggest freeing resources</p>
-<p>• Fixed remote sessions briefly flapping between Working and Idle in the agent view when a background agent completes</p>
-<p>• Fixed idle subagents vanishing from the agent panel while other subagents were still working; surplus idle agents now collapse into an expandable summary row</p>
-<p>• Fixed typing /model or /fast while viewing a subagent silently opening the lead's model picker — a notice now explains the command applies to the lead</p>
-<p>• Fixed SessionStart, Setup, and SubagentStart hooks silently hiding stderr when exiting with code 2 — the error is now shown in the transcript</p>
-<p>• Fixed claude --dangerously-skip-permissions daemon <subcommand> being treated as a chat prompt instead of running the subcommand</p>
-<p>• Fixed SendMessage silently misrouting when a re-spawned agent reuses a previous agent's name — the tool now detects the mismatch and asks the caller to retarget</p>
-<p>• Fixed opening or resuming a session with no new messages needlessly growing the transcript file</p>
-<p>• Fixed backgrounding a session with ← or /background dropping its /color from the agent view row</p>
-<p>• Fixed resetting a corrupted config file from the startup recovery dialog destroying it unrecoverably — it now backs up the file first</p>
-<p>• Fixed Claude in Chrome repeatedly opening the reconnect page when sessions run from different builds or config directories</p>
-<p>• Fixed plan mode not prompting for state-changing browser tool calls; read-only browser_batch calls are now correctly auto-allowed</p>
-<p>• Transient server rate-limit errors (429s unrelated to your usage limit) are now retried automatically with backoff for subscribers instead of failing the turn</p>
-<p>• CLAUDE_CODE_RETRY_WATCHDOG now raises the default retry count for non-capacity transient errors to 300 and lifts the cap of 15 on CLAUDE_CODE_MAX_RETRIES</p>
-<p>• claude agents session rows now show pull-request links as bare #N without the redundant "PR" label</p>
-