Subagents are specialized agents that can autonomously execute complex tasks on your behalf. They have their own context, tool access, and decision-making capabilities, making them ideal for sophisticated multi-step operations.
Kiro includes a default subagent that can handle general-purpose tasks. When you assign a task to a subagent, the default subagent is used unless you specify a custom agent configuration.
You can spawn subagents using your own agent configurations. This allows you to create specialized subagents tailored to specific workflows:
> Use the backend agent to refactor the payment module
To use a custom agent as a subagent, reference it by name when assigning tasks. The subagent will inherit the tool access and settings from that agent's configuration.
Subagents run in a separate runtime environment. Some tools available in normal chat are not yet implemented in subagents.
Available tools:
read - Read files and directorieswrite - Create and edit filesshell - Execute bash commandscode - Code intelligence (search symbols, find references)Not available:
web_search - Web researchweb_fetch - Fetch URLsintrospect - CLI infothinking - Reasoning tooltodo_list - Task trackinguse_aws - AWS commandsgrep - Search file contentsglob - Find files by patternYou can control which agents are available as subagents and which can run without permission prompts.
Use availableAgents to limit which agents can be spawned as subagents:
{ "toolsSettings": { "subagent": { "availableAgents": ["reviewer", "tester", "docs-*"] } } }
With this configuration, only the reviewer, tester, and agents matching docs-* can be used as subagents. Glob patterns are supported.
Use trustedAgents to allow specific agents to run without permission prompts:
{ "name": "orchestrator", "description": "Agent that coordinates multiple specialized subagents", "tools": ["fs_read", "subagent"], "toolsSettings": { "subagent": { "trustedAgents": ["reviewer", "tester", "analyzer"] } } }
With this configuration, the orchestrator agent can spawn the reviewer, tester, and analyzer subagents without requiring user approval each time. Glob patterns like test-* are supported.
You can use both settings together for fine-grained control:
{ "toolsSettings": { "subagent": { "availableAgents": ["reviewer", "tester", "analyzer", "docs-*"], "trustedAgents": ["reviewer", "tester"] } } }
This allows four agents to be spawned as subagents, but only reviewer and tester run without prompts.
Kiro provides a dedicated monitor for tracking subagent activity in real time. Press Ctrl+G to open the monitor. It shows each subagent's current status, tool calls, and output as it works through a task.
When a subagent is running, you can view its execution details — including which files it's reading, commands it's executing, and decisions it's making — without interrupting your main conversation. This is especially useful when running multiple subagents in parallel, as you can track each one independently and intervene if needed.
Inside the monitor, use Ctrl+D and Ctrl+U to navigate between subagents, and press q to return to the main chat.
Subagents support breaking down complex tasks into a directed acyclic graph (DAG) where tasks can depend on each other. The main agent plans the full task graph upfront, then executes subagents in the right order — running independent tasks in parallel and waiting for dependencies before starting dependent ones.
For example, a refactoring workflow might look like:
┌─────────────┐ │ 1. Analyze │ │ dependencies │ └──────┬───────┘ │ ┌──────▼───────┐ │ 2. Refactor │ │ modules │ └──────┬───────┘ │ ┌──────▼───────┐ │ 3. Run and │ │ fix tests │ └──────────────┘
Step 2 waits for step 1 to complete. Step 3 waits for step 2. Independent tasks at the same level run in parallel.
> Refactor the auth module — analyze dependencies first, then refactor each service, then run tests
You can now scope permissions at a more granular level per subagent, controlling not just which agents can be spawned but exactly which tools each subagent can use and what actions require approval.
Restrict specific tools for individual subagents:
{ "toolsSettings": { "subagent": { "availableAgents": ["reviewer", "deployer"], "trustedAgents": ["reviewer"], "agentPermissions": { "deployer": { "allowedTools": ["read", "shell"], "requireApproval": ["shell"] } } } } }
This gives the deployer subagent access to only read and shell tools, and requires user approval before any shell command executes — even if the parent agent is trusted.
| Field | Type | Description |
|---|---|---|
allowedTools | array | Tools the subagent can access. Tools not listed are unavailable. |
requireApproval | array | Tools that require user approval before each use, even if the parent agent is trusted. |
| Issue | Solution |
|---|---|
| Subagent not starting | Verify the task description is clear and actionable |
| Missing tool access | Check if the required tool is available in subagent runtime (see table above) |
| Incomplete results | Provide more specific instructions or break into smaller tasks |
Subagents