メインコンテンツへスキップ

インストール

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_MSrun_in_background で起動されたサブエージェントの停止ウォッチドッグ。デフォルト 600000。各ストリームイベントでリセットされます。停止時にサブエージェントを中止し、タスクを失敗とマークし、部分的な結果を含むエラーを親に表示します。同期サブエージェントには適用されません。
  • CLAUDE_ENABLE_STREAM_WATCHDOGCLAUDE_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() と同じように動作します。 ミッドセッションで効果を発揮するキーのみ:
  • 次のターンで適用されるmodeleffortLevelultracodepermissionshooksskillOverridesfastModeagentagent を切り替えると、そのエージェントのモデルオーバーライド、フック、システムプロンプトも次のターンで適用されます。
  • ミッドセッションで効果なし:システムプロンプトオプション。これらはスタートアップ時に 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() を呼び出すと、スタートアップレイテンシーなしで準備ができているプロセスにプロンプトを直接書き込みます。

メソッド

WarmQueryAsyncDisposable を実装しているため、自動クリーンアップのために await using で使用できます。

SDKControlInitializeResponse

initializationResult() の戻り値の型。セッション初期化データを含みます。
クライアントが既に実行中のセッションに initialize を送信する場合、コントロールレスポンスラッパーは、オプションの pending_permission_requests 配列も含みます。フィールドはレスポンスラッパー自体にあり、上記の SDKControlInitializeResponse ペイロードにはありません。各エントリは、セッションが実行中にストリーミングする権限リクエストと同じ { type: "control_request", request_id, request } 形状を持つ完全な control_request メッセージです。 これらは、クライアントが接続する前に発行され、まだ返信を待っているリクエストです。SDK はこの配列を読み取り、各エントリを canUseTool コールバックにディスパッチします。これは、トランスポートギャップ後に reinitialize() がトリガーする再配信と同じです。繰り返されたリクエスト ID をべき等に処理してください。接続が切断される前にコールバックが既に受け取ったリクエストを繰り返すエントリが存在する可能性があるためです。

SDKControlInterruptResponse

中断レシート:interrupt()SDKSystemMessage.capabilitiesinterrupt_receipt_v1 機能をアドバタイズする CLI で解決する値。Claude Code v2.1.205 以降が必要です。以前の CLI は中断に空の成功ペイロードで応答するため、interrupt()undefined で解決します。
still_queued は中断を生き残るユーザーメッセージの UUID をリストします:キューに残っているメッセージ、および次のターンのためにすでにデキューされたが、まだ中止によって到達できないバッチ。各メッセージは、中断後に独自のターンとして実行されます。最初にキャンセルしない限り。レシートを使用して、何かを再送信するかどうかを決定します。既にリストされているメッセージを再送信すると、重複したターンが生成されます。 これらの注意事項でリストを解釈します:
  • UUID が付いてエンキューされたメッセージのみが表示されます。空の配列は、他に何も実行されないことを意味しません。
  • メインスレッドメッセージのみがリストされます。サブエージェントにアドレス指定されたメッセージはスコープ外です。
  • リストには、クライアントが送信しなかった UUID(スケジュール済みタスク トリガーなど)が含まれる場合があります。認識しない UUID は、エラーとして扱う代わりに無視してください。
レシートは中断が処理される瞬間に取得されたスナップショットであり、クリーンな中断では、中断されたターンの SDKResultMessage の前に到着します。その結果の後にキューを検査するのではなく、レシートを読んでください。ループは次のキューに入れられたターンをすぐに開始するため、結果の後に検査するキューは既に変更されています。

AgentDefinition

プログラムで定義されたサブエージェントの設定。

AgentMcpServerSpec

サブエージェントで利用可能な MCP サーバーを指定します。サーバー名(親の mcpServers 設定からサーバーを参照する文字列)またはインラインサーバー設定レコード(サーバー名を設定にマッピング)です。
ここで McpServerConfigForProcessTransportMcpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig です。

SettingSource

SDK がどのファイルシステムベースの設定ソースから設定をロードするかを制御します。

デフォルト動作

settingSources が省略または undefined の場合、query() は Claude Code CLI と同じファイルシステム設定をロードします:ユーザー、プロジェクト、ローカル。エンドポイント管理ポリシー はすべての場合にロードされます。サーバー管理設定は、適格な設定 で組織認証情報を使用してセッションが認証されるときにフェッチされます。このオプションに関係なく読み取られる入力については Claude Code 機能を使用 を参照してください。

settingSources を使用する理由

ファイルシステム設定を無効にする:
すべてのファイルシステム設定を明示的にロードする:
特定の設定ソースのみをロードする:
テストと CI 環境:
SDK のみのアプリケーション:
CLAUDE.md プロジェクト指示をロードする:

設定の優先順位

複数のソースがロードされる場合、設定はこの優先順位(高から低)でマージされます:
  1. ローカル設定(.claude/settings.local.json
  2. プロジェクト設定(.claude/settings.json
  3. ユーザー設定(~/.claude/settings.json
agentsallowedTools などのプログラム的なオプションは、ユーザー、プロジェクト、ローカルのファイルシステム設定をオーバーライドします。管理ポリシー設定はプログラム的なオプションより優先されます。

PermissionMode

CanUseTool

ツール使用を制御するためのカスタム権限関数型。 関数は、インタラクティブな権限プロンプトの SDK 置き換えです。権限評価フロー がプロンプトに解決される場合にのみ呼び出されます。allowedTools エントリ、設定許可ルール、または acceptEditsbypassPermissions などの権限モードによって既に承認されたツール呼び出しは、それを呼び出しません。AskUserQuestionrequiresUserInteraction とマークされた 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 です。idcontentmodelstop_reasonusage などのフィールドを含みます。 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

ユーザー入力メッセージ。
shouldQueryfalse に設定して、アシスタントターンをトリガーせずにメッセージをトランスクリプトに追加します。メッセージは保持され、ターンをトリガーする次のユーザーメッセージにマージされます。これを使用して、バンド外で実行したコマンドの出力など、モデル呼び出しを費やさずにコンテキストを注入します。 tool_result ブロックを持つメッセージでは、tool_use_result はモデルに送信されたテキストではなく、ツールの構造化出力オブジェクトです。その形状は、対応する tool_use ブロックで指定されたツールに依存するため、フィールドは unknown として型付けされます。組み込みの形状は ツール出力型 の下にリストされています。 Agent ツールの場合、tool_use_resultAgentOutput です。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 が合成フォローアップターンを注入する場合、結果の SDKResultMessageorigin: { kind: "task-notification" } を持ちます。このフィールドをチェックして、プロンプトに答える結果とバックグラウンドタスクのフォローアップで発行される結果を区別し、後者をルーティングまたは抑制できます。このフィールドは、スタートアップエラーなど、ユーザーターンの前に発行される結果には存在しません。 PreToolUse フックが permissionDecision: "defer" を返すと、結果は stop_reason: "tool_deferred" を持ち、deferred_tool_use は保留中のツールの idnameinput を保持します。このフィールドを読んで、独自の 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 アプリケーションは最初のターンの前にマーケットプレイスプラグインのインストールを追跡できます。startedcompleted ステータスは全体的なインストールをブラケットします。installedfailed ステータスは個別のマーケットプレイスをレポートし、name を含みます。

SDKPermissionDeniedMessage

権限システムがインタラクティブプロンプトなしでツール呼び出しを自動的に拒否するときに発行されるストリームイベント。これを使用して、その後に続く is_error ツール結果のみを観察するのではなく、拒否を UI にリアルタイムでレンダリングします。インタラクティブな質問パスは、canUseTool コールバックを通じてアプリケーションに別途到達します。PreToolUse フックによって発行された拒否は、このイベントを通じてレポートされません。 このイベントには Claude Code v2.1.136 以降が必要です。

SDKPermissionDenial

拒否されたツール使用に関する情報。

SDKMessageOrigin

ユーザーロールメッセージの出所。これは SDKUserMessageorigin として表示され、対応する 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
オプションのタイムアウトとバックグラウンド実行を備えた永続的なシェルセッションで bash コマンドを実行します。

Monitor

ツール名: Monitor
バックグラウンドソースを実行し、各イベントを Claude に配信するため、ポーリングなしで反応できます。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
テキスト、画像、PDF、Jupyter ノートブックを含むローカルファイルシステムからファイルを読み取ります。PDF ページ範囲には pages を使用します(例:"1-5")。

Write

ツール名: Write
ローカルファイルシステムにファイルを書き込み、存在する場合は上書きします。

Glob

ツール名: Glob
任意のコードベースサイズで機能する高速ファイルパターンマッチング。

Grep

ツール名: Grep
ripgrep に基づいた正規表現サポート付きの強力な検索ツール。

TaskStop

ツール名: TaskStop
ID でバックグラウンドタスクまたはシェルを停止します。v2.1.198 以降、task_id はエージェントチームのチームメイト、またはエージェント ID または名前で名前付きバックグラウンドエージェントも受け入れます。

NotebookEdit

ツール名: NotebookEdit
Jupyter ノートブックファイルのセルを編集します。

WebFetch

ツール名: WebFetch
URL からコンテンツを取得し、AI モデルで処理します。

WebSearch

ツール名: WebSearch
ウェブを検索し、フォーマットされた結果を返します。

Workflow

ツール名: Workflow
動的ワークフロー を実行します。これは多くのサブエージェントをバックグラウンドで調整し、1 つの統合結果を返すスクリプトです。Workflow ツールは Agent SDK v0.3.149 以降で利用可能です。scriptname、または scriptPath の少なくとも 1 つが必要です。

TodoWrite

ツール名: TodoWrite
進捗を追跡するための構造化タスクリストを作成および管理します。
TypeScript Agent SDK 0.3.142 以降、TodoWrite はデフォルトで無効になっています。代わりに TaskCreateTaskGetTaskUpdate、および TaskList を使用してください。監視コードを更新するには、Task ツールへの移行 を参照するか、CLAUDE_CODE_ENABLE_TASKS=0 を設定して TodoWrite に戻してください。

TaskCreate

ツール名: TaskCreate
単一のタスクを作成し、割り当てられた ID を返します。

TaskUpdate

ツール名: TaskUpdate
ID でタスクを 1 つパッチします。status"deleted" に設定して削除します。

TaskGet

ツール名: TaskGet
1 つのタスクの完全な詳細を返すか、ID が見つからない場合は null を返します。

TaskList

ツール名: TaskList
現在のリストのすべてのタスクのスナップショットを返します。

ExitPlanMode

ツール名: ExitPlanMode
計画モードを終了します。allowedPrompts フィールドは非推奨で無視されます。Claude Code は既存の呼び出し元とトランスクリプトが検証されるようにそれでも受け入れます。v2.1.205 より前は、計画を実装するためのプロンプトベースの Bash パーミッションをリクエストしていました。

ListMcpResources

ツール名: ListMcpResourcesTool
接続されたサーバーから利用可能な MCP リソースをリストします。

ReadMcpResource

ツール名: ReadMcpResourceTool
サーバーから特定の MCP リソースを読み取ります。

EnterWorktree

ツール名: EnterWorktree
分離された作業用の一時的な git worktree を作成して入力します。新しい worktree を作成する代わりに、現在のリポジトリの既存の worktree に切り替えるには path を渡します。最初の入力時、ターゲットは現在のリポジトリの登録済み worktree、またはマルチリポジトリワークスペースの場合はその中にネストされたリポジトリの worktree である必要があります。worktree セッション内からは、セッションのリポジトリの .claude/worktrees/ の下にある必要があります。namepath は相互に排他的です。

ツール出力型

すべての組み込み 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 より前では、公開された型はより狭いものでした。worktreePathworktreeBranchcitationstoolStats.frameCount、および inference_geospeediterations 使用フィールドを省略し、service_tier"standard" | "priority" | "batch" として型付けしていました。型がオプションとしてマークするフィールドは、以前のバージョンで記録された結果に存在しない場合があります。

AskUserQuestion

ツール名: AskUserQuestion
質問とユーザーの回答を返します。response はユーザーが構造化された質問に答える代わりに自由形式の返信を入力した場合に設定されます。存在する場合、Claude は質問ごとの回答リストの代わりに「ユーザーが応答しました:…」を受け取ります。

Bash

ツール名: Bash
stdout/stderr が分割されたコマンド出力を返します。バックグラウンドコマンドには backgroundTaskId が含まれます。

Monitor

ツール名: Monitor
実行中のモニターのバックグラウンドタスク ID を返します。この ID を TaskStop で使用して、ウォッチを早期にキャンセルします。

Edit

ツール名: Edit
編集操作の構造化された diff を返します。

Read

ツール名: Read
ファイルタイプに適切な形式でファイルコンテンツを返します。type フィールドで判別されます。

Write

ツール名: Write
構造化された diff 情報を含む書き込み結果を返します。

Glob

ツール名: Glob
glob パターンに一致するファイルパスを返します。変更時刻でソートされます。

Grep

ツール名: Grep
検索結果を返します。形状は mode によって異なります:ファイルリスト、マッチを含むコンテンツ、またはマッチ数。

TaskStop

ツール名: TaskStop
バックグラウンドタスクを停止した後の確認を返します。

NotebookEdit

ツール名: NotebookEdit
元のファイルと更新されたファイルコンテンツを含むノートブック編集の結果を返します。

WebFetch

ツール名: WebFetch
HTTP ステータスとメタデータを含む取得されたコンテンツを返します。

WebSearch

ツール名: WebSearch
ウェブからの検索結果を返します。

Workflow

ツール名: Workflow
ツールが呼び出しを受け入れた直後に返します。最終的な結果は後でタスク完了として到着します。実行が開始されたと見なす前に error を確認してください:構文チェックに失敗したスクリプトは status: "async_launched"error セットで返され、実行されません。

TodoWrite

ツール名: TodoWrite
前のタスクリストと更新されたタスクリストを返します。
TypeScript Agent SDK 0.3.142 以降、TodoWrite はデフォルトで無効になっています。代わりに TaskCreateTaskGetTaskUpdate、および TaskList を使用してください。タスクツールへの移行を参照して、監視コードを更新するか、CLAUDE_CODE_ENABLE_TASKS=0 を設定して TodoWrite に戻してください。

TaskCreate

ツール名: TaskCreate
割り当てられた ID を持つ作成されたタスクを返します。

TaskUpdate

ツール名: TaskUpdate
更新結果を返します。どのフィールドが変更されたかを含みます。

TaskGet

ツール名: TaskGet
完全なタスクレコードを返します。ID が見つからない場合は null を返します。

TaskList

ツール名: TaskList
現在のリスト内のすべてのタスクのスナップショットを返します。

ExitPlanMode

ツール名: ExitPlanMode
計画モード終了後の計画状態を返します。

ListMcpResources

ツール名: ListMcpResourcesTool
利用可能な MCP リソースの配列を返します。

ReadMcpResource

ツール名: ReadMcpResourceTool
要求された MCP リソースのコンテンツを返します。

EnterWorktree

ツール名: EnterWorktree
git worktree に関する情報を返します。

パーミッション型

PermissionUpdate

パーミッション更新の操作。

PermissionBehavior

PermissionUpdateDestination

PermissionRuleValue

その他の型

ApiKeySource

SdkBeta

betas オプション経由で有効にできる利用可能なベータ機能。詳細は ベータヘッダー を参照してください。
context-1m-2025-08-07 ベータは 2026 年 4 月 30 日時点で廃止されました。Claude Sonnet 4.5 または Sonnet 4 でこの値を渡すと効果がなく、標準 200k トークンコンテキストウィンドウを超えるリクエストはエラーを返します。1M トークンコンテキストウィンドウを使用するには、Claude Sonnet 5、Claude Sonnet 4.6、Claude Opus 4.6、Claude Opus 4.7、または Claude Opus 4.8 に移行してください。これらには、ベータヘッダーなしで標準価格で 1M コンテキストが含まれます。

SlashCommand

利用可能なスラッシュコマンドに関する情報。

ModelInfo

利用可能なモデルに関する情報。

AgentInfo

Agent ツール経由で呼び出すことができる利用可能なサブエージェントに関する情報。

McpServerStatus

接続された MCP サーバーのステータス。

McpServerStatusConfig

mcpServerStatus() によってレポートされた MCP サーバーの設定。これはすべての MCP サーバートランスポートタイプの共用体です。
各トランスポートタイプの詳細については、McpServerConfig を参照してください。

AccountInfo

認証されたユーザーのアカウント情報。

ModelUsage

結果メッセージで返されるモデルごとの使用統計。costUSD 値はクライアント側の推定です。請求に関する注意事項については、コストと使用状況を追跡 を参照してください。

ConfigScope

NonNullableUsage

すべての nullable フィールドが non-nullable になった Usage のバージョン。

Usage

トークン使用統計。これは @anthropic-ai/sdkBetaUsage 型です。
BetaServerToolUsageBetaIterationsUsage@anthropic-ai/sdk で定義されています。

CallToolResult

MCP ツール結果型(@modelcontextprotocol/sdk/types.js から)。structuredContentcontent と一緒に返すことができる 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 の下に空のトランスクリプトをマウントし、キャッシュされたセッションタイトルを破棄してください。
SDK の公開された型定義は Claude Code v2.1.203 以降で SDKConversationResetMessage を宣言しています。v2.1.203 より前では、SDKMessage は型を宣言せずに参照していたため、skipLibCheck が無効な場合、type === "conversation_reset" での絞り込みは型チェックに失敗しました。

AbortError

中止操作のカスタムエラークラス。

サンドボックス設定

SandboxSettings

サンドボックス動作の設定。これを使用して、コマンドサンドボックスを有効にし、ネットワーク制限をプログラムで設定します。
サンドボックスはプラットフォームサポートに依存し、Linux では bubblewrapsocat などのツールが必要です。enabledtrue でサンドボックスが起動できない場合、query()subtype: "error_during_execution"result メッセージを報告し、理由を errors に含めます。単一メッセージの query() 呼び出しの場合、SDK はそのエラー結果を生成した後にスローするため、ループを try ブロックでラップして、それを超えて続行してください。エラーコントラクトについては 結果を処理する を参照してください。代わりにサンドボックス外で実行するには、failIfUnavailable: false を設定してください。

使用例

Unix ソケットセキュリティ: allowUnixSockets オプションは強力なシステムサービスへのアクセスを許可できます。例えば、/var/run/docker.sock を許可すると、Docker API 経由でホストシステムへの完全なアクセスが効果的に許可され、サンドボックス分離がバイパスされます。厳密に必要な Unix ソケットのみを許可し、各ソケットのセキュリティへの影響を理解してください。

SandboxNetworkConfig

サンドボックスモードのネットワーク固有の設定。これらの設定は、親の SandboxSettingsenabledtrue の場合、サンドボックス化された Bash コマンドに適用されます。WebFetch ツールには適用されず、代わりに パーミッションルール を使用します。
組み込みサンドボックスプロキシは、リクエストされたホスト名に基づいて allowedDomains を強制し、TLS トラフィックを終了または検査しないため、ドメインフロンティング などの技術がそれをバイパスする可能性があります。詳細は サンドボックスセキュリティの制限 を参照し、TLS 終了プロキシの設定については セキュアなデプロイ を参照してください。

SandboxFilesystemConfig

サンドボックスモードのファイルシステム固有の設定。

サンドボックス外コマンドのパーミッションフォールバック

allowUnsandboxedCommands が有効な場合、モデルはツール入力で dangerouslyDisableSandbox: true を設定することで、サンドボックス外でコマンドを実行するようにリクエストできます。これらのリクエストは既存のパーミッションシステムにフォールバックします。つまり、canUseTool ハンドラーが呼び出され、カスタム認可ロジックを実装できます。下の例では、isCommandAuthorized は定義する認可チェックの代わりです。
excludedCommands vs allowUnsandboxedCommands
  • excludedCommands:常にサンドボックスを自動的にバイパスするコマンドの静的リスト(例:['docker'])。モデルはこれを制御できません。
  • allowUnsandboxedCommands:モデルがツール入力で dangerouslyDisableSandbox: true を設定することで、実行時にサンドボックス外実行をリクエストすることを許可します。
このパターンにより、以下が可能になります:
  • モデルリクエストを監査: モデルがサンドボックス外実行をリクエストしたときにログします
  • 許可リストを実装: 特定のコマンドのみがサンドボックス外で実行されることを許可します
  • 承認ワークフローを追加: 特権操作に明示的な認可を要求します
dangerouslyDisableSandbox: true で実行されるコマンドはシステムへの完全なアクセスを持ちます。canUseTool ハンドラーがこれらのリクエストを慎重に検証することを確認してください。permissionModebypassPermissions に設定され、allowUnsandboxedCommands が有効な場合、モデルは承認プロンプトなしにサンドボックス外でコマンドを自律的に実行できます(明示的な ask ルール はそれでも強制します)。この組み合わせにより、モデルはサンドボックス分離を静かにエスケープできます。

関連項目