Sub agents are temporary. They have no identity, memory or channel of their own, and never appear in the Agent list.
Two Benefits
- Isolated context: intermediate work does not consume the main conversation’s context, which saves tokens and keeps the model’s attention on what matters
- Parallel execution: several sub agents can run at the same time, so the total time is that of the slowest one
Inherited and Isolated
A sub agent inherits part of the main Agent’s environment, but it is not a copy of it:
A sub agent therefore knows only what the main Agent passes to it. It cannot see the conversation and cannot ask the user anything, so every path, identifier, constraint and settled decision it needs must be stated when the task is created.
When It Is Used
The main Agent decides on its own. There is nothing to configure and no command to run. A sub agent is created when:- Several unrelated things can be done at the same time, such as “research product A and product B separately”
- A task produces a lot of intermediate output but only the conclusion is needed, such as “check whether this error has a known fix in the community”
- The main Agent needs the intermediate results to continue (reading a few files or running a few searches is ordinary work)
- The task depends on earlier parts of the conversation, or needs the user to confirm something along the way
- The task should run beyond this conversation, which is what scheduled tasks are for
What You See
Each sub agent gets its own card in the web console and the desktop app. Expand it to see the tool it is calling and the steps it has taken; once it finishes, the card holds its full report. Sub agents start and finish independently, so it is clear which one is still running.Built-in Types
Each sub agent is created with a type, which determines its system prompt and the tools it may use:Custom Types
Add a.md file under subagents/ in the workspace to define a new type. The format is the same as skills:
Restricting
tools is the most reliable constraint: a type with only read, ls, search_files cannot modify anything.
On first start, README.md and example.md.template are created under subagents/. Copy the template to a .md file to enable it. Templates are re-read every turn, so a new file takes effect on the next message with no restart.
Blocked Tools
The following tools are unavailable to every sub agent:Configuration
Sub agents are enabled by default. The switch is in “Config → Agent” in the web console and the desktop app, and takes effect on the next turn with no restart. Finer limits are set inconfig.json:
Design
- Context isolation: a sub agent starts with an empty message history, loads no persona files and has no memory manager. The main conversation keeps only the call and the final conclusion.
- Parallel execution: tasks within one call run on their own threads and share one time budget. Several calls issued in the same turn also start together.
- Half the step budget: a sub agent gets half the main Agent’s maximum steps. Its task is already bounded, so it does not need the budget of a whole conversation. When it runs out, it is asked to summarize what it completed.
- Traceable timeouts: a task that times out is cancelled and reported as such. The number of results always matches the number of tasks, so the main Agent can tell “found nothing” from “never finished”.
- Display separated from context: the model receives structured data and the user sees a formatted report. Both come from the same result, and the displayed form never enters the model’s context.
