Subagent List
When the main agent spawns subagents via the Agent tool, the SDK accumulates each
into a docked panel showing its status (running / completed / failed / cancelled)
and the child tools it ran.
Subagent List
When the main agent spawns subagents via the Agent tool, the SDK accumulates each into a docked panel showing its status (running / completed / failed / cancelled) and the child tools it ran. Status is driven by subagent.start / complete events, not the Agent tool's own completion.
// Docked panel appears automatically; localize via locale
<Chatbot
locale="en-US"
config={{ botProviderEndpoint: '...' }}
customChannelId="my-channel"
/>The Agent tool and every child tool (carrying parentToolUseId) are routed out of the main tool-call group into the docked subagent panel. Labels follow the locale prop.
How It Works
- A subagent's status is driven by the
asgard.subagent.start/.completeevents, not by theAgenttool's own completion — async subagents often complete theAgenttool early while they are still running. - The correlation key is
parentToolUseId(thetoolUseIdof the spawningAgenttool call). - The
Agenttool and every child tool (carryingparentToolUseId) are routed out of the main tool-call group into the docked<SubagentList>panel; panel labels follow thelocaleprop.
Headless Usage
Without <Chatbot>, use the useSubagents(channel) hook to get Subagent[] and render
it yourself; the framework-agnostic building block is deriveSubagents(conversation) from
@asgard-js/core. See Headless.
See Also
- Task Check List — another docked panel
- Tool Call — regular tool-call grouping