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

Claude Code 2.1.219

Claude Opus 5 (`claude-opus-5`) is now the default Opus model, with 1M context and fast mode at $10/$50 per Mtok. `/fast` now applies to Opus 5 and Opus 4.8, and Opus 4.7 is out of fast mode. Subagents can spawn nested subagents up to depth 3 by default, and dynamic workflows default to a medium size guideline that aims for fewer than 15 agents. The release also adds `sandbox.network.strictAllowlist` to deny non-allowlisted hosts for sandboxed commands without prompting, a `DirectoryAdded` hook that fires when a working directory is registered mid-session, and fixes `claude -p` dropping the answer it had already produced when a turn dies on a mid-stream API error.

Official announcement →

This article is a summary based on official documentation.

What changed

Claude Code 2.1.219 shipped on July 24, 2026, and centers on Claude Opus 5. The new model takes the default Opus slot, which brings fast-mode eligibility, the /model picker, and the claude-api skill’s defaults along with it. Agent orchestration also shifts: the default subagent spawn depth goes from 1 to 3, and dynamic workflows pick up a size guideline. On top of that come a sandbox network setting, a new hook, headless diagnostics, and fixes across model display, self-hosted runners, and terminal input.

New features

  • Claude Opus 5

    Opus 4.8 held the default Opus slot. Claude Opus 5 (claude-opus-5) is now available and is the default Opus model, with 1M context and fast mode at $10/$50 per Mtok.

  • sandbox.network.strictAllowlist setting

    A sandboxed command reaching a host outside the allowlist prompted every time, which stalled unattended runs. The new sandbox.network.strictAllowlist setting denies non-allowlisted hosts for sandboxed commands without prompting.

  • DirectoryAdded hook

    There was no way to react when a new working directory was registered partway through a session. The DirectoryAdded hook now fires after /add-dir or the SDK register_repo_root control request registers a new working directory mid-session.

  • mcp_server_errors in the headless stream-json init event

    When config validation skipped a --mcp-config entry, headless runs gave no signal that a server was missing. The stream-json init event now carries mcp_server_errors listing the skipped entries, and terminal runs print a startup warning.

  • workflowSizeGuideline settings key

    The advisory Dynamic workflow size guideline could only be set from /config, which made it hard to distribute a value across a team. The workflowSizeGuideline settings key now lets it be set from any settings file; the /config row is hidden while one does.

  • Nested subagent forwarding in stream-json

    With --forward-subagent-text set, only top-level subagents showed up, so work done further down was invisible. Subagents spawned at depth-2+ now appear as well, keyed by their spawning Agent tool_use id.

Key improvements

  • Subagents spawn nested subagents up to depth 3

    Subagents couldn’t spawn subagents of their own (depth 1), so multi-stage work was hard to delegate in one go. The default depth is now 3. Set CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1 to disable nesting.

  • Dynamic workflows default to a medium size guideline

    With no size guidance, a dynamic workflow could fan out to far more agents than the task needed. Dynamic workflows now default to a medium size guideline (aim for fewer than 15 agents); pick another size or unrestricted with Dynamic workflow size in /config. The running-workflow status line shows the current default size and points to /config for changing it.

  • Fast mode model lineup

    Fast mode still covered Opus 4.7. Opus 4.7 has been removed from fast mode, so /fast now applies to Opus 5 and Opus 4.8.

  • claude-api skill defaults to Claude Opus 5

    The claude-api skill still pointed at the previous generation. It now defaults to Claude Opus 5, with a migration path from Opus 4.8.

  • /model picker highlights the newest model

    The picker’s highlight covered an arbitrary subset of the list, so it didn’t signal what was new. It now highlights only the newest model’s name, so the highlight marks the new release.

  • Managed MCP allowlist and denylist ${VAR} resolution

    Managed MCP allowlist/denylist ${VAR} entries resolved from settings-file env, which left room for whoever could edit a settings file to change them. They now resolve from the startup environment and managed-settings env instead.

  • Diagnostics when an MCP server fails to connect

    A failed MCP connection gave little indication of why. claude mcp list and /mcp now show the HTTP status and error text when a server fails to connect, plus a warning for MCP config values with hidden leading or trailing whitespace.

  • Structured failure categories for self-hosted runners

    Self-hosted runner spawn and session failures were reported as one undifferentiated class. They now carry structured failure categories, so hook errors, runner crashes and config errors can be told apart.

  • Remote Control error names the setting behind it

    “Remote Control is only available via api.anthropic.com” didn’t say which setting caused it. The error now names the specific setting.

  • claude --teleport reports repo mismatches

    It was hard to tell what was out of sync when your checkout didn’t match the session’s repo. claude --teleport now shows which repo your current checkout points at when it doesn’t match.

Key bug fixes

Model display

  • The /model picker showing the merged Opus row as plain “Opus” instead of “Opus (1M context)” — fixed.
  • The Fable model row showing “Requires usage credits” for plans that include it — fixed; a stale cache had baked the label in.
  • Remote Control clients keeping a stale fast-mode status after a model switch, reconnect, or failed org check — fixed.

Sessions and self-hosted runners

  • claude -p text output dropping the answer already produced when a turn dies on a mid-stream API error — fixed.
  • A permission you approved while a self-hosted runner was restarting being dropped when the session resumed — fixed, so the approved action now runs.
  • A SIGTERM arriving while a self-hosted runner was starting up leaving a stale active row until the lease expired — fixed; it now deregisters cleanly.

Terminal and input

  • Copy-on-select inside GNU screen printing base64 into the terminal instead of copying the selection — fixed.
  • Vim mode: pressing ← on an empty prompt returning to the agent view only from INSERT mode — fixed; it now works from NORMAL mode too.
  • Screen-reader mode rewriting the entire input line on every keystroke instead of echoing only the typed character — fixed.
  • CLAUDE_CODE_GIT_BASH_PATH on Windows exiting or being used as bash when the path isn’t a bash/sh binary — fixed; it’s now ignored with a warning.

Notes

  • Claude Opus 5 is the default Opus modelclaude-opus-5 supports 1M context, with fast mode at $10/$50 per Mtok.
  • /fast applies to Opus 5 and Opus 4.8 — Opus 4.7 has been removed from fast mode.
  • Nested subagents are on by default — the default spawn depth is 3; set CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1 to disable nesting.
  • Dynamic workflows default to medium — aim for fewer than 15 agents, or pick another size or unrestricted with Dynamic workflow size in /config.
  • sandbox.network.strictAllowlist is opt-in — enable it in settings to deny non-allowlisted hosts for sandboxed commands without prompting.
  • Setting workflowSizeGuideline hides the /config row — where the value is distributed through a settings file, the Dynamic workflow size row no longer appears in /config.