AgentTool
Spawn a sub-agent that runs its own agentic query loop to complete an independent task. The parent agent waits for the result (synchronous) or receives a task ID immediately (asynchronous/background). Tool name:Agent (alias Task)
When to use
AgentTool vs TaskCreateToolUse AgentTool when you want to delegate a complete sub-task to another Claude instance — it gets its own conversation, tool set, and model call budget.Use TaskCreateTool when you want to track a piece of work in the shared task board — a lightweight record with status, description, and dependency links, not a running agent.Parameters
3–5 word label for the task, shown in the UI.
Full task description given to the sub-agent as its initial user message.
Subset of tool names to make available in the sub-agent. When omitted, the sub-agent inherits the parent’s tool set (minus
AgentTool itself, to prevent unbounded recursion).Custom system prompt for the sub-agent. Overrides the default.
Maximum number of turns for the sub-agent (Rust implementation). Defaults to
MAX_TURNS_DEFAULT.Model alias to use for the sub-agent:
"sonnet", "opus", or "haiku". Defaults to the session model.Launch the sub-agent as a background task and return a task ID immediately.
Named agent for messaging via
SendMessage.Associate this agent with a named team (swarm).
Isolation strategy:
"worktree" (dedicated git worktree) or "remote" (remote session).Return value
Synchronous (run_in_background: false):"completed" on success.Final assistant message from the sub-agent.
"async_launched".ID of the launched background agent; use with
TaskOutputTool to retrieve results.Example
TaskCreateTool
Create a task record on the shared task board. Returns a task ID for later reference. Tool name:TaskCreateGate: Requires
isTodoV2Enabled() (V2 task system).
Parameters
Short title for the task.
Detailed description of what the task involves.
Arbitrary key-value metadata attached to the task.
Return value
TaskGetTool
Retrieve a task’s current status, description, and dependency information. Tool name:TaskGetGate: Requires
isTodoV2Enabled().
Parameters
ID of the task to retrieve.
Return value
null if no task with that ID exists.TaskUpdateTool
Update a task’s status, subject, description, dependencies, or ownership. Tool name:TaskUpdateGate: Requires
isTodoV2Enabled().
Parameters
ID of the task to update.
New status. Use
"deleted" to remove the task entirely. Valid values: "pending", "in_progress", "completed", "failed", "killed", "deleted".Updated title.
Updated description.
Task IDs that this task should now block.
Task IDs that now block this task.
Assign ownership to an agent name.
Updated metadata.
Return value
Whether the update succeeded.
ID of the updated task.
List of field names that changed.
Present when status changed:
{ from, to }.Error message if
success is false.TaskListTool
List all non-deleted tasks in the current session. Tool name:TaskListGate: Requires
isTodoV2Enabled().Input: No parameters required.
Return value
TaskStopTool
Stop a running background task (bash task or agent task). Tool name:TaskStop (alias KillShell)
Parameters
ID of the task to stop. Returned when a task was launched with
run_in_background: true.Return value
Confirmation message.
ID of the stopped task.
Type of task that was stopped.
Notes
- The task must be in a non-terminal state (
pendingorrunning). - In the Rust implementation, stopping a task sets its status to
Failed.
TaskOutputTool
Read the output of a background task, optionally blocking until it completes. Tool name:TaskOutput
Parameters
ID of the task to read output from.
When
true, wait until the task reaches a terminal state before returning.Maximum wait time in milliseconds when
block is true. Range: 0–600 000 ms.Return value
"success", "timeout", or "not_ready".null when retrieval_status is not "success".SendMessageTool
Send a message to a named agent, broadcast to all agents, or route via a Unix domain socket or bridge session. Tool name:SendMessageGate: Requires
isAgentSwarmsEnabled().
Parameters
Recipient address:
- Agent name (in-process or mailbox)
"*"to broadcast to all agents"uds:<path>"for a Unix domain socket"bridge:<session-id>"for a cross-machine bridge (requires user consent)
Message text, or a structured message object. Structured types:
{ type: "shutdown_request", reason?: string }{ type: "shutdown_response", status: "ok" | "error", message?: string }{ type: "plan_approval_response", approved: boolean, comment?: string, requestId: string }
Short summary shown in the UI activity feed.
Notes
- Bridge messages (
bridge:<session-id>) always require explicit user approval regardless of permission mode. - In the Rust implementation, messages are delivered to the
INBOXin-memory store; broadcast (*) delivers to all current recipients.
CronCreateTool
Schedule a prompt to run automatically on a cron schedule. Tool name:CronCreateGate: Requires
feature('KAIROS') + isKairosCronEnabled().
Parameters
Standard 5-field cron expression in local time:
"M H DoM Mon DoW" (e.g. "0 9 * * 1-5" for weekdays at 9 AM).The prompt to enqueue at each scheduled fire time.
true — fire on every matching cron time (auto-expires after the configured max-age).false — fire once then auto-delete.true — persist the job to .claude/scheduled_tasks.json so it survives process restarts.false — in-memory only; job is lost when the session ends.Return value
Job ID for use with
CronDelete and CronList.Human-readable schedule description (e.g.
"Every weekday at 09:00").Whether the job recurs.
Whether the job is durable.
Notes
- Maximum 50 concurrent scheduled jobs.
- The cron expression must match at least one date within the next year.
- Durable crons are not supported for teammate agents.
CronListTool
List all scheduled cron jobs visible to the current agent. Tool name:CronListInput: No parameters required.
Return value
Notes
- Teammate agents only see their own jobs. The team lead sees all jobs.
CronDeleteTool
Cancel a scheduled cron job. Tool name:CronDelete
Parameters
Job ID returned by
CronCreate.Return value
ID of the cancelled job.
Notes
- Teammate agents can only delete their own jobs.
SkillTool
Invoke a user-defined skill — a prompt macro stored as a Markdown file in.claude/commands/ or ~/.claude/commands/.
Tool name: Skill
Parameters
Name of the skill to invoke, or
"list" to enumerate available skills. The name maps to a <skill>.md file in the commands directory.Arguments to substitute for
$ARGUMENTS in the skill template.How skills work
- Claurst resolves
<skill>.mdfrom the project commands directory first, then the user commands directory. - YAML frontmatter is stripped.
$ARGUMENTSplaceholders are replaced with the provided arguments string.- The resulting text is returned as the tool result, and Claude uses it as its next instruction.
AskUserQuestionTool
Pause task execution and prompt you for a choice before continuing. Tool name:AskUserQuestion
Parameters
1–4 questions to ask. Each question has:
Return value
The original questions.
Map of question → selected answer value(s).
Notes
- Not available when
--channelsflag is active (no terminal available). - In non-interactive mode (Rust implementation with
non_interactive: true), returns an error.
ToolSearchTool
Discover available tools by keyword or exact name. Tool name:ToolSearch
Parameters
Search query. Use
"select:<ToolName>" for exact lookup (e.g. "select:WebFetch"), or plain keywords for fuzzy search (e.g. "search files").Maximum number of tools to return.
Return value
Tool names that matched the query.
The query that was run.
Total number of deferred tools available to search.
MCP servers still loading whose tools are not yet searchable.
How scoring works
| Match type | Score |
|---|---|
select:<name> exact match | 100 (Rust) / exact lookup (TypeScript) |
| Exact tool name match | 20 (Rust) / 10 (TypeScript) |
| Name contains query | 10 (Rust) / 5 (TypeScript) |
| Description contains query | 5 (Rust) / 2 (TypeScript) |
| Keyword/hint match | 8 (Rust) / 4 (TypeScript) |
select:<name>, the full tool schema is injected into the conversation context as a tool_reference block.