Sweep 19 Sep 2026 · 02:36Z Build v2.1.278 500 read Stable v2.1.267 Latest v2.1.278 Next v2.1.278 Feeds RSS JSON llms.txt Unofficial
Claude Code v2.1.269 ·

Changes to how subagents are spawned with $.agent.spawn

$.agent.spawn gained fire-and-forget background launches with per-session budgets, a returned agentId, and hook-gated dispatch

TierUse it nowhow much it should matter to you
Useful4my rating, 1 to 5
Signal3worth watching, 1 to 5
AreaPlugin SDKwhat it touches
KindImprovementsin v2.1.269,
Group of 4 Use it now Notable

$.agent.spawn gained fire-and-forget background launches with per-session budgets, a returned agentId, and hook-gated dispatch

What

  • $.agent.spawn can now be launched as fire-and-forget: a spawn wrapper enforces a budget of 50 spawns per session and at most 4 concurrently running agents per plugin, then returns a 'started' result immediately without waiting for the agent to finish, letting it keep running in the background; failures surface later only through a log line.
  • On success, $.agent.spawn results now include an agentId field alongside the existing model/text/isError fields.
  • The agent.spawn hook pipeline now only runs (with its 'started'/dispose telemetry) when enabled by a check; otherwise it returns a no-op object that does nothing on start or dispose.
  • The debug log line for a hook that rewrites a subagent's model on spawn no longer includes what the model ultimately resolves to, only the raw before/after model strings.

Why These changes make spawning subagents more flexible for background/plugin use cases (not every spawn needs to block and wait), while adding guardrails (budgets, concurrency limits) to prevent runaway spawning, and giving callers an id to track the agent they started.

See this entry in the whole of v2.1.269 →