Skip to content

Subagents

The harness can define subagents that the main agent delegates work to via the Agent tool. Each subagent invocation produces a separate ATIF trajectory linked to the parent.

Defining subagents

agents:
  - name: "code-explorer"
    description: "Explores code structure, reads files, and reports findings."
    prompt: "You are a code exploration specialist. Read files and report structure."
    tools: ["Read", "Glob", "Grep"]
    model: "sonnet"
Field Required Default Description
name yes Agent name (used as key in SDK's agents dict)
description yes When to use this agent (shown to the parent)
prompt yes System prompt for the subagent
tools no inherit all Tool restrictions for the subagent
model no inherit Model override: sonnet, opus, haiku, or inherit

How it works

  1. The Agent tool is automatically added to allowed_tools when agents is non-empty
  2. The main agent decides when to invoke a subagent based on the description
  3. Subagent messages are filtered from the parent trajectory
  4. Each subagent's work is captured in a separate ATIF trajectory file
  5. The parent's observation result includes a subagent_trajectory_ref pointing to the subagent trajectory

Trajectory capture

When capture_subagent_trajectories: true (the default), each subagent invocation produces a file like:

session_01/
├── trajectory.json                          # parent trajectory
└── subagent_code-explorer_abc123def456.json  # subagent trajectory

The subagent trajectory is a full ATIF trajectory with its own steps, tool calls, and observations. The parent trajectory's observation result for the Agent tool call includes a reference to this file.

Example config

model: "claude-sonnet-4-20250514"
provider: anthropic
work_dir: "./repos/test_repo"
session_mode: isolated
capture_subagent_trajectories: true

system_prompt: |
  You are exploring a project. Delegate file reading to your code-explorer.

agents:
  - name: "code-explorer"
    description: "Explores code structure, reads files, and reports findings."
    prompt: "You are a code exploration specialist. Be concise."
    tools: ["Read", "Glob", "Grep"]
    model: "sonnet"

sessions:
  - session_index: 1
    prompt: "Use the code-explorer to read main.py, then summarize what you learned."