What
A subagent is a helper copy of Claude that your session starts to handle part of a task, either while you wait (synchronous) or in the background. Several things about how they start and report back changed.
- Background subagents: the abort controller (what stops a run when you cancel) is now linked to the parent's abort controller through a relay that can be detached.
- Synchronous subagents: launches now pass
parentAbortControllerand get backdetachParentAbortRelay, which is called when the subagent finishes. Before, a standalone relay was used. runId: task notifications from subagents running on their own now include it.usageLimitDenial: passed along when a run fails because of a usage limit.launchedWithDefaults: recorded for local and background tasks.- Remote subagent launches now work out their permission mode through a new helper that takes
declaredMode,parentModeToHandandmodel.
Why
Cancelling should now reach subagents more reliably, and the main session or an interface showing subagents can tell a usage-limit failure apart from other failures.