Delegate to subagents
Give the built-in harness bounded child agents that share its sandbox.
Expose a child agent as a tool
Section titled “Expose a child agent as a tool”Declare a subagent with defineHarnessSubagent() and expose it as a tool of the parent harness. It borrows the parent’s sandbox but keeps its own conversation history, permissions and limits.
The coordinator decides when to call review. Each call starts the reviewer with a fresh history; result.text holds the coordinator’s final answer and result.usage includes the reviewer’s tokens.
What the parent sends and receives
Section titled “What the parent sends and receives”Children share the parent’s sandbox: they allocate no provider and open no workspace, so the parent sees their edits at once. Delegations run one at a time, even when the parent’s other tools run in parallel.
Limit delegated work
Section titled “Limit delegated work”Each loop keeps its own step and tool-call counts, while token budgets add up across descendants.
API reference: HarnessLimits.
A tool error goes back to the parent model, unless the parent sets toolExecution: { onError: "fail" }. Cancelling the dispatch also stops the child’s model requests and commands.
API reference: HarnessLimits and HarnessSubagentOptions.
Permissions and hooks
Section titled “Permissions and hooks”The parent’s and the child’s permissions both apply to every child tool call, including inputs rewritten by a hook. Hooks run only in the harness that declares them: the parent’s hooks do not see the child’s tool calls.
Resume a child conversation
Section titled “Resume a child conversation”The child’s transcript goes to its harness’s conversation store and records parentConversation and parentCallId. Pass its conversation ID as continuation: { id } to a dispatch() whose agent is the child to continue it on its own.
Resuming the parent does not run the child again: the parent replays the recorded tool results. Set conversations: false on the child harness to keep no child transcript.
Follow and steer subagents
Section titled “Follow and steer subagents”Each delegation emits a subagent event when it starts, finishes or fails. Every other event from the child, including usage, carries its run id in subagentId.
API reference: AgentEvent.
To send an instruction to a running child, pass its id as subagent to steering.send(). See Steering a running agent.
Limits
Section titled “Limits”- The child must be a built-in harness agent;
defineHarnessSubagent()rejects CLI agents. - Token budgets use reported usage: a response in flight can pass a ceiling before Outpost sees it. They are not prepaid spending caps.
- When you resume a parent whose delegation was interrupted, that call comes back to the model as a tool error. Outpost does not restart the child.
- A child cannot release the shared sandbox.
API: defineHarnessSubagent · HarnessSubagentOptions · HarnessLimits · AgentEvent.