Sub-Agents
Sub-agents are specialized agents that the main agent can spawn to handle complex, multi-step tasks. Each sub-agent runs with its own prompt, tool set, and optional model override.
Built-in sub-agents
Ante ships with two built-in sub-agents:
general
A general-purpose agent for researching complex questions, searching for code, and executing multi-step tasks. The main agent delegates to this when it needs to perform a search it isn't confident about completing in a few tries.
explorer
A fast agent specialized for codebase exploration. It can quickly find files by patterns, search code for keywords, and answer structural questions about the codebase.
Questions about Ante itself are handled by the bundled ante-guide skill, not a sub-agent.
Creating custom sub-agents
Create a markdown file in ~/.ante/agents/ (user-level) or any of the project-level locations below with YAML frontmatter:
---
name: security-reviewer
description: Reviews code for security vulnerabilities and OWASP top 10 issues
tools:
- Read
- Grep
- Glob
---
You are a security-focused code reviewer. Analyze the provided code for:
- Injection vulnerabilities (SQL, command, XSS)
- Authentication and authorization flaws
- Sensitive data exposure
- Security misconfiguration
- Known vulnerable dependencies
Provide findings with severity ratings and remediation steps.
Frontmatter fields
| Field | Required | Description |
|---|---|---|
name | Yes | Unique identifier for the agent |
description | Yes | What this agent does (shown to the main agent for delegation decisions) |
model | No | Override the LLM model for this agent |
tools | No | Restrict which tools this agent can use |
Frontmatter is read the same way as skill frontmatter: common unquoted-scalar mistakes are repaired when they can be interpreted unambiguously, and the block is capped at 16 KB and 32 levels of nesting. Past either limit, or on YAML that cannot be repaired, the agent fails to load with an explicit error.
How sub-agents work
When the main agent encounters a task that matches a sub-agent's description, it uses the Agent tool to spawn the sub-agent:
- The main agent evaluates available sub-agents and their descriptions
- It delegates the task via the
Agenttool with a detailed prompt - The sub-agent runs independently with its own context
- The result is returned to the main agent, which incorporates it into the conversation
A sub-agent inherits the skills equipped in the parent session, so skill-driven workflows keep working inside delegated tasks. Delegation is one level deep: a sub-agent never carries the Agent tool, so it cannot spawn further sub-agents.
┌────────────┐ Agent ┌──────────────┐
│ Main Agent │ ────────────▶ │ Sub-Agent │
│ │ ◀──────────── │ (Explorer) │
│ │ Result └──────────────┘
│ │
│ │ Agent ┌──────────────┐
│ │ ────────────▶ │ Sub-Agent │
│ │ ◀──────────── │ (General) │
└────────────┘ Result └──────────────┘
Discovery
Sub-agents are discovered in precedence order (later overrides earlier by name):
- Built-in agents (
general,explorer) ~/.ante/agents/(user-level).agents/agents/(project-level).ante/agents/(project-level).claude/agents/(project-level, Claude Code compatibility)
User and project agents are loaded alongside the built-in ones. All available agents are registered at session initialization time, advertised to the model in a reminder attached to the first user message, and refreshed via the ExtensionRefreshed protocol event.