AI Assistant

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

skillstringrequired

The skill name (e.g., "commit", "review-pr", "pdf"). Can also use fully qualified names like "ms-office-suite:pdf" for plugin skills.

argsstring

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

messagestringrequired

The message for the user. Supports markdown formatting.

attachmentsstring[]

Optional file paths (absolute or relative to cwd) to attach. Use for photos, screenshots, diffs, logs, or any file the user should see.

statusenumrequired

"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

settingstringrequired

The setting key (e.g., "theme", "model", "permissions.defaultMode").

valuestring | boolean | number

The new value. Omit to get the current value.

Behavior

  • Get mode: When value is omitted, returns the current value for the setting
  • Set mode: When value is 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 value is 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

questionsQuestion[]required

Array of 1-4 questions to ask the user.

Each question contains:

questionstringrequired

The complete question text. Should end with a question mark.

headerstringrequired

Very short label displayed as a chip/tag (limited character width).

optionsQuestionOption[]required

2-4 available choices. An "Other" option is provided automatically.

multiSelectboolean

When true, allows the user to select multiple options. Default: false.

Each option contains:

labelstringrequired

Display text for the option (1-5 words).

descriptionstringrequired

Explanation of what this option means or what happens if chosen.

previewstring

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

todosTodoListrequired

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

actionenumrequired

One of: "list", "get", "create", "update", "run".

trigger_idstring

Required for get, update, and run actions.

bodyRecord

JSON body for create and update actions.

Behavior

  • Communicates with the Anthropic API via authenticated HTTP requests
  • Requires OAuth authentication (getClaudeAIOAuthTokens)
  • Read-only for list and get actions

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 contexts
  • src/tools/BriefTool/BriefTool.ts: User-facing messages with attachments
  • src/tools/ConfigTool/ConfigTool.ts: Configuration get/set operations
  • src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx: Structured question UI
  • src/tools/TodoWriteTool/TodoWriteTool.ts: Legacy task checklist management
  • src/tools/SyntheticOutputTool/SyntheticOutputTool.ts: Structured output for SDK
  • src/tools/RemoteTriggerTool/RemoteTriggerTool.ts: Remote agent trigger management