Delegation
delegate_task allows a parent agent to spawn an isolated child agent for focused subtasks, then summarize and return results.
What the child agent inherits
The child agent is not a complete copy of the parent but is deliberately constrained:
memory.enable=falseagent.skip_context_files=trueagent.quiet_mode=truetools.delegate_task.enabled=false- only allowed built-in tools
- optional alternate
llmconfig
This makes it more like a "constrained worker call" than an unbounded multi-agent tree.
Parameters
| Parameter | Description |
|---|---|
goal | subtask goal, required |
context | background info or constraints |
allowed_tools | tool whitelist visible to child agent |
max_iterations | max iterations for child agent |
Config
tools:
delegate_task:
enabled: true
max_depth: 2
max_iterations: 20
blocked_tools:
- delegate_task
You can also configure tools.delegate_task.model to use a cheaper or faster model for subtasks.
Guardrails
- disabled by default, requires explicit
tools.delegate_task.enabled - refuses to spawn when
current_depth >= max_depth blocked_toolsalways takes precedence overallowed_tools- child agent returns only a structured status and plain text summary
Example
{
"tool": "delegate_task",
"goal": "Summarize the HTTP channel implementation and list public endpoints",
"allowed_tools": ["read", "exec"],
"max_iterations": 8
}