Utility Tools
Claude Code includes several utility tools that handle skill execution, configuration management, user interaction, task tracking, structured output, and more.
SkillTool
Executes skills (slash commands) within the conversation. Skills provide specialized capabilities and domain knowledge loaded from local .claude/commands/ directories, bundled skills, marketplace plugins, or MCP skill prompts.
Parameters
The skill name (e.g., "commit", "review-pr", "pdf"). Can also use fully qualified names like "ms-office-suite:pdf" for plugin skills.
Optional arguments for the skill.
Behavior
- Resolves skill names against local commands, bundled skills, marketplace plugins, and MCP skill prompts
- Executes the skill in a forked sub-agent context with its own token budget
- Tracks skill usage for analytics (invocation trigger, execution context, parent agent)
- Supports both local command execution and remote skill search/loading
Permission Model
Skill permissions are checked per-domain. Users can set allow/deny rules scoped to skill:<skillname>. Built-in and official marketplace skills may have relaxed permission requirements.
Key Properties
- Concurrency-safe: No
- maxResultSizeChars: 100,000
BriefTool
Sends a formatted message to the user with optional file attachments. Used in assistant and proactive modes to deliver results, status updates, and notifications.
Parameters
The message for the user. Supports markdown formatting.
Optional file paths (absolute or relative to cwd) to attach. Use for photos, screenshots, diffs, logs, or any file the user should see.
"normal" when replying to something the user said. "proactive" when surfacing something the user has not asked for (task completion, blockers, unsolicited updates).
Key Properties
- Aliases: Legacy name
SyntheticBrief - Auto-allowed: Yes (no permission prompt needed)
- maxResultSizeChars: 100,000
ConfigTool
Gets or sets Claude Code configuration values.
Parameters
The setting key (e.g., "theme", "model", "permissions.defaultMode").
The new value. Omit to get the current value.
Behavior
- Get mode: When
valueis omitted, returns the current value for the setting - Set mode: When
valueis provided, updates the setting and returns both old and new values - Reading configs is auto-allowed (no permission prompt)
- Writing configs requires permission
- Only operates on supported settings (validated against a known-settings list)
- Persists changes to the global config file or settings.json as appropriate
Key Properties
- Read-only: When
valueis omitted - Concurrency-safe: Yes
- Deferred: Yes
- Availability: Internal (Anthropic) builds only
AskUserQuestionTool
Presents structured multiple-choice questions to the user with optional previews and multi-select support.
Parameters
Array of 1-4 questions to ask the user.
Each question contains:
The complete question text. Should end with a question mark.
Very short label displayed as a chip/tag (limited character width).
2-4 available choices. An "Other" option is provided automatically.
When true, allows the user to select multiple options. Default: false.
Each option contains:
Display text for the option (1-5 words).
Explanation of what this option means or what happens if chosen.
Optional preview content rendered when this option is focused. Use for mockups, code snippets, or visual comparisons.
Key Properties
- Requires user interaction: Yes
- Interrupt behavior:
cancel(stops if user submits a new message) - maxResultSizeChars: 100,000
TodoWriteTool
Manages the session task checklist. This is the legacy task tracking tool, used when the newer Task tools (TaskCreate, TaskUpdate, etc.) are not enabled.
Parameters
The updated todo list, with items containing content and status ("pending", "in_progress", "completed").
Behavior
- Replaces the entire todo list for the current session/agent
- When all items are completed, clears the todo list
- Includes a verification nudge: if a 3+ item list is being closed without any verification step, appends a reminder
- Auto-allowed (no permission prompt needed)
- Disabled when the newer TaskV2 system is enabled
Key Properties
- Deferred: Yes
- Strict mode: Yes
- Auto-allowed: Yes
SyntheticOutputTool (StructuredOutput)
A special tool for returning structured JSON output in non-interactive (SDK/CLI) sessions.
Parameters
The tool accepts any JSON object matching the schema provided by the caller. The input schema is a passthrough (z.object({}).passthrough()), with actual validation handled dynamically based on the requested output schema.
Behavior
- Only available in non-interactive sessions (
isNonInteractiveSession: true) - Must be called exactly once at the end of a response
- Validates the input against the dynamically provided JSON Schema using Ajv
- Returns the structured output for the SDK consumer
Key Properties
- Auto-allowed: Yes
- Read-only: Yes
- Concurrency-safe: Yes
RemoteTriggerTool
Manages scheduled remote agent triggers: cloud-hosted agents that execute on a cron schedule.
Parameters
One of: "list", "get", "create", "update", "run".
Required for get, update, and run actions.
JSON body for create and update actions.
Behavior
- Communicates with the Anthropic API via authenticated HTTP requests
- Requires OAuth authentication (
getClaudeAIOAuthTokens) - Read-only for
listandgetactions
Key Properties
- Deferred: Yes
- Concurrency-safe: Yes
SleepTool
Pauses execution for a specified duration. Available when proactive or assistant features are enabled.
SleepTool is gated behind the PROACTIVE or KAIROS feature flags. It is primarily used in assistant mode where Claude may need to wait before checking status or following up.
Key Source Files
src/tools/SkillTool/SkillTool.ts: Skill execution in forked sub-agent contextssrc/tools/BriefTool/BriefTool.ts: User-facing messages with attachmentssrc/tools/ConfigTool/ConfigTool.ts: Configuration get/set operationssrc/tools/AskUserQuestionTool/AskUserQuestionTool.tsx: Structured question UIsrc/tools/TodoWriteTool/TodoWriteTool.ts: Legacy task checklist managementsrc/tools/SyntheticOutputTool/SyntheticOutputTool.ts: Structured output for SDKsrc/tools/RemoteTriggerTool/RemoteTriggerTool.ts: Remote agent trigger management