Sub-Agents
Let the AI delegate work by spawning child chat nodes that run tasks and report back.
Last updated: July 9, 2026
Sub-agents let the AI split work up. When a task is big or naturally parallel, the model can spawn one or more child Chat Nodes on your canvas — each sub-agent runs its own conversation independently and reports its final answer back to the parent, which then continues with the results.
You don't need to enable anything: just ask. Prompts like "run three sub-agents to research these topics in parallel" or "delegate this comparison to sub-agents" trigger the behavior on models that support tool calling.
How it works
-
The parent AI calls its run-subagent tool with a short label and a self-contained task for each delegation — multiple calls in the same turn run in parallel
-
A new chat node appears on your canvas, connected to the parent, and starts working immediately
-
The sub-agent inherits the parent conversation as connected-node context, plus its task instructions
-
When it finishes, its final answer flows back into the parent's tool result and the parent resumes
The AI can also read your canvas structure through a canvas-context tool, so it can see what nodes already exist when deciding what to spawn. See Core Concepts for how connected-node context works.
Depth is capped at 1 level: a sub-agent is not offered the run-subagent tool itself, so sub-agents cannot spawn their own sub-agents and delegation can't recurse indefinitely.
Running sub-agents on different models
Each sub-agent can run on a different model than the parent chat. Just name the models in your prompt and the AI assigns one per sub-agent when it spawns them:
"Debate whether we should rewrite the backend in Rust. Run three sub-agents to argue it — one on @grok-4, one on @gpt-5.5, one on @opus — then synthesize a verdict."
- Loose references work — "@opus", a bare model id, an exact provider-and-model pair, or the model's display name all resolve to the closest match.
- Only your enabled models can be picked — the AI is offered the models you've turned on in Models, plus the built-in Basic / Pro / Advanced tiers. If it names a model that isn't available, that sub-agent fails immediately with the list of valid options, and the parent can correct itself or ask you.
- Say nothing about models and behavior is unchanged — every sub-agent inherits the parent chat's model.
- The child node shows its model — check the spawned node's model picker to confirm which model is answering.
What you see while it runs
Inside the parent's tool-call card, a live activity card tracks each sub-agent:
- A status line — Starting subagent…, then Subagent is thinking… or Subagent is responding…, prefixed with the child node's label
- Running tool: the tool the sub-agent is currently using, when it makes its own tool calls
- A streaming preview of the last stretch of the sub-agent's response text
- Jump to node — pans and zooms the canvas to the child node so you can watch it work
- Cancel — stops that sub-agent's run
After the run
The child node persists on your canvas. You can:
-
Open it and read the full conversation, including every tool call it made
-
Continue chatting in it directly — it's a normal chat node
-
Keep it connected as context, or delete it if it was throwaway work
Runs can also end as failed, cancelled, or timed out — the parent is told the outcome either way and explains what happened.
Use cases
- Parallel research: "Spawn a sub-agent for each of these three competitors and compare their pricing" — three nodes work simultaneously, the parent synthesizes.
- Multi-model debates: run the same question past several models — "have @grok-4, @gpt-5.5, and @opus each take a position" — and let the parent weigh their answers.
- Long side-quests: delegate a deep document analysis to a sub-agent while the parent conversation stays focused on the main thread.
- Auditable delegation: unlike hidden background steps, every sub-agent is a visible node — you can inspect exactly how it reached its answer.
- Iterating on a delegation: if a sub-agent's answer is close but not right, jump to its node and continue the conversation there instead of re-running everything.