インストール
SDK は、
@anthropic-ai/claude-agent-sdk-darwin-arm64 などのオプション依存関係として、プラットフォーム用のネイティブ Claude Code バイナリをバンドルしています。Claude Code を別途インストールする必要はありません。パッケージマネージャーがオプション依存関係をスキップする場合、SDK は Native CLI binary for <platform> not found をスローします。代わりに、別途インストールされた claude バイナリに pathToClaudeCodeExecutable を設定してください。単一の実行可能ファイルにコンパイルする
bun build --compile を使用してアプリケーションを単一ファイルの実行可能ファイルにコンパイルする場合、SDK は実行時にバンドルされた CLI バイナリを解決できません。require.resolve はコンパイルされた実行可能ファイルの $bunfs 仮想ファイルシステム内では機能しないため、SDK は Native CLI binary for <platform> not found をスローします。
この問題を回避するには、プラットフォームバイナリをファイルアセットとして埋め込み、起動時に extractFromBunfs() を使用して実際のパスに抽出し、そのパスを pathToClaudeCodeExecutable に渡します。
extractFromBunfs() ヘルパーには @anthropic-ai/claude-agent-sdk v0.3.144 以降が必要です。以下の例は macOS on Apple Silicon 向けにビルドします。
extractFromBunfs() は、コンパイルされた実行可能ファイルの仮想ファイルシステムから埋め込まれたバイナリをユーザーごとの一時ディレクトリにコピーし、実際のパスを返します。コンパイルされた実行可能ファイルの外では、入力パスを変更せずに返すため、同じコードは開発環境で変更なしに実行されます。
各コンパイルされた実行可能ファイルは、単一プラットフォームのバイナリを埋め込みます。インポート内のプラットフォームパッケージを --target と一致させます。
- クロスコンパイルするには、一致しないプラットフォームパッケージをインストールします。例えば
npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force。 - Windows では、バイナリサブパスは
claude.exeです。例えば@anthropic-ai/claude-agent-sdk-win32-x64/claude.exe。
関数
query()
Claude Code と対話するための主要な関数です。メッセージが到着するにつれてストリーミングする非同期ジェネレータを作成します。
パラメータ
戻り値
Query オブジェクトを返します。これは AsyncGenerator<SDKMessage, void> を拡張し、追加のメソッドを持ちます。
startup()
プロンプトが利用可能になる前に、CLI サブプロセスをスポーンして初期化ハンドシェイクを完了することで、プリウォーミングします。返された WarmQuery ハンドルは後でプロンプトを受け入れ、既に準備ができているプロセスに書き込むため、最初の query() 呼び出しはサブプロセスのスポーンと初期化コストをインラインで支払うことなく解決します。
パラメータ
戻り値
サブプロセスがスポーンされ、初期化ハンドシェイクを完了したら解決するPromise<WarmQuery> を返します。
例
アプリケーションブート時など、早期にstartup() を呼び出し、プロンプトが準備できたら返されたハンドルで .query() を呼び出します。これにより、サブプロセスのスポーンと初期化をクリティカルパスから移動させます。
tool()
SDK MCP サーバーで使用するためのタイプセーフな MCP ツール定義を作成します。
パラメータ
ToolAnnotations
@modelcontextprotocol/sdk/types.js から再エクスポートされます。すべてのフィールドはオプションのヒントです。クライアントはセキュリティ決定のためにこれらに依存すべきではありません。
createSdkMcpServer()
アプリケーションと同じプロセスで実行される MCP サーバーインスタンスを作成します。
パラメータ
listSessions()
軽いメタデータを含む過去のセッションを検出してリストします。プロジェクトディレクトリでフィルタリングするか、すべてのプロジェクト全体でセッションをリストします。
パラメータ
戻り値の型:SDKSessionInfo
例
プロジェクトの 10 個の最新セッションを出力します。結果はlastModified の降順でソートされるため、最初の項目が最新です。dir を省略してすべてのプロジェクト全体を検索します。
getSessionMessages()
過去のセッショントランスクリプトからユーザーおよびアシスタントメッセージを読み取ります。
パラメータ
戻り値の型:SessionMessage
例
getSessionInfo()
プロジェクトディレクトリ全体をスキャンせずに、ID でセッションのメタデータを読み取ります。
パラメータ
SDKSessionInfo を返すか、セッションが見つからない場合は undefined を返します。
renameSession()
カスタムタイトルエントリを追加することでセッションの名前を変更します。繰り返し呼び出しは安全です。最新のタイトルが優先されます。
パラメータ
tagSession()
セッションにタグを付けます。null を渡してタグをクリアします。繰り返し呼び出しは安全です。最新のタグが優先されます。
パラメータ
resolveSettings()
CLI と同じマージエンジンを使用して、指定されたディレクトリの有効な Claude Code 設定を解決します。Claude CLI をスポーンせずに実行します。query() 呼び出しを呼び出す前に、その呼び出しが何の設定を見るかを検査するために使用します。
この関数はアルファ版であり、安定化前に API が変更される可能性があります。CLI スタートアップとの同等性のために、macOS plist および Windows HKLM/HKCU を含む MDM ソースを読み取りますが、管理者が設定した
policyHelper サブプロセスは実行しません。permissions.defaultMode フィールドは、プロジェクト設定を含むすべてのティアから現状のまま返されます。CLI が昇格するアクセス許可モードを尊重する前に適用する信頼フィルタは適用されません。パラメータ
resolveSettings() は単一のオプションオブジェクトを受け入れます。すべてのフィールドはオプションです。
戻り値の型:ResolvedSettings
resolveSettings() は、マージされた設定と各キーに寄与したソースを説明するオブジェクトを返します。
例
プロジェクトディレクトリの設定を解決し、クリーンアップ期間を制御するソースを出力します。型
Options
query() 関数の設定オブジェクト。
遅いまたは停止した API レスポンスを処理
CLI サブプロセスは、API タイムアウトと停止検出を制御するいくつかの環境変数を読み取ります。env オプションを通じてそれらを渡します:
API_TIMEOUT_MS:Anthropic クライアントのリクエストごとのタイムアウト(ミリ秒単位)。デフォルト600000。メインループとすべてのサブエージェントに適用されます。CLAUDE_CODE_MAX_RETRIES:最大 API リトライ数。デフォルト10、上限15。各リトライは独自のAPI_TIMEOUT_MSウィンドウを取得するため、最悪の場合の経過時間は約API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)にバックオフを加えたものです。無人実行で長い停止を待つ必要がある場合は、CLAUDE_CODE_RETRY_WATCHDOG=1を設定して容量エラーを無限に再試行します。Claude Code v2.1.199 以降では、他の一時的なエラーのデフォルトを300に引き上げ、この変数の上限を削除します。CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS:run_in_backgroundで起動されたサブエージェントの停止ウォッチドッグ。デフォルト600000。各ストリームイベントでリセットされます。停止時にサブエージェントを中止し、タスクを失敗とマークし、部分的な結果を含むエラーを親に表示します。同期サブエージェントには適用されません。CLAUDE_ENABLE_STREAM_WATCHDOGとCLAUDE_STREAM_IDLE_TIMEOUT_MS:ヘッダーが到着したがレスポンスボディがストリーミングを停止したときにリクエストを中止します。ウォッチドッグはすべてのプロバイダーでデフォルトでオンになっています。CLAUDE_ENABLE_STREAM_WATCHDOG=0で無効にします。CLAUDE_STREAM_IDLE_TIMEOUT_MSはデフォルトで300000で、その最小値にクランプされます。中止されたリクエストは通常のリトライパスを通ります。
Query オブジェクト
query() 関数によって返されるインターフェース。
メソッド
applyFlagSettings()
実行中のセッションで任意の 設定 を変更します。クエリを再開せずに変更します。エージェントが信頼できない入力を読み取った後に permissions を厳しくするなど、専用セッターがない設定を変更する必要がある場合に使用します。setModel() と setPermissionMode() はこれら 2 つのキーの専用セッターです。applyFlagSettings() は、設定キーの任意のサブセットを受け入れる一般的な形式であり、ここで model を渡すことは setModel() と同じように動作します。
ミッドセッションで効果を発揮するキーのみ:
- 次のターンで適用される:
model、effortLevel、ultracode、permissions、hooks、skillOverrides、fastMode、agent。agentを切り替えると、そのエージェントのモデルオーバーライド、フック、システムプロンプトも次のターンで適用されます。 - ミッドセッションで効果なし:システムプロンプトオプション。これらはスタートアップ時に 1 回解決されるため、実行中のセッションは呼び出しが成功しても元の値を保持します。それらを変更するには、新しいセッションを開始してください。
effortLevel は 努力レベル 名を受け入れます。また、"ultracode" も受け入れます。これはセッションを xhigh 努力で実行し、ultracode をオンにします。Settings 型はその値なしで effortLevel を宣言しているため、TypeScript では同等の { ultracode: true } を渡します。ultracode 値には Claude Code v2.1.203 以降が必要であり、設定ファイルの effortLevel キーではなく、applyFlagSettings() によってのみ受け入れられます。
値はフラグ設定レイヤーに書き込まれます。これは、query() のインライン settings オプションがスタートアップ時に入力するのと同じレイヤーです。フラグ設定は 設定優先順位 の上部付近に位置します。ユーザー、プロジェクト、ローカル設定をオーバーライドし、管理ポリシー設定のみがそれらをオーバーライドできます。これは、優先順位セクション がプログラム的なオプションと呼ぶのと同じティアです。
連続した呼び出しは、トップレベルキーを浅くマージします。{ permissions: {...} } を含む 2 番目の呼び出しは、前の呼び出しから permissions オブジェクト全体を置き換えます。深くマージするのではなく。フラグレイヤーからキーをクリアして、より低い優先度のソースにフォールバックするには、そのキーに null を渡します。undefined を渡すと、JSON シリアル化がそれをドロップするため、効果がありません。
ストリーミング入力モードでのみ利用可能です。これは setModel() と setPermissionMode() と同じ制約です。
以下の例は、セッション中にアクティブなモデルを切り替えてから、オーバーライドをクリアして、ユーザーまたはプロジェクト設定が指定するモデルにフォールバックします。
applyFlagSettings() は TypeScript のみです。Python SDK は同等のメソッドを公開していません。WarmQuery
startup() によって返されるハンドル。サブプロセスは既にスポーンされ、初期化されているため、このハンドルで query() を呼び出すと、スタートアップレイテンシーなしで準備ができているプロセスにプロンプトを直接書き込みます。
メソッド
WarmQuery は AsyncDisposable を実装しているため、自動クリーンアップのために await using で使用できます。
SDKControlInitializeResponse
initializationResult() の戻り値の型。セッション初期化データを含みます。
initialize を送信する場合、コントロールレスポンスラッパーは、オプションの pending_permission_requests 配列も含みます。フィールドはレスポンスラッパー自体にあり、上記の SDKControlInitializeResponse ペイロードにはありません。各エントリは、セッションが実行中にストリーミングする権限リクエストと同じ { type: "control_request", request_id, request } 形状を持つ完全な control_request メッセージです。
これらは、クライアントが接続する前に発行され、まだ返信を待っているリクエストです。SDK はこの配列を読み取り、各エントリを canUseTool コールバックにディスパッチします。これは、トランスポートギャップ後に reinitialize() がトリガーする再配信と同じです。繰り返されたリクエスト ID をべき等に処理してください。接続が切断される前にコールバックが既に受け取ったリクエストを繰り返すエントリが存在する可能性があるためです。
SDKControlInterruptResponse
中断レシート:interrupt() が SDKSystemMessage.capabilities で interrupt_receipt_v1 機能をアドバタイズする CLI で解決する値。Claude Code v2.1.205 以降が必要です。以前の CLI は中断に空の成功ペイロードで応答するため、interrupt() は undefined で解決します。
still_queued は中断を生き残るユーザーメッセージの UUID をリストします:キューに残っているメッセージ、および次のターンのためにすでにデキューされたが、まだ中止によって到達できないバッチ。各メッセージは、中断後に独自のターンとして実行されます。最初にキャンセルしない限り。レシートを使用して、何かを再送信するかどうかを決定します。既にリストされているメッセージを再送信すると、重複したターンが生成されます。
これらの注意事項でリストを解釈します:
- UUID が付いてエンキューされたメッセージのみが表示されます。空の配列は、他に何も実行されないことを意味しません。
- メインスレッドメッセージのみがリストされます。サブエージェントにアドレス指定されたメッセージはスコープ外です。
- リストには、クライアントが送信しなかった UUID(スケジュール済みタスク トリガーなど)が含まれる場合があります。認識しない UUID は、エラーとして扱う代わりに無視してください。
SDKResultMessage の前に到着します。その結果の後にキューを検査するのではなく、レシートを読んでください。ループは次のキューに入れられたターンをすぐに開始するため、結果の後に検査するキューは既に変更されています。
AgentDefinition
プログラムで定義されたサブエージェントの設定。
AgentMcpServerSpec
サブエージェントで利用可能な MCP サーバーを指定します。サーバー名(親の mcpServers 設定からサーバーを参照する文字列)またはインラインサーバー設定レコード(サーバー名を設定にマッピング)です。
McpServerConfigForProcessTransport は McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig です。
SettingSource
SDK がどのファイルシステムベースの設定ソースから設定をロードするかを制御します。
デフォルト動作
settingSources が省略または undefined の場合、query() は Claude Code CLI と同じファイルシステム設定をロードします:ユーザー、プロジェクト、ローカル。エンドポイント管理ポリシー はすべての場合にロードされます。サーバー管理設定は、適格な設定 で組織認証情報を使用してセッションが認証されるときにフェッチされます。このオプションに関係なく読み取られる入力については Claude Code 機能を使用 を参照してください。
settingSources を使用する理由
ファイルシステム設定を無効にする:設定の優先順位
複数のソースがロードされる場合、設定はこの優先順位(高から低)でマージされます:- ローカル設定(
.claude/settings.local.json) - プロジェクト設定(
.claude/settings.json) - ユーザー設定(
~/.claude/settings.json)
agents と allowedTools などのプログラム的なオプションは、ユーザー、プロジェクト、ローカルのファイルシステム設定をオーバーライドします。管理ポリシー設定はプログラム的なオプションより優先されます。
PermissionMode
CanUseTool
ツール使用を制御するためのカスタム権限関数型。
関数は、インタラクティブな権限プロンプトの SDK 置き換えです。権限評価フロー がプロンプトに解決される場合にのみ呼び出されます。allowedTools エントリ、設定許可ルール、または acceptEdits や bypassPermissions などの権限モードによって既に承認されたツール呼び出しは、それを呼び出しません。AskUserQuestion、requiresUserInteraction とマークされた MCP ツール、および 組織が ask に設定 したコネクタツールは、許可ルールが一致する場合でも関数に到達します。dontAsk モードではこれらの呼び出しは代わりに拒否されます。すべてのツール呼び出しをゲートするには、代わりに PreToolUse フック を使用します。
コールバックは通常、
PermissionResult を返すことでリクエストを解決します。これは SDK がそのトランスポートを介して control_response として書き込みます。アプリケーションが既にこのリクエストの control_response を独自のチャネルを介して送信した場合にのみ null を返します。requestId をエコーします。その場合、SDK はそのトランスポートへの応答の書き込みをスキップします。他の場合に null を返すと、control_response が送信されず、権限プロンプトがタイムアウトしないため、ツール呼び出しは無期限にブロックされたままになります。
requestId オプションと null 戻り値には Claude Code v2.1.199 以降が必要です。
PermissionResult
権限チェックの結果。
ToolConfig
組み込みツール動作の設定。
McpServerConfig
MCP サーバーの設定。
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
McpClaudeAIProxyServerConfig
SdkPluginConfig
SDK でプラグインをロードするための設定。
例:
メッセージ型
SDKMessage
クエリによって返されるすべての可能なメッセージの共用体型。
SDKAssistantMessage
アシスタント応答メッセージ。
message フィールドは Anthropic SDK の BetaMessage です。id、content、model、stop_reason、usage などのフィールドを含みます。
SDKAssistantMessageError は以下のいずれかです:'authentication_failed'、'oauth_org_not_allowed'、'billing_error'、'rate_limit'、'overloaded'、'invalid_request'、'model_not_found'、'server_error'、'max_output_tokens'、または 'unknown'。'model_not_found' は、選択されたモデルが存在しないか、アカウントまたはデプロイメントで利用できないことを意味します。'overloaded' は、API がサーバーが容量に達しているため 529 を返したことを意味し、'rate_limit' はクォータに対する 429 とは異なります。
SDKUserMessage
ユーザー入力メッセージ。
shouldQuery を false に設定して、アシスタントターンをトリガーせずにメッセージをトランスクリプトに追加します。メッセージは保持され、ターンをトリガーする次のユーザーメッセージにマージされます。これを使用して、バンド外で実行したコマンドの出力など、モデル呼び出しを費やさずにコンテキストを注入します。
tool_result ブロックを持つメッセージでは、tool_use_result はモデルに送信されたテキストではなく、ツールの構造化出力オブジェクトです。その形状は、対応する tool_use ブロックで指定されたツールに依存するため、フィールドは unknown として型付けされます。組み込みの形状は ツール出力型 の下にリストされています。
Agent ツールの場合、tool_use_result は AgentOutput です。completed 結果では、content はサブエージェントのレポートを保持し、Claude Code が tool_result テキストに追加するエージェント ID と使用状況トレーラーは含まれません。そのため、そのテキストを解析する代わりに tool_use_result からレンダリングします。
SDKUserMessageReplay
必須 UUID を含む再生されたユーザーメッセージ。
origin の種類が peer または channel であるもの)は、アクティブなターン中に配信されたか、セッションがアイドル状態の間に新しいターンを開始したかに関わらず、ストリームに再生として到達します。v2.1.207 より前では、セッションがアイドル状態の間に配信された注入されたターンはストリーム上にメッセージを生成せず、トランスクリプトを再読み込みするときにのみ表示されました。
SDKResultMessage
最終結果メッセージ。
subtype を超えた診断詳細を提供します:
api_error_status:会話を終了させた API エラーの HTTP ステータスコード。ターンが API エラーなしで終了した場合、存在しないかnullです。ttft_ms:最初のトークンまでの時間(ミリ秒)。最初の完全なアシスタントメッセージが到着したときに測定されます。成功の場合のみ存在します。ttft_stream_ms:最初のmessage_startストリームイベントまでの時間(ミリ秒)。レスポンスストリームが開くときです。ttft_msより低く、2 つの間のギャップは最初のメッセージをストリーミングするのに費やされた時間です。成功の場合のみ存在します。terminal_reason:ループが終了した理由。"completed"、"max_turns"、"tool_deferred"、"aborted_streaming"、"aborted_tools"、"hook_stopped"、"stop_hook_prevented"、"background_requested"、"blocking_limit"、"rapid_refill_breaker"、"prompt_too_long"、"image_error"、"model_error"、"api_error"、"malformed_tool_use_exhausted"、"budget_exhausted"、"structured_output_retry_exhausted"、"tool_deferred_unavailable"、または"turn_setup_failed"のいずれかです。fast_mode_state:"on"、"off"、または"cooldown"のいずれかです。
origin フィールドは、この結果をトリガーしたユーザーメッセージの SDKMessageOrigin を転送します。バックグラウンドタスクが完了し、SDK が合成フォローアップターンを注入する場合、結果の SDKResultMessage は origin: { kind: "task-notification" } を持ちます。このフィールドをチェックして、プロンプトに答える結果とバックグラウンドタスクのフォローアップで発行される結果を区別し、後者をルーティングまたは抑制できます。このフィールドは、スタートアップエラーなど、ユーザーターンの前に発行される結果には存在しません。
PreToolUse フックが permissionDecision: "defer" を返すと、結果は stop_reason: "tool_deferred" を持ち、deferred_tool_use は保留中のツールの id、name、input を保持します。このフィールドを読んで、独自の UI でリクエストをサーフェスし、同じ session_id で再開して続行します。完全なラウンドトリップについては、ツール呼び出しを後で延期するを参照してください。
SDKSystemMessage
システム初期化メッセージ。
capabilities 配列は、この CLI が実装するプロトコル動作に名前を付けるため、claude_code_version 文字列を比較する代わりに機能検出を行うことができます。これはオープンセットです:認識しない値は無視し、依存する特定の動作の機能をチェックしてください。このフィールドには Claude Code v2.1.205 以降が必要で、以前の CLI では存在しません。
SDKPartialAssistantMessage
ストリーミング部分メッセージ(includePartialMessages が true の場合のみ)。parent_tool_use_id フィールドは常に null です:ストリームイベントはメインセッションのみに対して発行されます。サブエージェント属性については、parent_tool_use_id を持つ完全なメッセージを使用するか、forwardSubagentText を有効にして、サブエージェントテキストと思考を完全なメッセージとして受け取ります。
SDKCompactBoundaryMessage
会話圧縮境界を示すメッセージ。
SDKInformationalMessage
ループによって発行される汎用テキストバナー。エラーではないステータス行、UserPromptSubmit フックのブロック理由などのフックフィードバック、およびコマンド出力を含みます。content を指定された level でプレーンテキストとしてレンダリングします。
SDKWorkerShuttingDownMessage
グレースフルワーカーティアダウン時に発行されるため、リモートクライアントはハートビートタイムアウトを待つ代わりにワーカーが消えた理由を表示できます。reason はホスト CLI によって設定される短い snake_case 文字列です("host_exit" や "remote_control_disabled" など)。ライブストリーミング時にのみこれに対応します。再開されたセッションはこのメッセージの過去のインスタンスを再生するため、その場合は無視してください。
SDKPluginInstallMessage
プラグインインストール進捗イベント。CLAUDE_CODE_SYNC_PLUGIN_INSTALL が設定されている場合に発行されるため、Agent SDK アプリケーションは最初のターンの前にマーケットプレイスプラグインのインストールを追跡できます。started と completed ステータスは全体的なインストールをブラケットします。installed と failed ステータスは個別のマーケットプレイスをレポートし、name を含みます。
SDKPermissionDeniedMessage
権限システムがインタラクティブプロンプトなしでツール呼び出しを自動的に拒否するときに発行されるストリームイベント。これを使用して、その後に続く is_error ツール結果のみを観察するのではなく、拒否を UI にリアルタイムでレンダリングします。インタラクティブな質問パスは、canUseTool コールバックを通じてアプリケーションに別途到達します。PreToolUse フックによって発行された拒否は、このイベントを通じてレポートされません。
このイベントには Claude Code v2.1.136 以降が必要です。
SDKPermissionDenial
拒否されたツール使用に関する情報。
SDKMessageOrigin
ユーザーロールメッセージの出所。これは SDKUserMessage の origin として表示され、対応する SDKResultMessage に転送されるため、特定のターンをトリガーしたものを判断できます。
フック型
フックの使用に関する包括的なガイド、例、一般的なパターンについては、フックガイド を参照してください。HookEvent
利用可能なフックイベント。
HookCallback
フックコールバック関数型。
HookCallbackMatcher
オプションのマッチャーを含むフック設定。
HookInput
すべてのフック入力型の共用体型。
BaseHookInput
すべてのフック入力型が拡張する基本インターフェース。
prompt_id フィールドは、現在処理中のユーザープロンプトを識別する UUID です。OpenTelemetry イベントの prompt.id 属性 と一致し、最初のユーザー入力まで存在しません。Claude Code v2.1.196 以降が必要です。
PreToolUseHookInput
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
バッチ内のすべてのツール呼び出しが解決された後、次のモデルリクエストの前に 1 回発火します。tool_response はモデルが見るシリアル化された tool_result コンテンツを保持します。形状は PostToolUseHookInput の構造化された Output オブジェクトとは異なります。
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCompletedHookInput
ConfigChangeHookInput
WorktreeCreateHookInput
WorktreeRemoveHookInput
MessageDisplayHookInput
HookJSONOutput
フック戻り値。
AsyncHookJSONOutput
SyncHookJSONOutput
ツール入力型
すべての組み込み Claude Code ツールの入力スキーマのドキュメント。これらの型は@anthropic-ai/claude-agent-sdk からエクスポートされ、タイプセーフなツール相互作用に使用できます。
ToolInputSchemas
すべてのツール入力型の共用体。@anthropic-ai/claude-agent-sdk からエクスポートされます。
Agent
ツール名:Agent(以前は Task。これはまだエイリアスとして受け入れられます)
AskUserQuestion
ツール名:AskUserQuestion
Bash
ツール名:Bash
Monitor
ツール名:Monitor
command はスクリプトを実行し、stdout 行ごとに 1 つのイベントを発行し、ws は WebSocket を開き、テキストフレームごとに 1 つのイベントを発行します。command または ws のいずれか正確に 1 つを指定してください。ws ソースには Claude Code v2.1.195 以降が必要です。
セッション長のウォッチ(ログテールなど)の場合は persistent: true を設定します。Monitor がコマンドを実行する場合、Bash と同じパーミッションルールに従います。WebSocket ウォッチは別途承認を求めます。動作とプロバイダーの可用性については、Monitor ツールリファレンス を参照してください。
TaskOutput
ツール名:TaskOutput
Edit
ツール名:Edit
Read
ツール名:Read
pages を使用します(例:"1-5")。
Write
ツール名:Write
Glob
ツール名:Glob
Grep
ツール名:Grep
TaskStop
ツール名:TaskStop
task_id はエージェントチームのチームメイト、またはエージェント ID または名前で名前付きバックグラウンドエージェントも受け入れます。
NotebookEdit
ツール名:NotebookEdit
WebFetch
ツール名:WebFetch
WebSearch
ツール名:WebSearch
Workflow
ツール名:Workflow
Workflow ツールは Agent SDK v0.3.149 以降で利用可能です。script、name、または scriptPath の少なくとも 1 つが必要です。
TodoWrite
ツール名:TodoWrite
TypeScript Agent SDK 0.3.142 以降、
TodoWrite はデフォルトで無効になっています。代わりに TaskCreate、TaskGet、TaskUpdate、および TaskList を使用してください。監視コードを更新するには、Task ツールへの移行 を参照するか、CLAUDE_CODE_ENABLE_TASKS=0 を設定して TodoWrite に戻してください。TaskCreate
ツール名:TaskCreate
TaskUpdate
ツール名:TaskUpdate
status を "deleted" に設定して削除します。
TaskGet
ツール名:TaskGet
null を返します。
TaskList
ツール名:TaskList
ExitPlanMode
ツール名:ExitPlanMode
allowedPrompts フィールドは非推奨で無視されます。Claude Code は既存の呼び出し元とトランスクリプトが検証されるようにそれでも受け入れます。v2.1.205 より前は、計画を実装するためのプロンプトベースの Bash パーミッションをリクエストしていました。
ListMcpResources
ツール名:ListMcpResourcesTool
ReadMcpResource
ツール名:ReadMcpResourceTool
EnterWorktree
ツール名:EnterWorktree
path を渡します。最初の入力時、ターゲットは現在のリポジトリの登録済み worktree、またはマルチリポジトリワークスペースの場合はその中にネストされたリポジトリの worktree である必要があります。worktree セッション内からは、セッションのリポジトリの .claude/worktrees/ の下にある必要があります。name と path は相互に排他的です。
ツール出力型
すべての組み込み Claude Code ツールの出力スキーマのドキュメント。これらの型は@anthropic-ai/claude-agent-sdk からエクスポートされ、各ツールによって返される実際の応答データを表します。
ToolOutputSchemas
すべてのツール出力型の共用体。
Agent
ツール名:Agent(以前は Task。これはまだエイリアスとして受け入れられます)
status フィールドで判別されます:完了したタスクの場合は "completed"、バックグラウンドタスクの場合は "async_launched"、Claude Code がリモートクラウドセッションにディスパッチしたタスクの場合は "remote_launched"。sessionUrl はそのセッションにリンクし、taskId はそれを識別します。
completed および async_launched バリアントの resolvedModel フィールドは、サブエージェントが実際に実行されたモデルに名前を付けます。これは、availableModels または別のオーバーライドが適用される場合、要求された model 入力と異なる場合があります。このフィールドには Claude Code v2.1.174 以降が必要です。
completed バリアントでは、サブエージェントが分離された git worktree で実行された場合に worktreePath が設定され、Claude Code がそれを作成した場合に worktreeBranch はその worktree のブランチに名前を付けます。usage.service_tier は、API がサブエージェントのリクエストに対して報告したサービスティア文字列を保持します。
v2.1.207 より前では、公開された型はより狭いものでした。worktreePath、worktreeBranch、citations、toolStats.frameCount、および inference_geo、speed、iterations 使用フィールドを省略し、service_tier を "standard" | "priority" | "batch" として型付けしていました。型がオプションとしてマークするフィールドは、以前のバージョンで記録された結果に存在しない場合があります。
AskUserQuestion
ツール名:AskUserQuestion
response はユーザーが構造化された質問に答える代わりに自由形式の返信を入力した場合に設定されます。存在する場合、Claude は質問ごとの回答リストの代わりに「ユーザーが応答しました:…」を受け取ります。
Bash
ツール名:Bash
backgroundTaskId が含まれます。
Monitor
ツール名:Monitor
TaskStop で使用して、ウォッチを早期にキャンセルします。
Edit
ツール名:Edit
Read
ツール名:Read
type フィールドで判別されます。
Write
ツール名:Write
Glob
ツール名:Glob
Grep
ツール名:Grep
mode によって異なります:ファイルリスト、マッチを含むコンテンツ、またはマッチ数。
TaskStop
ツール名:TaskStop
NotebookEdit
ツール名:NotebookEdit
WebFetch
ツール名:WebFetch
WebSearch
ツール名:WebSearch
Workflow
ツール名:Workflow
error を確認してください:構文チェックに失敗したスクリプトは status: "async_launched" と error セットで返され、実行されません。
TodoWrite
ツール名:TodoWrite
TypeScript Agent SDK 0.3.142 以降、
TodoWrite はデフォルトで無効になっています。代わりに TaskCreate、TaskGet、TaskUpdate、および TaskList を使用してください。タスクツールへの移行を参照して、監視コードを更新するか、CLAUDE_CODE_ENABLE_TASKS=0 を設定して TodoWrite に戻してください。TaskCreate
ツール名:TaskCreate
TaskUpdate
ツール名:TaskUpdate
TaskGet
ツール名:TaskGet
null を返します。
TaskList
ツール名:TaskList
ExitPlanMode
ツール名:ExitPlanMode
ListMcpResources
ツール名:ListMcpResourcesTool
ReadMcpResource
ツール名:ReadMcpResourceTool
EnterWorktree
ツール名:EnterWorktree
パーミッション型
PermissionUpdate
パーミッション更新の操作。
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
その他の型
ApiKeySource
SdkBeta
betas オプション経由で有効にできる利用可能なベータ機能。詳細は ベータヘッダー を参照してください。
SlashCommand
利用可能なスラッシュコマンドに関する情報。
ModelInfo
利用可能なモデルに関する情報。
AgentInfo
Agent ツール経由で呼び出すことができる利用可能なサブエージェントに関する情報。
McpServerStatus
接続された MCP サーバーのステータス。
McpServerStatusConfig
mcpServerStatus() によってレポートされた MCP サーバーの設定。これはすべての MCP サーバートランスポートタイプの共用体です。
McpServerConfig を参照してください。
AccountInfo
認証されたユーザーのアカウント情報。
ModelUsage
結果メッセージで返されるモデルごとの使用統計。costUSD 値はクライアント側の推定です。請求に関する注意事項については、コストと使用状況を追跡 を参照してください。
ConfigScope
NonNullableUsage
すべての nullable フィールドが non-nullable になった Usage のバージョン。
Usage
トークン使用統計。これは @anthropic-ai/sdk の BetaUsage 型です。
BetaServerToolUsage と BetaIterationsUsage は @anthropic-ai/sdk で定義されています。
CallToolResult
MCP ツール結果型(@modelcontextprotocol/sdk/types.js から)。structuredContent は content と一緒に返すことができる JSON オブジェクトで、画像ブロックを含みます。詳細は 構造化データを返す を参照してください。
ThinkingConfig
Claude の思考/推論動作を制御します。非推奨の maxThinkingTokens より優先されます。
display フィールドは、思考テキストが "summarized" または "omitted" で返されるかどうかを制御します。Claude Opus 4.7 以降では、API のデフォルトは "omitted" であるため、"summarized" を設定して thinking ブロックで思考コンテンツを受け取ります。
SpawnedProcess
カスタムプロセススポーニング用のインターフェース(spawnClaudeCodeProcess オプションで使用)。ChildProcess は既にこのインターフェースを満たしています。
SpawnOptions
カスタムスポーン関数に渡されるオプション。
signal フィールドは、スポーン関数にプロセスをティアダウンするタイミングを通知します。Node の spawn() に signal オプションとして渡すか、VM またはコンテナティアダウンハンドラーに渡してください。このシグナルは、Options.abortController が中止した瞬間には発火しません。SDK は最初にプロセスの stdin を閉じて約 2 秒待機し、CLI がクリーンにシャットダウンできるようにしてから、このシグナルを中止します。呼び出し元が中止した瞬間に反応するには、スポーン関数がそのエンクロージングスコープから参照できる独自の Options.abortController.signal をリッスンしてください。McpSetServersResult
setMcpServers() 操作の結果。
RewindFilesResult
rewindFiles() 操作の結果。
SDKStatusMessage
ステータス更新メッセージ(例:圧縮)。
SDKTaskNotificationMessage
バックグラウンドタスクが完了、失敗、または停止したときの通知。バックグラウンドタスクには、run_in_background Bash コマンド、Monitor ウォッチ、バックグラウンドサブエージェントが含まれます。
SDKToolUseSummaryMessage
会話でのツール使用のサマリー。
SDKHookStartedMessage
フックが実行を開始したときに発行されます。
Claude Code は、このメッセージ、SDKHookProgressMessage、および SDKHookResponseMessage をメッセージストリームに直ちに配信します。これは、セッション起動中に SessionStart または Setup フックがまだ実行中であっても含まれます。Claude Code v2.1.169 から v2.1.203 は、SessionStart または Setup フックが完了した後、これらのメッセージを 1 つのバッチで配信していました。v2.1.204 はライブ配信を復元しました。
SDKHookProgressMessage
フックが実行中に stdout/stderr 出力で発行されます。
SDKHookResponseMessage
フックが実行を終了したときに発行されます。
SDKToolProgressMessage
ツール実行中に定期的に発行され、進捗を示します。
SDKAuthStatusMessage
認証フロー中に発行されます。
SDKTaskStartedMessage
バックグラウンドタスクが開始したときに発行されます。task_type フィールドは、バックグラウンド Bash コマンドと Monitor ウォッチの場合は "local_bash"、サブエージェントの場合は "local_agent"、またはリモートエージェントの場合は "remote_agent" です。
SDKTaskProgressMessage
サブエージェントまたはバックグラウンドタスクが実行中に定期的に発行されます。summary フィールドは、agentProgressSummaries が有効な場合にのみ入力されます。
SDKTaskUpdatedMessage
バックグラウンドタスクの状態が変更されたときに発行されます。例えば、running から completed に遷移するときなど。patch をローカルタスクマップ(task_id でキー付け)にマージしてください。end_time フィールドは Unix エポックタイムスタンプ(ミリ秒単位)で、Date.now() と比較可能です。
SDKBackgroundTasksChangedMessage
ライブバックグラウンドタスクのセットが変更されるたびに発行されます。タスクが開始、完了、キル、またはフォアグラウンドエージェントがバックグラウンド化されるときです。tasks 配列はライブセット全体です。task_started および task_notification イベントをペアリングするのではなく、各ペイロードでキャッシュされたセットを置き換えてください。そのため、次のメンバーシップ変更は、逃したイベントを修正します。
これらのタスク単位のイベントに対する順序付けは指定されていないため、2 つのストリームを相関させないでください。
起動時には何も発行されません。セッションの CLI プロセスが開始または再開されるたびに空のセットにリセットし、次のメンバーシップ変更でそれを再入力させてください。
Claude Code v2.1.203 以降が必要です。
SDKThinkingTokensMessage
Claude が思考ブロック(編集されたものを含む)を生成している間に発行され、これまでに生成された思考トークンの実行中の推定値を含みます。estimated_tokens は現在の思考ブロックの実行合計で、estimated_tokens_delta はこのフレームで実行された増分です。進捗表示に使用してください。トップレベルエージェントループの最終カウントは結果メッセージの usage.output_tokens です。これは サブエージェントトークンを含みません。全体のツリーアカウンティングには modelUsage を使用してください。
Claude Code v2.1.153 以降が必要です。
SDKFilesPersistedEvent
ファイルチェックポイントがディスクに永続化されたときに発行されます。
SDKRateLimitEvent
セッションがレート制限に遭遇したときに発行されます。
errorCode が "credits_required" の場合、拒否は含まれた使用量が枯渇した claude.ai サブスクリプションからのもので、ユーザーが使用クレジットを購入するまでセッションは続行できません。canUserPurchaseCredits は認証されたユーザーがアカウントのクレジットを購入できるかどうかを示し、hasChargeableSavedPaymentMethod は保存された支払い方法がファイルにあるかどうかを示します。3 つのフィールドすべてはクレジット必須の拒否ではないレート制限イベントには存在しません。Claude Code v2.1.181 以降が必要です。
SDKLocalCommandOutputMessage
ローカルスラッシュコマンド(例:/voice または /usage)からの出力。トランスクリプトでアシスタント形式のテキストとして表示されます。
SDKCommandsChangedMessage
利用可能なコマンドのセットがセッション中に変更されたときに発行されます。例えば、エージェントがサブディレクトリに入るときにスキルが検出されるなど。commands 配列は完全に更新されたリストであるため、キャッシュされたコマンドリストをこのペイロードで置き換えてください。supportedCommands() を再度呼び出すことは同等ではありません。そのメソッドは初期化時にキャプチャされたスナップショットを返し、セッション中の変更を反映しません。
SDKPromptSuggestionMessage
promptSuggestions が有効な場合、各ターン後に発行されます。予測される次のユーザープロンプトを含みます。
SDKConversationResetMessage
セッションの会話がセッションを終了せずに置き換えられたときに発行されます。例えば、/clear の後、プランモード終了時、または新しい会話が開始されるときなど。new_conversation_id の下に空のトランスクリプトをマウントし、キャッシュされたセッションタイトルを破棄してください。
SDKConversationResetMessage を宣言しています。v2.1.203 より前では、SDKMessage は型を宣言せずに参照していたため、skipLibCheck が無効な場合、type === "conversation_reset" での絞り込みは型チェックに失敗しました。
AbortError
中止操作のカスタムエラークラス。
サンドボックス設定
SandboxSettings
サンドボックス動作の設定。これを使用して、コマンドサンドボックスを有効にし、ネットワーク制限をプログラムで設定します。
サンドボックスはプラットフォームサポートに依存し、Linux では
bubblewrap や socat などのツールが必要です。enabled が true でサンドボックスが起動できない場合、query() は subtype: "error_during_execution" の result メッセージを報告し、理由を errors に含めます。単一メッセージの query() 呼び出しの場合、SDK はそのエラー結果を生成した後にスローするため、ループを try ブロックでラップして、それを超えて続行してください。エラーコントラクトについては 結果を処理する を参照してください。代わりにサンドボックス外で実行するには、failIfUnavailable: false を設定してください。使用例
SandboxNetworkConfig
サンドボックスモードのネットワーク固有の設定。これらの設定は、親の SandboxSettings で enabled が true の場合、サンドボックス化された Bash コマンドに適用されます。WebFetch ツールには適用されず、代わりに パーミッションルール を使用します。
組み込みサンドボックスプロキシは、リクエストされたホスト名に基づいて
allowedDomains を強制し、TLS トラフィックを終了または検査しないため、ドメインフロンティング などの技術がそれをバイパスする可能性があります。詳細は サンドボックスセキュリティの制限 を参照し、TLS 終了プロキシの設定については セキュアなデプロイ を参照してください。SandboxFilesystemConfig
サンドボックスモードのファイルシステム固有の設定。
サンドボックス外コマンドのパーミッションフォールバック
allowUnsandboxedCommands が有効な場合、モデルはツール入力で dangerouslyDisableSandbox: true を設定することで、サンドボックス外でコマンドを実行するようにリクエストできます。これらのリクエストは既存のパーミッションシステムにフォールバックします。つまり、canUseTool ハンドラーが呼び出され、カスタム認可ロジックを実装できます。下の例では、isCommandAuthorized は定義する認可チェックの代わりです。
excludedCommands vs allowUnsandboxedCommands:excludedCommands:常にサンドボックスを自動的にバイパスするコマンドの静的リスト(例:['docker'])。モデルはこれを制御できません。allowUnsandboxedCommands:モデルがツール入力でdangerouslyDisableSandbox: trueを設定することで、実行時にサンドボックス外実行をリクエストすることを許可します。
- モデルリクエストを監査: モデルがサンドボックス外実行をリクエストしたときにログします
- 許可リストを実装: 特定のコマンドのみがサンドボックス外で実行されることを許可します
- 承認ワークフローを追加: 特権操作に明示的な認可を要求します
関連項目
- SDK 概要 - 一般的な SDK 概念
- Python SDK リファレンス - Python SDK ドキュメント
- CLI リファレンス - コマンドラインインターフェース
- 一般的なワークフロー - ステップバイステップガイド