新しいV2インターフェース(プレビュー)をお試しください: send() と receive() パターンを備えた簡素化されたインターフェースが利用可能になり、マルチターン会話がより簡単になりました。TypeScript V2プレビューの詳細
npm install @anthropic-ai/claude-agent-sdkquery()Claude Codeとやり取りするための主要な関数です。メッセージが到着するたびにストリーミングする非同期ジェネレーターを作成します。
function query({
prompt,
options
}: {
prompt: string | AsyncIterable<SDKUserMessage>;
options?: Options;
}): Query| パラメーター | 型 | 説明 |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | 文字列としての入力プロンプト、またはストリーミングモード用の非同期イテラブル |
options | Options | オプションの設定オブジェクト(以下のOptions型を参照) |
追加メソッドを持つ AsyncGenerator<SDKMessage, void> を拡張した Query オブジェクトを返します。
tool()SDK MCPサーバーで使用するための型安全なMCPツール定義を作成します。
function tool<Schema extends ZodRawShape>(
name: string,
description: string,
inputSchema: Schema,
handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>| パラメーター | 型 | 説明 |
|---|---|---|
name | string | ツールの名前 |
description | string | ツールの機能の説明 |
inputSchema | Schema extends ZodRawShape | ツールの入力パラメーターを定義するZodスキーマ |
handler | (args, extra) => Promise<CallToolResult> | ツールのロジックを実行する非同期関数 |
createSdkMcpServer()アプリケーションと同じプロセスで実行されるMCPサーバーインスタンスを作成します。
function createSdkMcpServer(options: {
name: string;
version?: string;
tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance| パラメーター | 型 | 説明 |
|---|---|---|
options.name | string | MCPサーバーの名前 |
options.version | string | オプションのバージョン文字列 |
options.tools | Array<SdkMcpToolDefinition> | tool() で作成されたツール定義の配列 |
Optionsquery() 関数の設定オブジェクト。
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
abortController | AbortController | new AbortController() | 操作をキャンセルするためのコントローラー |
additionalDirectories | string[] | [] | Claudeがアクセスできる追加ディレクトリ |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | プログラムでサブエージェントを定義 |
allowDangerouslySkipPermissions | boolean | false | パーミッションのバイパスを有効にする。permissionMode: 'bypassPermissions' 使用時に必須 |
allowedTools | string[] | 全ツール | 許可されたツール名のリスト |
betas | SdkBeta[] | [] | ベータ機能を有効にする(例:['context-1m-2025-08-07']) |
canUseTool | CanUseTool | undefined | ツール使用のカスタムパーミッション関数 |
continue | boolean | false | 最新の会話を続行 |
cwd | string | process.cwd() | 現在の作業ディレクトリ |
disallowedTools | string[] | [] | 禁止されたツール名のリスト |
enableFileCheckpointing | boolean | false | 巻き戻し用のファイル変更追跡を有効にする。ファイルチェックポイントを参照 |
env | Dict<string> | process.env | 環境変数 |
executable | 'bun' | 'deno' | 'node' | 自動検出 | 使用するJavaScriptランタイム |
executableArgs | string[] | [] | 実行ファイルに渡す引数 |
extraArgs | Record<string, string | null> | {} | 追加の引数 |
fallbackModel | string | undefined | プライマリが失敗した場合に使用するモデル |
forkSession | boolean | false | resume で再開する際、元のセッションを続行する代わりに新しいセッションIDにフォークする |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | イベント用のフックコールバック |
includePartialMessages | boolean | false | 部分メッセージイベントを含める |
maxBudgetUsd | number | undefined | クエリの最大予算(USD) |
maxThinkingTokens | number | undefined | 思考プロセスの最大トークン数 |
maxTurns | number | undefined | 最大会話ターン数 |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | MCPサーバーの設定 |
model | string | CLIのデフォルト | 使用するClaudeモデル |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | エージェント結果の出力フォーマットを定義。詳細は構造化出力を参照 |
pathToClaudeCodeExecutable | string | 組み込み実行ファイルを使用 | Claude Code実行ファイルへのパス |
permissionMode | PermissionMode | 'default' | セッションのパーミッションモード |
permissionPromptToolName | string | undefined | パーミッションプロンプト用のMCPツール名 |
plugins | SdkPluginConfig[] | [] | ローカルパスからカスタムプラグインを読み込む。詳細はプラグインを参照 |
resume | string | undefined | 再開するセッションID |
resumeSessionAt | string | undefined | 特定のメッセージUUIDでセッションを再開 |
sandbox | SandboxSettings | undefined | サンドボックスの動作をプログラムで設定。詳細はサンドボックス設定を参照 |
settingSources | SettingSource[] | [](設定なし) | 読み込むファイルシステム設定を制御。省略時は設定は読み込まれません。注意: CLAUDE.mdファイルを読み込むには 'project' を含める必要があります |
stderr | (data: string) => void | undefined | stderr出力のコールバック |
strictMcpConfig | boolean | false | 厳密なMCPバリデーションを強制 |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined(最小限のプロンプト) | システムプロンプトの設定。カスタムプロンプトには文字列を渡すか、Claude Codeのシステムプロンプトを使用するには { type: 'preset', preset: 'claude_code' } を使用。プリセットオブジェクト形式を使用する場合、append を追加して追加の指示でシステムプロンプトを拡張可能 |
tools | string[] | { type: 'preset'; preset: 'claude_code' } | undefined | ツールの設定。ツール名の配列を渡すか、プリセットを使用してClaude Codeのデフォルトツールを取得 |
Queryquery() 関数が返すインターフェース。
interface Query extends AsyncGenerator<SDKMessage, void> {
interrupt(): Promise<void>;
rewindFiles(userMessageUuid: string): Promise<void>;
setPermissionMode(mode: PermissionMode): Promise<void>;
setModel(model?: string): Promise<void>;
setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
supportedCommands(): Promise<SlashCommand[]>;
supportedModels(): Promise<ModelInfo[]>;
mcpServerStatus(): Promise<McpServerStatus[]>;
accountInfo(): Promise<AccountInfo>;
}| メソッド | 説明 |
|---|---|
interrupt() | クエリを中断する(ストリーミング入力モードでのみ利用可能) |
rewindFiles(userMessageUuid) | 指定されたユーザーメッセージ時点の状態にファイルを復元する。enableFileCheckpointing: true が必要。ファイルチェックポイントを参照 |
setPermissionMode() | パーミッションモードを変更する(ストリーミング入力モードでのみ利用可能) |
setModel() | モデルを変更する(ストリーミング入力モードでのみ利用可能) |
setMaxThinkingTokens() | 最大思考トークン数を変更する(ストリーミング入力モードでのみ利用可能) |
supportedCommands() | 利用可能なスラッシュコマンドを返す |
supportedModels() | 表示情報付きの利用可能なモデルを返す |
mcpServerStatus() | 接続されたMCPサーバーのステータスを返す |
accountInfo() | アカウント情報を返す |
AgentDefinitionプログラムで定義されるサブエージェントの設定。
type AgentDefinition = {
description: string;
tools?: string[];
prompt: string;
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}| フィールド | 必須 | 説明 |
|---|---|---|
description | はい | このエージェントをいつ使用するかの自然言語による説明 |
tools | いいえ | 許可されたツール名の配列。省略時はすべてのツールを継承 |
prompt | はい | エージェントのシステムプロンプト |
model | いいえ | このエージェントのモデルオーバーライド。省略時はメインモデルを使用 |
SettingSourceSDKが設定を読み込むファイルシステムベースの設定ソースを制御します。
type SettingSource = 'user' | 'project' | 'local';| 値 | 説明 | 場所 |
|---|---|---|
'user' | グローバルユーザー設定 | ~/.claude/settings.json |
'project' | 共有プロジェクト設定(バージョン管理対象) | .claude/settings.json |
'local' | ローカルプロジェクト設定(gitignore対象) | .claude/settings.local.json |
settingSources が省略またはundefinedの場合、SDKはファイルシステム設定を読み込みません。これによりSDKアプリケーションの分離が提供されます。
すべてのファイルシステム設定を読み込む(レガシー動作):
// SDK v0.0.xと同様にすべての設定を読み込む
const result = query({
prompt: "Analyze this code",
options: {
settingSources: ['user', 'project', 'local'] // すべての設定を読み込む
}
});特定の設定ソースのみを読み込む:
// プロジェクト設定のみを読み込み、ユーザーとローカルは無視
const result = query({
prompt: "Run CI checks",
options: {
settingSources: ['project'] // .claude/settings.jsonのみ
}
});テストおよびCI環境:
// ローカル設定を除外してCIでの一貫した動作を確保
const result = query({
prompt: "Run tests",
options: {
settingSources: ['project'], // チーム共有設定のみ
permissionMode: 'bypassPermissions'
}
});SDK専用アプリケーション:
// すべてをプログラムで定義(デフォルトの動作)
// ファイルシステム依存なし - settingSourcesのデフォルトは[]
const result = query({
prompt: "Review this PR",
options: {
// settingSources: [] がデフォルト、指定不要
agents: { /* ... */ },
mcpServers: { /* ... */ },
allowedTools: ['Read', 'Grep', 'Glob']
}
});CLAUDE.mdプロジェクト指示の読み込み:
// CLAUDE.mdファイルを含めるためにプロジェクト設定を読み込む
const result = query({
prompt: "Add a new feature following project conventions",
options: {
systemPrompt: {
type: 'preset',
preset: 'claude_code' // CLAUDE.mdを使用するために必須
},
settingSources: ['project'], // プロジェクトディレクトリからCLAUDE.mdを読み込む
allowedTools: ['Read', 'Write', 'Edit']
}
});複数のソースが読み込まれた場合、設定は以下の優先順位(高い順)でマージされます:
.claude/settings.local.json).claude/settings.json)~/.claude/settings.json)プログラムオプション(agents、allowedTools など)は常にファイルシステム設定をオーバーライドします。
PermissionModetype PermissionMode =
| 'default' // 標準のパーミッション動作
| 'acceptEdits' // ファイル編集を自動承認
| 'bypassPermissions' // すべてのパーミッションチェックをバイパス
| 'plan' // 計画モード - 実行なしCanUseToolツール使用を制御するためのカスタムパーミッション関数型。
type CanUseTool = (
toolName: string,
input: ToolInput,
options: {
signal: AbortSignal;
suggestions?: PermissionUpdate[];
}
) => Promise<PermissionResult>;PermissionResultパーミッションチェックの結果。
type PermissionResult =
| {
behavior: 'allow';
updatedInput: ToolInput;
updatedPermissions?: PermissionUpdate[];
}
| {
behavior: 'deny';
message: string;
interrupt?: boolean;
}McpServerConfigMCPサーバーの設定。
type McpServerConfig =
| McpStdioServerConfig
| McpSSEServerConfig
| McpHttpServerConfig
| McpSdkServerConfigWithInstance;McpStdioServerConfigtype McpStdioServerConfig = {
type?: 'stdio';
command: string;
args?: string[];
env?: Record<string, string>;
}McpSSEServerConfigtype McpSSEServerConfig = {
type: 'sse';
url: string;
headers?: Record<string, string>;
}McpHttpServerConfigtype McpHttpServerConfig = {
type: 'http';
url: string;
headers?: Record<string, string>;
}McpSdkServerConfigWithInstancetype McpSdkServerConfigWithInstance = {
type: 'sdk';
name: string;
instance: McpServer;
}SdkPluginConfigSDKでプラグインを読み込むための設定。
type SdkPluginConfig = {
type: 'local';
path: string;
}| フィールド | 型 | 説明 |
|---|---|---|
type | 'local' | 'local' でなければならない(現在ローカルプラグインのみサポート) |
path | string | プラグインディレクトリへの絶対パスまたは相対パス |
例:
plugins: [
{ type: 'local', path: './my-plugin' },
{ type: 'local', path: '/absolute/path/to/plugin' }
]プラグインの作成と使用に関する完全な情報は、プラグインを参照してください。
SDKMessageクエリが返すすべての可能なメッセージのユニオン型。
type SDKMessage =
| SDKAssistantMessage
| SDKUserMessage
| SDKUserMessageReplay
| SDKResultMessage
| SDKSystemMessage
| SDKPartialAssistantMessage
| SDKCompactBoundaryMessage;SDKAssistantMessageアシスタントの応答メッセージ。
type SDKAssistantMessage = {
type: 'assistant';
uuid: UUID;
session_id: string;
message: APIAssistantMessage; // Anthropic SDKから
parent_tool_use_id: string | null;
}SDKUserMessageユーザー入力メッセージ。
type SDKUserMessage = {
type: 'user';
uuid?: UUID;
session_id: string;
message: APIUserMessage; // Anthropic SDKから
parent_tool_use_id: string | null;
}SDKUserMessageReplay必須UUIDを持つリプレイされたユーザーメッセージ。
type SDKUserMessageReplay = {
type: 'user';
uuid: UUID;
session_id: string;
message: APIUserMessage;
parent_tool_use_id: string | null;
}SDKResultMessage最終結果メッセージ。
type SDKResultMessage =
| {
type: 'result';
subtype: 'success';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
result: string;
total_cost_usd: number;
usage: NonNullableUsage;
modelUsage: { [modelName: string]: ModelUsage };
permission_denials: SDKPermissionDenial[];
structured_output?: unknown;
}
| {
type: 'result';
subtype:
| 'error_max_turns'
| 'error_during_execution'
| 'error_max_budget_usd'
| 'error_max_structured_output_retries';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
total_cost_usd: number;
usage: NonNullableUsage;
modelUsage: { [modelName: string]: ModelUsage };
permission_denials: SDKPermissionDenial[];
errors: string[];
}SDKSystemMessageシステム初期化メッセージ。
type SDKSystemMessage = {
type: 'system';
subtype: 'init';
uuid: UUID;
session_id: string;
apiKeySource: ApiKeySource;
cwd: string;
tools: string[];
mcp_servers: {
name: string;
status: string;
}[];
model: string;
permissionMode: PermissionMode;
slash_commands: string[];
output_style: string;
}SDKPartialAssistantMessageストリーミング部分メッセージ(includePartialMessages がtrueの場合のみ)。
type SDKPartialAssistantMessage = {
type: 'stream_event';
event: RawMessageStreamEvent; // Anthropic SDKから
parent_tool_use_id: string | null;
uuid: UUID;
session_id: string;
}SDKCompactBoundaryMessage会話コンパクション境界を示すメッセージ。
type SDKCompactBoundaryMessage = {
type: 'system';
subtype: 'compact_boundary';
uuid: UUID;
session_id: string;
compact_metadata: {
trigger: 'manual' | 'auto';
pre_tokens: number;
};
}SDKPermissionDenial拒否されたツール使用に関する情報。
type SDKPermissionDenial = {
tool_name: string;
tool_use_id: string;
tool_input: ToolInput;
}フックの使用方法、例、一般的なパターンに関する包括的なガイドは、フックガイドを参照してください。
HookEvent利用可能なフックイベント。
type HookEvent =
| 'PreToolUse'
| 'PostToolUse'
| 'PostToolUseFailure'
| 'Notification'
| 'UserPromptSubmit'
| 'SessionStart'
| 'SessionEnd'
| 'Stop'
| 'SubagentStart'
| 'SubagentStop'
| 'PreCompact'
| 'PermissionRequest';HookCallbackフックコールバック関数型。
type HookCallback = (
input: HookInput, // すべてのフック入力型のユニオン
toolUseID: string | undefined,
options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;HookCallbackMatcherオプションのマッチャーを持つフック設定。
interface HookCallbackMatcher {
matcher?: string;
hooks: HookCallback[];
}HookInputすべてのフック入力型のユニオン型。
type HookInput =
| PreToolUseHookInput
| PostToolUseHookInput
| PostToolUseFailureHookInput
| NotificationHookInput
| UserPromptSubmitHookInput
| SessionStartHookInput
| SessionEndHookInput
| StopHookInput
| SubagentStartHookInput
| SubagentStopHookInput
| PreCompactHookInput
| PermissionRequestHookInput;BaseHookInputすべてのフック入力型が拡張するベースインターフェース。
type BaseHookInput = {
session_id: string;
transcript_path: string;
cwd: string;
permission_mode?: string;
}PreToolUseHookInputtype PreToolUseHookInput = BaseHookInput & {
hook_event_name: 'PreToolUse';
tool_name: string;
tool_input: unknown;
}PostToolUseHookInputtype PostToolUseHookInput = BaseHookInput & {
hook_event_name: 'PostToolUse';
tool_name: string;
tool_input: unknown;
tool_response: unknown;
}PostToolUseFailureHookInputtype PostToolUseFailureHookInput = BaseHookInput & {
hook_event_name: 'PostToolUseFailure';
tool_name: string;
tool_input: unknown;
error: string;
is_interrupt?: boolean;
}NotificationHookInputtype NotificationHookInput = BaseHookInput & {
hook_event_name: 'Notification';
message: string;
title?: string;
}UserPromptSubmitHookInputtype UserPromptSubmitHookInput = BaseHookInput & {
hook_event_name: 'UserPromptSubmit';
prompt: string;
}SessionStartHookInputtype SessionStartHookInput = BaseHookInput & {
hook_event_name: 'SessionStart';
source: 'startup' | 'resume' | 'clear' | 'compact';
}SessionEndHookInputtype SessionEndHookInput = BaseHookInput & {
hook_event_name: 'SessionEnd';
reason: ExitReason; // EXIT_REASONS配列からの文字列
}StopHookInputtype StopHookInput = BaseHookInput & {
hook_event_name: 'Stop';
stop_hook_active: boolean;
}SubagentStartHookInputtype SubagentStartHookInput = BaseHookInput & {
hook_event_name: 'SubagentStart';
agent_id: string;
agent_type: string;
}SubagentStopHookInputtype SubagentStopHookInput = BaseHookInput & {
hook_event_name: 'SubagentStop';
stop_hook_active: boolean;
}PreCompactHookInputtype PreCompactHookInput = BaseHookInput & {
hook_event_name: 'PreCompact';
trigger: 'manual' | 'auto';
custom_instructions: string | null;
}PermissionRequestHookInputtype PermissionRequestHookInput = BaseHookInput & {
hook_event_name: 'PermissionRequest';
tool_name: string;
tool_input: unknown;
permission_suggestions?: PermissionUpdate[];
}HookJSONOutputフックの戻り値。
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;AsyncHookJSONOutputtype AsyncHookJSONOutput = {
async: true;
asyncTimeout?: number;
}SyncHookJSONOutputtype SyncHookJSONOutput = {
continue?: boolean;
suppressOutput?: boolean;
stopReason?: string;
decision?: 'approve' | 'block';
systemMessage?: string;
reason?: string;
hookSpecificOutput?:
| {
hookEventName: 'PreToolUse';
permissionDecision?: 'allow' | 'deny' | 'ask';
permissionDecisionReason?: string;
updatedInput?: Record<string, unknown>;
}
| {
hookEventName: 'UserPromptSubmit';
additionalContext?: string;
}
| {
hookEventName: 'SessionStart';
additionalContext?: string;
}
| {
hookEventName: 'PostToolUse';
additionalContext?: string;
};
}すべての組み込みClaude Codeツールの入力スキーマのドキュメント。これらの型は @anthropic-ai/claude-agent-sdk からエクスポートされ、型安全なツールインタラクションに使用できます。
ToolInput注意: これは明確さのためのドキュメント専用の型です。すべてのツール入力型のユニオンを表します。
type ToolInput =
| AgentInput
| AskUserQuestionInput
| BashInput
| BashOutputInput
| FileEditInput
| FileReadInput
| FileWriteInput
| GlobInput
| GrepInput
| KillShellInput
| NotebookEditInput
| WebFetchInput
| WebSearchInput
| TodoWriteInput
| ExitPlanModeInput
| ListMcpResourcesInput
| ReadMcpResourceInput;ツール名: Task
interface AgentInput {
/**
* タスクの短い(3〜5語の)説明
*/
description: string;
/**
* エージェントが実行するタスク
*/
prompt: string;
/**
* このタスクに使用する特殊エージェントのタイプ
*/
subagent_type: string;
}複雑なマルチステップタスクを自律的に処理する新しいエージェントを起動します。
ツール名: AskUserQuestion
interface AskUserQuestionInput {
/**
* ユーザーに尋ねる質問(1〜4問)
*/
questions: Array<{
/**
* ユーザーに尋ねる完全な質問。明確で具体的であり、
* 疑問符で終わる必要があります。
*/
question: string;
/**
* チップ/タグとして表示される非常に短いラベル(最大12文字)。
* 例:"Auth method"、"Library"、"Approach"
*/
header: string;
/**
* 利用可能な選択肢(2〜4オプション)。「その他」オプションは
* 自動的に提供されます。
*/
options: Array<{
/**
* このオプションの表示テキスト(1〜5語)
*/
label: string;
/**
* このオプションの意味の説明
*/
description: string;
}>;
/**
* 複数選択を許可する場合はtrueに設定
*/
multiSelect: boolean;
}>;
/**
* パーミッションシステムによって入力されるユーザーの回答。
* 質問テキストを選択されたオプションラベルにマッピング。
* 複数選択の回答はカンマ区切り。
*/
answers?: Record<string, string>;
}実行中にユーザーに明確化の質問をします。使用方法の詳細は承認とユーザー入力の処理を参照してください。
ツール名: Bash
interface BashInput {
/**
* 実行するコマンド
*/
command: string;
/**
* オプションのタイムアウト(ミリ秒、最大600000)
*/
timeout?: number;
/**
* このコマンドが何をするかの明確で簡潔な説明(5〜10語)
*/
description?: string;
/**
* このコマンドをバックグラウンドで実行する場合はtrueに設定
*/
run_in_background?: boolean;
}オプションのタイムアウトとバックグラウンド実行を備えた永続的なシェルセッションでbashコマンドを実行します。
ツール名: BashOutput
interface BashOutputInput {
/**
* 出力を取得するバックグラウンドシェルのID
*/
bash_id: string;
/**
* 出力行をフィルタリングするオプションの正規表現
*/
filter?: string;
}実行中または完了したバックグラウンドbashシェルから出力を取得します。
ツール名: Edit
interface FileEditInput {
/**
* 変更するファイルの絶対パス
*/
file_path: string;
/**
* 置換するテキスト
*/
old_string: string;
/**
* 置換後のテキスト(old_stringと異なる必要があります)
*/
new_string: string;
/**
* old_stringのすべての出現を置換(デフォルトfalse)
*/
replace_all?: boolean;
}ファイル内で正確な文字列置換を実行します。
ツール名: Read
interface FileReadInput {
/**
* 読み取るファイルの絶対パス
*/
file_path: string;
/**
* 読み取りを開始する行番号
*/
offset?: number;
/**
* 読み取る行数
*/
limit?: number;
}テキスト、画像、PDF、Jupyterノートブックを含むローカルファイルシステムからファイルを読み取ります。
ツール名: Write
interface FileWriteInput {
/**
* 書き込むファイルの絶対パス
*/
file_path: string;
/**
* ファイルに書き込む内容
*/
content: string;
}ローカルファイルシステムにファイルを書き込みます。既存の場合は上書きします。
ツール名: Glob
interface GlobInput {
/**
* ファイルとマッチさせるglobパターン
*/
pattern: string;
/**
* 検索するディレクトリ(デフォルトはcwd)
*/
path?: string;
}あらゆるサイズのコードベースで動作する高速なファイルパターンマッチング。
ツール名: Grep
interface GrepInput {
/**
* 検索する正規表現パターン
*/
pattern: string;
/**
* 検索するファイルまたはディレクトリ(デフォルトはcwd)
*/
path?: string;
/**
* ファイルをフィルタリングするglobパターン(例:"*.js")
*/
glob?: string;
/**
* 検索するファイルタイプ(例:"js"、"py"、"rust")
*/
type?: string;
/**
* 出力モード:"content"、"files_with_matches"、または"count"
*/
output_mode?: 'content' | 'files_with_matches' | 'count';
/**
* 大文字小文字を区別しない検索
*/
'-i'?: boolean;
/**
* 行番号を表示(contentモード用)
*/
'-n'?: boolean;
/**
* 各マッチの前に表示する行数
*/
'-B'?: number;
/**
* 各マッチの後に表示する行数
*/
'-A'?: number;
/**
* 各マッチの前後に表示する行数
*/
'-C'?: number;
/**
* 出力を最初のN行/エントリに制限
*/
head_limit?: number;
/**
* マルチラインモードを有効にする
*/
multiline?: boolean;
}正規表現サポートを備えたripgrepベースの強力な検索ツール。
ツール名: KillBash
interface KillShellInput {
/**
* 終了するバックグラウンドシェルのID
*/
shell_id: string;
}IDで指定された実行中のバックグラウンドbashシェルを終了します。
ツール名: NotebookEdit
interface NotebookEditInput {
/**
* Jupyterノートブックファイルの絶対パス
*/
notebook_path: string;
/**
* 編集するセルのID
*/
cell_id?: string;
/**
* セルの新しいソース
*/
new_source: string;
/**
* セルのタイプ(codeまたはmarkdown)
*/
cell_type?: 'code' | 'markdown';
/**
* 編集のタイプ(replace、insert、delete)
*/
edit_mode?: 'replace' | 'insert' | 'delete';
}Jupyterノートブックファイルのセルを編集します。
ツール名: WebFetch
interface WebFetchInput {
/**
* コンテンツを取得するURL
*/
url: string;
/**
* 取得したコンテンツに対して実行するプロンプト
*/
prompt: string;
}URLからコンテンツを取得し、AIモデルで処理します。
ツール名: WebSearch
interface WebSearchInput {
/**
* 使用する検索クエリ
*/
query: string;
/**
* これらのドメインからの結果のみを含める
*/
allowed_domains?: string[];
/**
* これらのドメインからの結果を含めない
*/
blocked_domains?: string[];
}ウェブを検索し、フォーマットされた結果を返します。
ツール名: TodoWrite
interface TodoWriteInput {
/**
* 更新されたTodoリスト
*/
todos: Array<{
/**
* タスクの説明
*/
content: string;
/**
* タスクのステータス
*/
status: 'pending' | 'in_progress' | 'completed';
/**
* タスク説明の能動態形式
*/
activeForm: string;
}>;
}進捗追跡のための構造化されたタスクリストを作成・管理します。
ツール名: ExitPlanMode
interface ExitPlanModeInput {
/**
* ユーザーの承認のために実行する計画
*/
plan: string;
}計画モードを終了し、ユーザーに計画の承認を求めます。
ツール名: ListMcpResources
interface ListMcpResourcesInput {
/**
* リソースをフィルタリングするオプションのサーバー名
*/
server?: string;
}接続されたサーバーから利用可能なMCPリソースを一覧表示します。
ツール名: ReadMcpResource
interface ReadMcpResourceInput {
/**
* MCPサーバー名
*/
server: string;
/**
* 読み取るリソースURI
*/
uri: string;
}サーバーから特定のMCPリソースを読み取ります。
すべての組み込みClaude Codeツールの出力スキーマのドキュメント。これらの型は各ツールが返す実際のレスポンスデータを表します。
ToolOutput注意: これは明確さのためのドキュメント専用の型です。すべてのツール出力型のユニオンを表します。
type ToolOutput =
| TaskOutput
| AskUserQuestionOutput
| BashOutput
| BashOutputToolOutput
| EditOutput
| ReadOutput
| WriteOutput
| GlobOutput
| GrepOutput
| KillBashOutput
| NotebookEditOutput
| WebFetchOutput
| WebSearchOutput
| TodoWriteOutput
| ExitPlanModeOutput
| ListMcpResourcesOutput
| ReadMcpResourceOutput;ツール名: Task
interface TaskOutput {
/**
* サブエージェントからの最終結果メッセージ
*/
result: string;
/**
* トークン使用統計
*/
usage?: {
input_tokens: number;
output_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
};
/**
* 合計コスト(USD)
*/
total_cost_usd?: number;
/**
* 実行時間(ミリ秒)
*/
duration_ms?: number;
}委任されたタスクの完了後にサブエージェントからの最終結果を返します。
ツール名: AskUserQuestion
interface AskUserQuestionOutput {
/**
* 尋ねられた質問
*/
questions: Array<{
question: string;
header: string;
options: Array<{
label: string;
description: string;
}>;
multiSelect: boolean;
}>;
/**
* ユーザーが提供した回答。
* 質問テキストを回答文字列にマッピング。
* 複数選択の回答はカンマ区切り。
*/
answers: Record<string, string>;
}尋ねられた質問とユーザーの回答を返します。
ツール名: Bash
interface BashOutput {
/**
* stdoutとstderrの結合出力
*/
output: string;
/**
* コマンドの終了コード
*/
exitCode: number;
/**
* タイムアウトによりコマンドが終了されたかどうか
*/
killed?: boolean;
/**
* バックグラウンドプロセスのシェルID
*/
shellId?: string;
}終了ステータス付きのコマンド出力を返します。バックグラウンドコマンドはshellIdとともに即座に返されます。
ツール名: BashOutput
interface BashOutputToolOutput {
/**
* 前回のチェック以降の新しい出力
*/
output: string;
/**
* 現在のシェルステータス
*/
status: 'running' | 'completed' | 'failed';
/**
* 終了コード(完了時)
*/
exitCode?: number;
}バックグラウンドシェルからの増分出力を返します。
ツール名: Edit
interface EditOutput {
/**
* 確認メッセージ
*/
message: string;
/**
* 実行された置換の数
*/
replacements: number;
/**
* 編集されたファイルパス
*/
file_path: string;
}置換数付きの成功した編集の確認を返します。
ツール名: Read
type ReadOutput =
| TextFileOutput
| ImageFileOutput
| PDFFileOutput
| NotebookFileOutput;
interface TextFileOutput {
/**
* 行番号付きのファイル内容
*/
content: string;
/**
* ファイルの総行数
*/
total_lines: number;
/**
* 実際に返された行数
*/
lines_returned: number;
}
interface ImageFileOutput {
/**
* Base64エンコードされた画像データ
*/
image: string;
/**
* 画像のMIMEタイプ
*/
mime_type: string;
/**
* ファイルサイズ(バイト)
*/
file_size: number;
}
interface PDFFileOutput {
/**
* ページ内容の配列
*/
pages: Array<{
page_number: number;
text?: string;
images?: Array<{
image: string;
mime_type: string;
}>;
}>;
/**
* 総ページ数
*/
total_pages: number;
}
interface NotebookFileOutput {
/**
* Jupyterノートブックのセル
*/
cells: Array<{
cell_type: 'code' | 'markdown';
source: string;
outputs?: any[];
execution_count?: number;
}>;
/**
* ノートブックのメタデータ
*/
metadata?: Record<string, any>;
}ファイルタイプに適した形式でファイル内容を返します。
ツール名: Write
interface WriteOutput {
/**
* 成功メッセージ
*/
message: string;
/**
* 書き込まれたバイト数
*/
bytes_written: number;
/**
* 書き込まれたファイルパス
*/
file_path: string;
}ファイルの書き込みが成功した後に確認を返します。
ツール名: Glob
interface GlobOutput {
/**
* 一致するファイルパスの配列
*/
matches: string[];
/**
* 見つかった一致数
*/
count: number;
/**
* 使用された検索ディレクトリ
*/
search_path: string;
}globパターンに一致するファイルパスを、更新日時順にソートして返します。
ツール名: Grep
type GrepOutput =
| GrepContentOutput
| GrepFilesOutput
| GrepCountOutput;
interface GrepContentOutput {
/**
* コンテキスト付きの一致行
*/
matches: Array<{
file: string;
line_number?: number;
line: string;
before_context?: string[];
after_context?: string[];
}>;
/**
* 一致の総数
*/
total_matches: number;
}
interface GrepFilesOutput {
/**
* 一致を含むファイル
*/
files: string[];
/**
* 一致を含むファイル数
*/
count: number;
}
interface GrepCountOutput {
/**
* ファイルごとの一致数
*/
counts: Array<{
file: string;
count: number;
}>;
/**
* 全ファイルの一致総数
*/
total: number;
}output_modeで指定された形式で検索結果を返します。
ツール名: KillBash
interface KillBashOutput {
/**
* 成功メッセージ
*/
message: string;
/**
* 終了されたシェルのID
*/
shell_id: string;
}バックグラウンドシェルの終了後に確認を返します。
ツール名: NotebookEdit
interface NotebookEditOutput {
/**
* 成功メッセージ
*/
message: string;
/**
* 実行された編集の種類
*/
edit_type: 'replaced' | 'inserted' | 'deleted';
/**
* 影響を受けたセルID
*/
cell_id?: string;
/**
* 編集後のノートブックの総セル数
*/
total_cells: number;
}Jupyterノートブックの変更後に確認を返します。
ツール名: WebFetch
interface WebFetchOutput {
/**
* プロンプトに対するAIモデルの応答
*/
response: string;
/**
* フェッチされたURL
*/
url: string;
/**
* リダイレクト後の最終URL
*/
final_url?: string;
/**
* HTTPステータスコード
*/
status_code?: number;
}フェッチされたWebコンテンツのAI分析結果を返します。
ツール名: WebSearch
interface WebSearchOutput {
/**
* 検索結果
*/
results: Array<{
title: string;
url: string;
snippet: string;
/**
* 利用可能な場合の追加メタデータ
*/
metadata?: Record<string, any>;
}>;
/**
* 結果の総数
*/
total_results: number;
/**
* 検索されたクエリ
*/
query: string;
}Webからフォーマットされた検索結果を返します。
ツール名: TodoWrite
interface TodoWriteOutput {
/**
* 成功メッセージ
*/
message: string;
/**
* 現在のTodo統計
*/
stats: {
total: number;
pending: number;
in_progress: number;
completed: number;
};
}現在のタスク統計とともに確認を返します。
ツール名: ExitPlanMode
interface ExitPlanModeOutput {
/**
* 確認メッセージ
*/
message: string;
/**
* ユーザーがプランを承認したかどうか
*/
approved?: boolean;
}プランモード終了後に確認を返します。
ツール名: ListMcpResources
interface ListMcpResourcesOutput {
/**
* 利用可能なリソース
*/
resources: Array<{
uri: string;
name: string;
description?: string;
mimeType?: string;
server: string;
}>;
/**
* リソースの総数
*/
total: number;
}利用可能なMCPリソースのリストを返します。
ツール名: ReadMcpResource
interface ReadMcpResourceOutput {
/**
* リソースの内容
*/
contents: Array<{
uri: string;
mimeType?: string;
text?: string;
blob?: string;
}>;
/**
* リソースを提供したサーバー
*/
server: string;
}リクエストされたMCPリソースの内容を返します。
PermissionUpdateパーミッションを更新するための操作。
type PermissionUpdate =
| {
type: 'addRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'replaceRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'removeRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'setMode';
mode: PermissionMode;
destination: PermissionUpdateDestination;
}
| {
type: 'addDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}
| {
type: 'removeDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}PermissionBehaviortype PermissionBehavior = 'allow' | 'deny' | 'ask';PermissionUpdateDestinationtype PermissionUpdateDestination =
| 'userSettings' // グローバルユーザー設定
| 'projectSettings' // ディレクトリごとのプロジェクト設定
| 'localSettings' // Gitignoreされたローカル設定
| 'session' // 現在のセッションのみPermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';SdkBetabetasオプションで有効にできる利用可能なベータ機能。詳細についてはベータヘッダーを参照してください。
type SdkBeta = 'context-1m-2025-08-07';| 値 | 説明 | 互換モデル |
|---|---|---|
'context-1m-2025-08-07' | 100万トークンのコンテキストウィンドウを有効にする | Claude Opus 4.6、Claude Sonnet 4.5、Claude Sonnet 4 |
SlashCommand利用可能なスラッシュコマンドに関する情報。
type SlashCommand = {
name: string;
description: string;
argumentHint: string;
}ModelInfo利用可能なモデルに関する情報。
type ModelInfo = {
value: string;
displayName: string;
description: string;
}McpServerStatus接続されたMCPサーバーのステータス。
type McpServerStatus = {
name: string;
status: 'connected' | 'failed' | 'needs-auth' | 'pending';
serverInfo?: {
name: string;
version: string;
};
}AccountInfo認証済みユーザーのアカウント情報。
type AccountInfo = {
email?: string;
organization?: string;
subscriptionType?: string;
tokenSource?: string;
apiKeySource?: string;
}ModelUsage結果メッセージで返されるモデルごとの使用統計。
type ModelUsage = {
inputTokens: number;
outputTokens: number;
cacheReadInputTokens: number;
cacheCreationInputTokens: number;
webSearchRequests: number;
costUSD: number;
contextWindow: number;
}ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsageすべてのnullableフィールドをnon-nullableにしたUsageのバージョン。
type NonNullableUsage = {
[K in keyof Usage]: NonNullable<Usage[K]>;
}Usageトークン使用統計(@anthropic-ai/sdkより)。
type Usage = {
input_tokens: number | null;
output_tokens: number | null;
cache_creation_input_tokens?: number | null;
cache_read_input_tokens?: number | null;
}CallToolResultMCPツール結果タイプ(@modelcontextprotocol/sdk/types.jsより)。
type CallToolResult = {
content: Array<{
type: 'text' | 'image' | 'resource';
// 追加フィールドはタイプによって異なります
}>;
isError?: boolean;
}AbortError中止操作用のカスタムエラークラス。
class AbortError extends Error {}SandboxSettingsサンドボックス動作の設定。コマンドサンドボックスの有効化やネットワーク制限をプログラムで設定するために使用します。
type SandboxSettings = {
enabled?: boolean;
autoAllowBashIfSandboxed?: boolean;
excludedCommands?: string[];
allowUnsandboxedCommands?: boolean;
network?: NetworkSandboxSettings;
ignoreViolations?: SandboxIgnoreViolations;
enableWeakerNestedSandbox?: boolean;
}| プロパティ | タイプ | デフォルト | 説明 |
|---|---|---|---|
enabled | boolean | false | コマンド実行のサンドボックスモードを有効にする |
autoAllowBashIfSandboxed | boolean | false | サンドボックスが有効な場合にbashコマンドを自動承認する |
excludedCommands | string[] | [] | サンドボックス制限を常にバイパスするコマンド(例:['docker'])。これらはモデルの関与なしに自動的にサンドボックス外で実行されます |
allowUnsandboxedCommands | boolean | false | モデルがサンドボックス外でのコマンド実行をリクエストすることを許可する。trueの場合、モデルはツール入力でdangerouslyDisableSandboxを設定でき、パーミッションシステムにフォールバックします |
network | NetworkSandboxSettings | undefined | ネットワーク固有のサンドボックス設定 |
ignoreViolations | SandboxIgnoreViolations | undefined | 無視するサンドボックス違反の設定 |
enableWeakerNestedSandbox | boolean | false | 互換性のためにより弱いネストされたサンドボックスを有効にする |
ファイルシステムとネットワークのアクセス制限はサンドボックス設定では設定されません。代わりに、パーミッションルールから導出されます:
コマンド実行のサンドボックスにはサンドボックス設定を使用し、ファイルシステムとネットワークのアクセス制御にはパーミッションルールを使用してください。
import { query } from "@anthropic-ai/claude-agent-sdk";
const result = await query({
prompt: "Build and test my project",
options: {
sandbox: {
enabled: true,
autoAllowBashIfSandboxed: true,
network: {
allowLocalBinding: true
}
}
}
});Unixソケットのセキュリティ: allowUnixSocketsオプションは強力なシステムサービスへのアクセスを許可する可能性があります。例えば、/var/run/docker.sockを許可すると、Docker APIを通じて実質的にホストシステムへの完全なアクセスが許可され、サンドボックスの分離がバイパスされます。厳密に必要なUnixソケットのみを許可し、各ソケットのセキュリティへの影響を理解してください。
NetworkSandboxSettingsサンドボックスモードのネットワーク固有の設定。
type NetworkSandboxSettings = {
allowLocalBinding?: boolean;
allowUnixSockets?: string[];
allowAllUnixSockets?: boolean;
httpProxyPort?: number;
socksProxyPort?: number;
}| プロパティ | タイプ | デフォルト | 説明 |
|---|---|---|---|
allowLocalBinding | boolean | false | プロセスがローカルポートにバインドすることを許可する(例:開発サーバー用) |
allowUnixSockets | string[] | [] | プロセスがアクセスできるUnixソケットパス(例:Dockerソケット) |
allowAllUnixSockets | boolean | false | すべてのUnixソケットへのアクセスを許可する |
httpProxyPort | number | undefined | ネットワークリクエスト用のHTTPプロキシポート |
socksProxyPort | number | undefined | ネットワークリクエスト用のSOCKSプロキシポート |
SandboxIgnoreViolations特定のサンドボックス違反を無視するための設定。
type SandboxIgnoreViolations = {
file?: string[];
network?: string[];
}| プロパティ | タイプ | デフォルト | 説明 |
|---|---|---|---|
file | string[] | [] | 違反を無視するファイルパスパターン |
network | string[] | [] | 違反を無視するネットワークパターン |
allowUnsandboxedCommandsが有効な場合、モデルはツール入力でdangerouslyDisableSandbox: trueを設定することで、サンドボックス外でのコマンド実行をリクエストできます。これらのリクエストは既存のパーミッションシステムにフォールバックし、canUseToolハンドラーが呼び出されるため、カスタム認可ロジックを実装できます。
excludedCommands vs allowUnsandboxedCommands:
excludedCommands: 常にサンドボックスを自動的にバイパスするコマンドの静的リスト(例:['docker'])。モデルはこれを制御できません。allowUnsandboxedCommands: モデルがツール入力でdangerouslyDisableSandbox: trueを設定することで、実行時にサンドボックス外での実行をリクエストするかどうかを決定できるようにします。import { query } from "@anthropic-ai/claude-agent-sdk";
const result = await query({
prompt: "Deploy my application",
options: {
sandbox: {
enabled: true,
allowUnsandboxedCommands: true // モデルがサンドボックス外実行をリクエスト可能
},
permissionMode: "default",
canUseTool: async (tool, input) => {
// モデルがサンドボックスのバイパスをリクエストしているか確認
if (tool === "Bash" && input.dangerouslyDisableSandbox) {
// モデルはこのコマンドをサンドボックス外で実行したい
console.log(`Unsandboxed command requested: ${input.command}`);
// trueを返して許可、falseを返して拒否
return isCommandAuthorized(input.command);
}
return true;
}
}
});このパターンにより以下が可能になります:
dangerouslyDisableSandbox: trueで実行されるコマンドは完全なシステムアクセスを持ちます。canUseToolハンドラーでこれらのリクエストを慎重に検証してください。
permissionModeがbypassPermissionsに設定され、allowUnsandboxedCommandsが有効な場合、モデルは承認プロンプトなしにサンドボックス外でコマンドを自律的に実行できます。この組み合わせは、モデルがサンドボックスの分離をサイレントにエスケープすることを実質的に許可します。
Was this page helpful?