インストール
SDK は、
@anthropic-ai/claude-agent-sdk-darwin-arm64 などのオプション依存関係として、プラットフォーム用のネイティブ Claude Code バイナリをバンドルしています。ほとんどのインストールでは Claude Code を別途インストールする必要はありません。SDK バージョンはバンドルされた Claude Code バージョンを追跡します。SDK v0.3.191 は Claude Code v2.1.191 をバンドルしているため、このページの Claude Code バージョンが必要な機能には、同じパッチ番号以降の SDK リリースが必要です。パッケージマネージャーがオプション依存関係をスキップする場合、SDK は Native CLI binary for <platform>-<arch> not found をスローします。代わりに、別途インストールされた claude バイナリに pathToClaudeCodeExecutable を設定してください。パッケージマネージャーが npm の libc フィールドを適用しない場合(Yarn 1.x のように)、Linux では glibc と musl プラットフォームパッケージの両方が取得され、インストールサイズがおよそ 2 倍になります。Agent SDK v0.2.141 以降では、SDK は正しいバリアントを起動します。コンテナイメージ内のスペースを回復するには、アプリが実行される libc と一致しないプラットフォームパッケージを削除します。glibc ランタイムで x64 の場合、rm -rf node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl です。開発マシンでは、Yarn が次の依存関係の変更時にパッケージを再インストールするため、削除は一時的です。単一の実行可能ファイルにコンパイルする
bun build --compile を使用してアプリケーションを単一ファイルの実行可能ファイルにコンパイルする場合、SDK は実行時にバンドルされた CLI バイナリを解決できません。require.resolve はコンパイルされた実行可能ファイルの $bunfs 仮想ファイルシステム内では機能しないため、SDK は Native CLI binary for <platform>-<arch> 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。
Agent SDK をバンドルする場合は /core エントリをインポートする
アプリケーションが Agent SDK を独自の依存関係と一緒にバンドルする場合、パッケージルートではなく @anthropic-ai/claude-agent-sdk/core からインポートしてください。/core エントリには TypeScript Agent SDK v0.3.282 以降が必要であり、そのタイプには TypeScript 5.0 以降が必要です。
/core エントリは、ルートエントリと同じ query()、startup()、tool()、createSdkMcpServer()、resolveSettings() をエクスポートします。セッションの名前変更、タグ付け、削除を行う関数、AbortError、ランタイム定数、およびすべてのタイプも含まれます。独自の名前は追加されません。アプリケーションが読み込むコードを小さく保つために、/core はいくつかのルートエクスポートを除外しています。これには prewarm()、InMemorySessionStore クラス、およびセッションをリスト、読み取り、フォーク、インポート、要約するヘルパーが含まれます。これらのいずれかが必要な場合は、代わりにルートエントリを使用してください。
ルートエントリは zod と @modelcontextprotocol/sdk の独自のコピーをインライン化します。/core エントリは、Agent SDK の peerDependencies が宣言する範囲で、node_modules からそれらをインポートします。そのため、既にそれらを含むバンドルは 2 番目のコピーを持ちません。特定のプロセスでルートまたは /core のいずれかからインポートしてください。両方からインポートしないでください。これらは別のバンドルであり、両方を読み込むと Agent SDK のクラスと状態の 2 つのコピーが得られます。
関数
query()
Claude Code と相互作用するための主要な関数です。メッセージが到着するにつれてストリーミングする非同期ジェネレータを作成します。
パラメータ
戻り値
Query オブジェクトを返します。このオブジェクトは AsyncGenerator<SDKMessage, void> を拡張し、追加のメソッドを備えています。
startup()
CLI サブプロセスをプリウォーミングします。プロセスを生成し、プロンプトが利用可能になる前に初期化ハンドシェイクを完了します。返された WarmQuery ハンドルは後でプロンプトを受け入れ、既に準備ができているプロセスに書き込むため、最初の query() 呼び出しはサブプロセスの生成と初期化のコストをインラインで支払うことなく解決します。セッションの作業ディレクトリがまだわからない場合は、代わりに prewarm() を使用してください。
パラメータ
戻り値
サブプロセスが生成され、初期化ハンドシェイクを完了したら解決するPromise<WarmQuery> を返します。
例
startup() を早期に呼び出します。たとえば、アプリケーション起動時に呼び出し、プロンプトが準備できたら返されたハンドルで .query() を呼び出します。これにより、サブプロセスの生成と初期化がクリティカルパスから外れます。
prewarm()
アルファ版。 どのセッションに対応するかわかる前に Claude Code プロセスをスペアとして開始します。後で claim() を使用してセッションにバインドできます。ユーザーがフォルダを選択する前に起動するアプリケーションで使用します。TypeScript Agent SDK v0.3.282 以降が必要です。
prewarm() は startup() と同じ初期化ハンドシェイクを完了します。options.cwd を設定した場合はそのディレクトリで、それ以外の場合は Claude Code 設定ディレクトリ下のプライベート一時ディレクトリでプロセスが待機します。セッションの作業ディレクトリ、その SessionStart フック、その stdio MCP サーバー、その CLAUDE.md と git コンテキストはクレームを待ちます。スペアは待機中に約 230 ~ 260 MB のメモリを保持します。spawnClaudeCodeProcess が別のマシンまたはコンテナで Claude Code を実行する場合は、options.cwd をそこに存在するディレクトリに設定して、スペアが待機するようにしてください。
options と initializeTimeoutMs は startup() と同じ意味ですが、options.cwd はスペアが待機するディレクトリのみを設定します。プロミスは、プロセスが初期化ハンドシェイクを完了したら SpareProcess で解決します。prewarm() は options が resume、continue、または forkSession を設定する場合にスローします。スペアにはセッションがないためです。クレームが設定できないもの(mcpServers、hooks、canUseTool、settingSources、systemPrompt、plugins など)はスペアの存続期間中固定されるため、それらのオプションの異なるセットごとに 1 つのスペアを保持し、変更時に再度プリウォーミングしてください。
例
アプリケーション起動時にプリウォーミングし、ユーザーがセッションを開始したときにスペアをクレームします。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 を渡してタグをクリアします。繰り返し呼び出しは安全です。最新のタグが優先されます。
パラメータ
forkSession()
セッションのトランスクリプトを新しいセッションにコピーし、元のセッションを変更しないまま会話を別の方向に進められるようにします。会話の以前の時点から分岐するには、upToMessageId を渡します。
パラメータ
新しいセッションの UUID である
{ sessionId } を返します。フォークを続行するには、これを resume として渡します。フォークには元のセッションの ファイルチェックポイント が含まれないため、フォーク前に取得したチェックポイントまで巻き戻すことはできません。
forkSession() は次の場合にスローします。
sessionIdが UUID ではない- セッションが見つからない、またはメッセージがない
upToMessageIdがトランスクリプト内のどのメッセージとも一致しない
resolveSettings()
Claude CLI を生成せずに、CLI と同じマージエンジンを使用して、指定されたディレクトリの有効な Claude Code 設定を解決します。query() 呼び出しがどのような設定を参照するかを、実際に呼び出す前に検査するために使用します。
この関数はアルファ版であり、安定化前に API が変更される可能性があります。
query() セッションが適用するものと異なります。
policyHelper:resolveSettings()は MDM ソース(macOS plist と Windows HKLM/HKCU を含む)を読み取りますが、管理者が設定したpolicyHelperサブプロセスを実行しません。- サーバー管理設定:
resolveSettings()は サーバー管理設定 をフェッチしません。それらを含めるにはoptions.serverManagedSettingsとして渡してください。 defaultMode:スナップショットはpermissions.defaultModeをすべてのティアからそのまま返すため、プロジェクトおよびローカル設定からの'auto'および'bypassPermissions'値を含めることができます。これは ライブセッションが無視する ものです。
パラメータ
resolveSettings() は単一のオプションオブジェクトを受け入れます。すべてのフィールドはオプションです。
戻り値の型:ResolvedSettings
resolveSettings() はマージされた設定と各キーに寄与したソースを説明するオブジェクトを返します。
例
以下の例は、プロジェクトディレクトリの設定を解決し、クリーンアップ期間を制御するソースを出力します。設定ファイルがcleanupPeriodDays を設定しないマシンでは、両方の出力行は値に対して undefined を表示します。これはエラーではなく、予想される出力です。
型
Options
query() 関数の設定オブジェクトです。
遅いまたは停止した API レスポンスを処理する
CLI サブプロセスは、API のタイムアウトと停止検出を制御するいくつかの環境変数を読み取ります。これらはenv オプションで渡します:
-
API_TIMEOUT_MS: Anthropic クライアントのリクエストごとのタイムアウト(ミリ秒)。デフォルトは600000です。メインループとすべてのサブエージェントに適用されます。 -
CLAUDE_CODE_MAX_RETRIES: API の最大再試行回数。デフォルトは10で、上限は15です。再試行ごとに独自のAPI_TIMEOUT_MSの時間枠が与えられます。 より長い障害の間も待機し続ける必要がある無人実行では、CLAUDE_CODE_RETRY_WATCHDOG=1を設定します。これにより一時的な容量エラーは無期限に再試行され、Claude Code v2.1.199 以降では、その他の一時的なエラーのデフォルトが300に引き上げられ、この変数の上限も撤廃されます。 -
CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: サブエージェントの停止ウォッチドッグ。ストリームウォッチドッグがオンの間、デフォルトはCLAUDE_STREAM_IDLE_TIMEOUT_MSに 5 分を加えた値で、その変数を引き上げない限り600000になります。ストリームウォッチドッグがオフの場合、デフォルトは600000です。v2.1.257 より前は、デフォルトは常に600000でした。 タイマーはストリームイベントごとにリセットされます。停止すると、Claude Code はサブエージェントを中止し、停止を親に報告します。バックグラウンドサブエージェントの場合は、タスクを失敗としてマークし、部分的な結果があれば添付します。 -
CLAUDE_ENABLE_STREAM_WATCHDOGとCLAUDE_STREAM_IDLE_TIMEOUT_MS: ヘッダーは到着したもののレスポンス本文のストリーミングが停止した場合にリクエストを中止するストリームウォッチドッグ。ウォッチドッグはすべてのプロバイダーでデフォルトでオンになっています。無効にするにはCLAUDE_ENABLE_STREAM_WATCHDOG=0を設定します。CLAUDE_STREAM_IDLE_TIMEOUT_MSのデフォルトは300000で、この値が最小値として適用されます。中止後に Claude Code が行う処理については、レスポンスがどこまで進んでいたかに応じて自動再試行で説明しています。ANTHROPIC_BASE_URLの背後にあるゲートウェイがキープアライブ ping で開いたままにしているレスポンスをウォッチドッグが待機している間、includePartialMessagesを設定したホストはpingストリームイベントを受信し続けます。そのため、無音を理由にセッションをタイムアウトさせるのではなく、これらのフレームを生存確認として扱ってください。v2.1.257 より前は、最後の実際のストリームイベントから 5 分後にフレームが停止していました。
Query オブジェクト
query() 関数が返すインターフェースです。
メソッド
applyFlagSettings()
クエリを再起動せずに、実行中のセッションの設定を変更します。エージェントが信頼できない入力を読み取った後に permissions を厳しくする場合など、専用のセッターがない設定をセッション中に変更する必要があるときに使用します。setModel() と setPermissionMode() はこれら 2 つのキー専用のセッターです。applyFlagSettings() は設定キーの任意のサブセットを受け付ける汎用の形式であり、ここで model を渡すと setModel() と同じ動作になります。
セッション中に有効になるのは一部のキーのみです:
- 次のターンで適用:
effortLevel、ultracode、permissions、hooks、skillOverrides、fastMode、agent。agentを切り替えると、そのエージェントのモデルの上書きとフックも次のターンで適用されます。そのシステムプロンプトは次のターンで適用されるか、記録されたシステムプロンプトを再利用するセッションでは、セッションが圧縮された時点で適用されます。 - 現在のターン中に適用:
model。Claude がターンの処理中にmodelを切り替えた場合、Claude がすでに生成中の応答は古いモデルで完了し、Claude Code が次にモデルを呼び出す時点からのターンの残りでは新しいモデルが使用されます。サブエージェントは独自のモデルを維持します。v2.1.212 より前は、ターン中の切り替えは次のターンまで待機していました。 - セッション中は効果なし: システムプロンプトのオプション。これらは起動時に一度だけ解決されるため、呼び出しが成功しても、実行中のセッションは元の値を保持します。変更するには、新しいセッションを開始してください。
effortLevel は effort レベルの名前を受け付けます。また "ultracode" も受け付け、これは ultracode をオンにした状態で xhigh effort を要求します。applyFlagSettings() は effortLevel をこの値なしで宣言しているため、TypeScript で同じ結果を得るには { ultracode: true, effortLevel: "xhigh" } を渡すか、セッションの現在の effort レベルのまま ultracode をオンにするには ultracode キーのみを渡します。ultracode 値には Claude Code v2.1.203 以降が必要で、applyFlagSettings() でのみ受け付けられ、設定ファイルの effortLevel キーでは受け付けられません。v2.1.284 より前は、ultracode キーのみを指定した場合もレベルが xhigh に設定されていました。
値はフラグ設定レイヤーに書き込まれ、query() のインライン settings オプションが起動時に設定した内容の上にマージされます。これは、このページの優先順位セクションでプログラムによるオプションと呼ばれている階層と同じです。
連続した呼び出しでは、トップレベルのキーがシャローマージされます。{ permissions: {...} } を指定した 2 回目の呼び出しは、前の呼び出しの permissions オブジェクトにディープマージするのではなく、オブジェクト全体を置き換えます。
applyFlagSettings() で設定したキーをクリアするには、そのキーに null を渡します。ほとんどのキーはその後、まず query() の settings オプションが起動時に設定した値にフォールバックし、次に優先順位の低いソースにフォールバックします。クリアされた model は、設定ファイルで model が設定されていても、Claude Code のデフォルトモデルにリセットされます。undefined を渡しても、JSON シリアライズで削除されるため効果はありません。
model 以外に、フォールバックせずにセッションの状態をリセットするキーが 3 つあります:
effortLevel: nullは、query()のeffortオプションや設定ファイルのeffortLevelではなく、モデルのデフォルトの effort レベルにセッションを戻します。agent: nullは、query()のagentオプションや設定ファイルのagentを復元するのではなく、次のターンからエージェントなしでメインスレッドを実行します。クリアされたエージェントが独自のモデルを適用していた場合、セッションは起動時に解決したモデルに戻ります。ultracode: nullは、設定ファイルのultracode値を復元するのではなく、falseと同様に ultracode をオフにします。セッションは現在の effort レベルを維持するため、変更するには同じ呼び出しでeffortLevelを渡してください。
setModel() や setPermissionMode() と同じ制約で、ストリーミング入力モードでのみ利用可能です。
以下の例では、セッション中にアクティブなモデルを切り替え、その後上書きをクリアしてモデルを Claude Code のデフォルトモデルにリセットします。
applyFlagSettings() は TypeScript 専用です。Python SDK には同等のメソッドはありません。updateSettings()
許可リストに含まれる 1 つのキーをディスク上の設定ファイルに書き込み、そのソースを読み込む以降のセッションでも値が保持されるようにします。各ソースは、文字列値を持つ 1 つのキーを受け付けます:
"localSettings":outputStyleを受け付け、プロジェクトのローカル設定ファイル.claude/settings.local.jsonにマージします。新しいスタイルはセッションの次のリクエストから有効になります。"userSettings":effortLevelを受け付け、セッションの現在のモデルのデフォルトの effort レベルとして、ユーザー設定ファイルのmodelSettingsに保存します。maxはセッション限定のため、maxを渡しても何も書き込まれません。いずれの場合も実行中のセッションは現在の effort レベルを維持するため、それも変更したい場合はapplyFlagSettings()を呼び出してください。このソースには TypeScript SDK v0.3.277 以降(Claude Code v2.1.277 をバンドル)が必要です。
settingSources が指定したソースを除外している場合、呼び出しは拒否されます。キーの削除はサポートされていません。
toggleMcpServer()
サーバーを無効にすると、そのサーバーは切断され、ツールがセッションから削除されます。セッション中に追加したサーバーとインプロセスサーバーについては、この動作は Claude Code のバージョンによって異なります:
- セッション中に
setMcpServers()で追加した stdio、SSE、HTTP サーバー: ツールの削除には Claude Code v2.1.285 以降が必要です。 createSdkMcpServer()で作成したインプロセスサーバー(mcpServersで渡したかsetMcpServers()で渡したかを問いません): 切断とツールの削除には Claude Code v2.1.286 以降が必要です。無効にすると、まだ実行中のツール呼び出しも失敗するため、Claude はハンドラーが戻るのを待たずに、それぞれについて即座にエラー結果を受け取ります。
WarmQuery
startup() が返すハンドルです。サブプロセスはすでに生成・初期化されているため、このハンドルで query() を呼び出すと、起動の遅延なしに準備済みのプロセスへプロンプトが直接書き込まれます。
メソッド
WarmQuery は AsyncDisposable を実装しているため、自動クリーンアップのために await using と一緒に使用できます。
SpareProcess
アルファ版。 prewarm() が返すハンドルです。まだセッションにバインドされておらず、1 回だけ claim できる起動済みの Claude Code プロセスを表します。TypeScript Agent SDK v0.3.282 以降が必要です。
メンバー
options.cwd は必須です。claim では、additionalDirectories、model、permissionMode、maxThinkingTokens、settings 内のフラグ設定オーバーレイ、appendSystemPrompt、title、agents、および env 内のセッションごとのトークンも設定できます。
Claude Code は、存在しないフォルダーや、プロジェクト設定で env、agent、model を設定しているフォルダーなどに対して claim を拒否することがあります。拒否された後、claim() がすでに送信したプロンプトは not_claimed で始まるテキストのエラー結果を受け取り、返されたクエリはその後例外をスローします。スローされた後も処理を続けるには、クエリのループを try ブロックで囲んでください。claimed が option_not_applied で始まるメッセージで拒否された場合、セッションは要求した model または maxThinkingTokens なしで実行されています。それ以外の拒否の後はプロンプトは実行されていないため、代わりに query() でセッションを開始してください。
SDKControlInitializeResponse
initializationResult() の戻り値の型です。セッションの初期化データを含みます。
hooks_applied は、initialize リクエストに含まれていた hooks を Claude Code が登録したかどうかを報告します。SDK はこのリクエストをセッション開始時に 1 回送信し、reinitialize() を呼び出すたびに再度送信します。このフィールドには Agent SDK v0.3.238 以降が必要です。
リクエストにフックが含まれていない場合、Claude Code はこのフィールドを省略します。リクエストにフックが含まれていた場合、値はそのリクエストがセッションの最初の initialize かどうか、また繰り返しの initialize の場合はセッションへの到達経路によって異なります:
true: Claude Code がフックを登録しました。セッションの最初の initialize はこの値を返します。CLI の stdin 経由で送信された繰り返しの initialize もtrueを返します。その場合、新しいリクエストのフックが以前に登録されたフックを置き換えます。false: Claude Code はフックを無視しました。リモートセッションに送信された繰り返しの initialize はこの値を返します。そのため、セッションに参加した 2 番目のクライアントが、最初のクライアントが登録したフックを置き換えることはできません。
hooks を無視していました。
リクエストの sdkMcpServerManifests フィールドとレスポンスの sdk_mcp_manifests_parked フィールドは、createSdkMcpServer() で作成したインプロセスの SDK MCP サーバー用です。アプリケーションがどちらのフィールドを設定したり読み取ったりすることはありません。
claude_code_version は、セッションのターンを実行するプロセスの Claude Code のバージョンです。これは SDKSystemMessage の init メッセージに含まれる値と同じであるため、最初のターンの前に CLI のバージョンを読み取ることができます。
- このフィールドには Agent SDK v0.3.296 以降が必要です。このバージョンには Claude Code v2.1.296 がバンドルされています。
- フィールドが
undefinedで、pathToClaudeCodeExecutableを設定している場合は、Claude Code v2.1.296 以降を指すようにしてください。
fast_mode_state を報告し、何かが fast mode をブロックしている場合は fast_mode_disabled_reason がそれと併せて理由コードを伝えるため、利用可能性を再導出する代わりに、ブロックされた状態を説明できます。どちらの動作にも Claude Code v2.1.219 以降が必要です。v2.1.219 より前は、fast mode が利用できない場合にレスポンスは fast_mode_state を省略し、理由が含まれることはありませんでした。理由コードとその意味については、結果メッセージの fast_mode_disabled_reason を参照してください。
成功した initialize の制御レスポンスのラッパーには、pending_permission_requests 配列も含まれます。このフィールドはレスポンスのラッパー自体にあり、上記の SDKControlInitializeResponse ペイロード内にはありません。各エントリは完全な control_request メッセージで、実行中にセッションが権限リクエストのためにストリーミングするのと同じ { type: "control_request", request_id, request } の形状をしています。
この配列には、この Claude Code プロセスが発行してまだ解決されていない権限リクエストが列挙されます。SDK はこの配列を自動的に読み取り、各エントリを canUseTool コールバックにディスパッチします。これは、トランスポートが途切れた後に reinitialize() がトリガーするのと同じ再配信です。エントリは接続が切れる前にコールバックがすでに受け取ったリクエストを繰り返す可能性があるため、繰り返されるリクエスト ID は冪等に処理してください。
この配列は成功した initialize レスポンスに常に存在し、このプロセスに未解決の権限リクエストがない場合は空になります。Claude Code v2.1.268 以降が必要です。それより前のバージョンではこのフィールドが省略される可能性があるため、ワイヤプロトコルを自分で解析する場合は、フィールドがないことを保留中のものがない証拠としてではなく、古い CLI であることを示すものとして扱ってください。
SDKControlInterruptResponse
割り込みの受領確認です。SDKSystemMessage.capabilities で interrupt_receipt_v1 機能をアドバタイズしている CLI で、interrupt() が解決する値です。Claude Code v2.1.205 以降が必要です。それより前の CLI は空の成功ペイロードで割り込みに応答するため、interrupt() は undefined に解決されます。
still_queued には、割り込みが到着した時点で保留中だったユーザーメッセージの UUID が列挙されます。これには、まだキューにあるメッセージと、Claude Code が次のターンのためにすでにキューから取り出したメッセージが含まれます。セッションの最初のターンが開始された後は、先にキャンセルしない限り、Claude Code は割り込みの後に列挙されたメッセージを処理し、複数のメッセージを 1 つのターンにまとめることがあります。最初のターンの開始前に割り込んだ場合、Claude Code はそのターンが開始されるとすぐに中止し、そのターンに含まれる列挙されたメッセージには応答がありません。
受領確認を使用して、何かを再送信するかどうかを判断してください。キャンセルしなかった列挙メッセージは、応答の有無にかかわらず会話に入るため、再送信すると Claude に 2 回配信されます。
リストは以下の注意点を踏まえて解釈してください:
- UUID 付きでキューに追加されたメッセージのみが表示されます。空の配列は、他に何も実行されないことを意味するわけではありません。
- メインスレッドのメッセージのみが列挙されます。サブエージェント宛てのメッセージは対象外です。
- リストには、スケジュールタスクのトリガーなど、クライアントが送信していない UUID が含まれることがあります。認識できない UUID はエラーとして扱わずに無視してください。
interrupt() を介さずに CLI の制御プロトコルを直接操作するクライアントは、interrupt 制御リクエストに cancel_queued: true を設定できます。Claude Code v2.1.219 以降は、SDKSystemMessage.capabilities の interrupt_cancel_queued_v1 機能でサポートをアドバタイズします。古い CLI はこのフィールドを無視し、キュー内のメッセージを通常どおり実行します。このような割り込みは、本来 still_queued に列挙されるすべてのメッセージもキャンセルします。受領確認ではそれらが代わりに cancelled に列挙され、still_queued は空になり、いずれも実行されません。
cancelled リストには still_queued と同じ注意点があります。interrupt() メソッドは cancel_queued を送信しないため、このメソッドが解決する受領確認には cancelled が含まれません。
受領確認は割り込みが処理された時点のスナップショットであり、正常な割り込みでは、割り込まれたターンの SDKResultMessage より前に到着します。その結果の後にキューを調べるのではなく、受領確認を読み取ってください。ループは次のキュー内のターンをすぐに開始するため、結果の後に調べるキューはすでに変化しています。
SDKControlGetContextUsageResponse
getContextUsage() の戻り値の型です。デフォルトの detail では、インタラクティブセッションで Claude Code が /context コマンドに対してレンダリングするのと同じペイロードであり、トークン数とともに、Claude Code が /context の使用量グリッドを描画するために使用する color や gridRows などの表示用フィールドも含まれます。
メソッドのオプションの detail 引数で、Claude Code が各カテゴリをどのようにカウントするかを選択します。detail 引数には Agent SDK v0.3.257 以降が必要です。
'full': デフォルトです。Claude Code はトークンカウント API リクエストで各カテゴリをカウントします。これらのリクエストはメッセージストリームに表示されないため、ストリームを読み取るコスト追跡では検出されません。Anthropic API では、トークンカウントは課金されません。'summary':{ detail: 'summary' }を渡すと、代わりに最後のレスポンスの使用量とローカルの見積もりから結果を得られます。トークンカウントリクエストは送信されず、カテゴリごとの数値は概算になります。
/context をプロンプトとして送信すると、Claude Code は結果を配信するアシスタントメッセージの context_usage フィールドに SDKContextUsage ペイロードを添付します。このフィールドには Agent SDK v0.3.232 以降が必要です。
categoriesにはカテゴリごとの合計が格納されます。各エントリのkindは、SDKContextUsageCategoryと同じ値で行を分類します。表示用のnameではなく、このフィールドで行を分類してください。このフィールドには Agent SDK v0.3.268 以降が必要です。mcpToolsとagentsは、トークンを個々の MCP ツールとサブエージェントに割り当てます。memoryFilesは、読み込まれた各メモリファイルとそのコストを列挙します。skills.skillFrontmatterは、スキル一覧のトークンを、含まれている各スキルに割り当てます。スキルごとの数は、Claude Code が実際に送信する各スキルの一覧エントリを測定したもので、スキルの完全なフロントマターより短い場合があります。検出されたすべてのスキルが一覧に含まれたかどうかを確認するには、skills.totalSkillsとskills.includedSkillsを比較してください。
totalTokens はセッションの現在のコンテキスト使用量で、maxTokens はその使用量の測定基準となるウィンドウです。このウィンドウは、モデルのコンテキストウィンドウ、または適用される場合はそれより小さい自動圧縮ウィンドウです。rawMaxTokens は maxTokens と同じ値を持ち、percentage はそのウィンドウに対する totalTokens の割合を四捨五入したパーセンテージです。apiUsage には、セッションの累計ではなく、最新の API レスポンスの使用量が格納されます。
Claude Code はオプションの deferredBuiltinTools、systemTools、systemPromptSections の診断情報を設定しないため、型で宣言されていても存在しないものと想定してください。
SDKControlReadFileResponse
readFile() の戻り値の型です。
contents にはファイルのテキスト、または encoding: 'base64' を要求した場合は base64 データが格納されます。その場合、レスポンスの encoding フィールドは 'base64' に設定されます。absPath は解決された絶対パスです。truncated は、ファイルが maxBytes の上限より長く、内容がその上限で切り詰められた場合に設定されます。
readFile() で読み取れるもの
readFile() が提供するファイルの範囲は、Read ツールより狭くなっています:
cwdやadditionalDirectoriesなど、セッションの作業ディレクトリのいずれかにある通常のファイル- ツールの結果など、セッション用の Claude Code 自身のファイルの一部
Read の拒否ルールと確認ルールは引き続き一致するパスをブロックし、広範な Read 許可ルールを設定しても、ファイルシステムの残りの部分が readFile() に開放されることはありません。それ以外のものについては、呼び出しは null で解決されます。
SDKControlReloadPluginsResponse
reloadPlugins() の戻り値の型です。
commands、agents、mcpServers: セッションのコマンド、サブエージェント、MCP サーバーのステータスで、supportedCommands()、supportedAgents()、mcpServerStatus()が返すのと同じ形状です。supportedAgents()は初期化時に取得したリストを返し続けるため、再読み込み後のセットについてはここのagentsを読み取ってくださいplugins: 読み込まれた各プラグインと、そのnameおよびインストール先のpath。versionはプラグインのマニフェストが宣言する内容をそのまま示すもので、プラグインの作成者が制御するため、信頼する前に検証してください。マニフェストが何も宣言していない場合は省略されますerror_count: プラグインの読み込み時に発生したエラーの数
reloadPlugins() に { holdOnCacheImpact: true } を渡します。Claude Code は、インタラクティブな /reload-plugins コマンドがキャッシュのコストについて警告する前に行うのと同じチェックを実行します。このオプションには Agent SDK v0.3.268 以降が必要です。pathToClaudeCodeExecutable で指定したものなど、v2.1.268 より古い Claude Code 実行ファイルは、このオプションを無視して再読み込みを適用します。
このオプションを渡した場合は、held を読み取って何が起きたかを確認します:
true: 再読み込みは適用されず、コレクションフィールドは現在のままのセッションを表します。cache_impactは、適用した場合に何が変わるかを示します。それでも適用するには、オプションなしでreloadPlugins()を再度呼び出します。false: チェックでキャッシュへの影響が見つからず、再読み込みが適用されました。- 存在しない: オプションを渡していないか、Claude Code 実行ファイルが v2.1.268 より古く、再読み込みを適用しました。
cache_impact は held: true と一緒の場合にのみ存在します。mcp_servers_added と mcp_servers_removed は、再読み込みによって登録または削除されるプラグイン MCP サーバーを、スコープ付きの plugin:<plugin>:<server> 名で示します。名前はプラグインの作成者が付けたものなので、表示する前に検証してください。lsp_tool_change は、適用によって LSP ツールが追加されるか削除されるかを示し、どちらも行わない場合は null になります。may- の形式は、チェックが保留中のプラグインセットを完全には把握できなかったことを意味します。
SDKControlReloadSkillsResponse
reloadSkills() の戻り値の型です。
skills は、再読み込み後に利用可能なスキルを、supportedCommands() が返すのと同じ SlashCommand の形状で列挙します。
SDKControlReloadOutputStylesResponse
reloadOutputStyles() の戻り値の型です。
available_output_styles は、再読み込み後に利用可能な組み込みおよびカスタムの出力スタイルの名前を列挙します。
SDKControlMcpReadResourceResponse
readMcpResource() の戻り値の型で、MCP サーバーの resources/read の結果を保持します。TypeScript Agent SDK v0.3.280 以降が必要です。
readMcpResource() には、mcpServerStatus() が報告するサーバー名と、ツールが _meta で宣言する ui.resourceUri などの ui:// URI を渡します。その他の URI スキーム、アプリケーション自身がホストする SDK MCP サーバー、および接続されていないサーバーに対しては、呼び出しは拒否されます。init メッセージの capabilities に mcp_read_resource_v1 が含まれている場合に利用できます。
各 contents エントリは、サーバーが送信したとおりのコンテンツ項目 1 つであり、Claude Code 用に予約されている com.anthropic/ プレフィックス配下の _meta キーは除かれます。blob にはバイナリ項目の base64 データが格納され、_meta は項目自身の _meta で、MCP Apps サーバーはここにリソースの ui.csp と ui.permissions を配置します。
内容は信頼できないサードパーティの HTML であるため、サンドボックス内でレンダリングしてください。
AgentDefinition
プログラムで定義されたサブエージェントの設定です。
AgentMcpServerSpec
サブエージェントで利用可能な MCP サーバーを指定します。サーバー名(親の mcpServers 設定内のサーバーを参照する文字列)、またはサーバー名を設定にマッピングするインラインのサーバー設定レコードを指定できます。
McpServerConfigForProcessTransport は McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig です。
SettingSource
SDK がどのファイルシステムベースの設定ソースから設定を読み込むかを制御します。
デフォルトの動作
settingSources が省略されているか undefined の場合、query() は Claude Code CLI と同じファイルシステム設定(user、project、local)を読み込みます。このオプションに関係なく読み込まれる入力とその無効化方法については、settingSources で制御されないものを参照してください。
settingSources を使用する理由
ファイルシステム設定を無効にする:settingSources に "project" を含めてください。CLAUDE.md の読み込みとシステムプロンプトのオプションとの関係については、システムプロンプトの変更を参照してください。
設定の優先順位
複数のソースが読み込まれる場合、設定は次の優先順位(高い順)でマージされます:- ローカル設定(
.claude/settings.local.json) - プロジェクト設定(
.claude/settings.json) - ユーザー設定(
~/.claude/settings.json)
agents、allowedTools、settings などのプログラムによるオプションは、user、project、local のファイルシステム設定を上書きします。管理ポリシー設定は、プログラムによるオプションよりも優先されます。
PermissionMode
CanUseTool
ツールの使用を制御するためのカスタム権限関数の型です。
この関数は、対話型の権限プロンプトに代わる SDK の仕組みです。権限評価フローがプロンプトの表示に至った場合にのみ呼び出されます。allowedTools のエントリ、設定の許可ルール、または acceptEdits や bypassPermissions などの権限モードによってすでに承認されているツール呼び出しでは、この関数は呼び出されません。すべてのツール呼び出しを制御するには、代わりに PreToolUse フックを使用してください。
許可ルールは、どのモードでも自動承認されないアクションを事前承認しません。それらのうちどれがコールバックに到達するか、また dontAsk モードと auto モードで何が起こるかについては、権限の評価方法を参照してください。
コールバックは通常、
PermissionResult を返すことでリクエストを解決し、SDK はそれを control_response としてトランスポート経由で書き戻します。null を返すのは、アプリケーションが requestId を含めて、このリクエストに対する control_response を独自のチャネルですでに送信している場合に限ってください。その場合、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'、'account_on_hold'、'billing_error'、'rate_limit'、'overloaded'、'invalid_request'、'model_not_found'、'server_error'、'max_output_tokens'、'cloud_credential_error'、'unknown' のいずれかです。このうち 4 つの値は、名前から読み取れる以上の意味を持ちます。
'model_not_found': 選択したモデルが存在しないか、アカウントまたはデプロイで利用できない'overloaded': サーバーが容量の上限に達しているため API が 529 を返した。これに対して'rate_limit'は、クォータに対する 429 を意味する'account_on_hold': アカウントが保留中になっている'cloud_credential_error': Claude Code が実行中のマシン上で使用可能な AWS または Google Cloud の認証情報を取得できなかったため、クラウドプロバイダーにリクエストが届かなかった。通常の原因は、そのマシン上でのクラウドへのサインインが期限切れになったか、完了していないことですが、認証情報サービスに一時的に到達できない場合も同じ値が報告されます。Could not load AWS or Google Cloud credentials を参照してください。Claude Code v2.1.267 を同梱する TypeScript Agent SDK v0.3.267 以降が必要です
aborted は、ストリームが完了する前に中断または中止によってアシスタントメッセージが切り詰められた場合に true になります。このときメッセージには stop_reason がなく、内容が単語の途中で終わっている可能性があります。正常に完了したメッセージにはこのフィールドはありません。Agent SDK v0.3.214 以降が必要です。
agent_id はメッセージを生成したサブエージェントを識別し、メインスレッドのメッセージには存在しません。値は、そのサブエージェントの task_started およびその他のタスクイベントの task_id と同じで、サブエージェントが再開されても変わりません。このフィールドには Agent SDK v0.3.292 以降が必要です。
サブエージェントのメッセージをタスクイベントと対応付けるには、メッセージの parent_tool_use_id とタスクイベントの tool_use_id を組み合わせるのではなく、agent_id で照合してください。ツール呼び出しがサブエージェントを再開すると、タスクイベントにはその呼び出しの tool_use_id が含まれますが、メッセージはサブエージェントを最初に開始したツール呼び出しの parent_tool_use_id を保持するため、両者は一致しなくなります。
Claude Code は、user_message_uuid に記載された条件のもとで、ターンの最初のアシスタントメッセージに user_message_uuid と user_message_uuids を設定します。再起動によって中断されたターンを継続するターンでは、これらのフィールドを持つアシスタントメッセージに resume_reason も設定されます。
timestamp は、メッセージを生成したプロセス上でそのメッセージの内容の生成が完了した時刻を ISO 8601 形式で表します。値はそのマシンの時計に基づくため、表示目的にのみ使用し、メッセージの並べ替えには使用しないでください。1 回の API ターンで、同じ message.id を共有する複数のアシスタントメッセージが生成されることがあり、それぞれが独自の timestamp を持ちます。このフィールドがない場合は、メッセージを受信した時刻で代用してください。
context_usage は /context レポートの構造化されたコピーで、型は SDKContextUsage です。Agent SDK v0.3.232 以降が必要です。/context をプロンプトとして送信すると、Claude Code は message.content に markdown の表を含むアシスタントメッセージとしてレポートを返し、同じメッセージに context_usage を付加します。Claude Code はこれ以外のアシスタントメッセージにはこのフィールドを設定せず、以前のバージョンではこのフィールドなしで /context の表が返されます。そのため、フィールドが存在する場合はそこから内訳を読み取り、存在しない場合は markdown テキストにフォールバックしてください。
usage_report は /usage レポートの構造化されたコピーで、型は SDKUsageReport です。Agent SDK v0.3.273 以降が必要です。/usage をプロンプトとして送信すると、Claude Code は message.content にテキストを含むアシスタントメッセージとしてレポートを配信します。セッションが次の条件をすべて満たす場合にのみ、同じメッセージに usage_report を付加します。
- セッションが claude.ai の認証情報で認証している
- 認証情報が既知のプランタイプを示しているか、
user:profileスコープを持っている - アカウントが従量課金制ではない
CLAUDE_CODE_OAUTH_TOKEN として渡された claude setup-token トークンは user:inference スコープしか持たないため、デフォルトでは条件を満たしません。API キーセッションなどその他のセッションでは、フィールドなしでテキストが配信され、以前のバージョンでも同様です。フィールドが存在する場合はそこからレポートを読み取り、存在しない場合はテキストにフォールバックしてください。
SDKUserMessage
ユーザー入力メッセージです。
pasted_content を設定します。貼り付け 1 回につき 1 エントリで、各エントリは文字列またはコンテンツブロックの配列です。Claude Code は各エントリのテキストを入力テキストの後に順番に追加し、各貼り付けを <pasted_content> タグで囲むことがあります。テキスト以外のブロックは無視されるため、画像やドキュメントは message.content で送信してください。Agent SDK v0.3.277 以降が必要です。
message.content のどの部分をユーザーが入力したのではなく貼り付けたのかを Claude Code に伝えるには、inline_pastes を設定します。貼り付け 1 回につき 1 つの文字列を指定します。プロンプトのテキストはユーザーが置いた位置のままです。Claude Code は、Claude が貼り付けられた内容とユーザー自身の言葉を区別できるよう、リストに含まれる各貼り付けをその位置で <pasted_content> タグで囲むことがあります。囲まれるのは、プロンプトの最後のテキストブロック内の貼り付けのみです。TypeScript Agent SDK v0.3.280 以降が必要です。
各貼り付けフィールドにはサイズ制限があります。
pasted_content: エントリとその中のコンテンツブロックの合計が 1,000 を超える場合、Claude Code はフィールド全体を無視します。inline_pastes: Claude Code は空白でない最初の 100 エントリを使用し、残りは無視します。
shouldQuery、client_composed、または priority を設定すると、送信したメッセージを Claude Code がどのように扱うかを変更できます。
shouldQuery:falseに設定すると、アシスタントのターンを開始せずにメッセージをトランスクリプトに追加します。メッセージは保持され、ターンを開始する次のユーザーメッセージにマージされます。帯域外で実行したコマンドの出力などのコンテキストを、モデル呼び出しを消費せずに注入するために使用します。client_composed:trueに設定すると、Claude Code はメッセージのテキストを書かれたとおりに渡します。この場合、Claude Code は@pathや@server:resourceのメンションを展開せず、/で始まるテキストをコマンドとして実行しません。verbatimPromptsオプションが有効な間は、SDK がすべてのメッセージにこのフィールドを設定します。TypeScript Agent SDK v0.3.280 以降および Claude Code v2.1.248 以降が必要です。priority: 実行中のターンの間に送信したメッセージが Claude に届くタイミングを制御します。'next'、またはpriorityフィールドなし: Claude は実行中のツール呼び出しが完了するとすぐに、同じターン内でメッセージを読み取ります。先にターンが終了した場合は、そのメッセージが次のターンを開始します。'later': Claude Code はターンが終了するまでメッセージを保持し、新しいターンとして送信します。origin: { kind: "human" }を伴う'now': Claude Code v2.1.286 以降では、バックグラウンドで継続できる作業はバックグラウンドに移され、Claude は同じターン内でメッセージを読み取ります。移動できる作業には、シェルコマンド、サブエージェント、MCP ツール呼び出しが含まれます。v2.1.287 以降では、WebFetch と WebSearch の呼び出しも含まれます。Claude が応答を書いているだけの場合や、実行中の作業を移動できない場合は、代わりに Claude Code がターンを中断し、Claude は次にメッセージを読み取ります。- その origin を伴わない
'now': Claude Code がターンを中断し、Claude は次にメッセージを読み取ります。
tool_result など)には agent_id が含まれます。このフィールドとそのバージョン要件を定義している SDKAssistantMessage を参照してください。
tool_result ブロックを含むメッセージでは、tool_use_result はモデルに送信されるテキストではなく、ツールの構造化された出力オブジェクトです。その形状は対応する tool_use ブロックで指定されたツールによって異なるため、このフィールドの型は unknown です。組み込みの形状は ツール出力タイプ に記載されています。次の結果には、記載された形状以上の処理が必要です。
Agentツール:tool_use_resultはAgentOutputです。tool_resultのテキストを解析するのではなく、これを元に表示してください。completedの結果のcontentにはサブエージェントのレポートが含まれます。ただし、レポートをSubagentHandbackツール呼び出しで渡すサブエージェントの場合は、レポートの代わりにその引き渡しに関する短い注記が含まれます。Claude Code v2.1.271 以降の auto モードでは、completedの結果を生成するすべてのサブエージェントは、フォークでない限りこの方法でレポートし、Claude はレポートをサブエージェントからの別のメッセージとして受け取ります。'now'メッセージを届けるために Claude Code がバックグラウンドに移した WebFetch または WebSearch の呼び出し: その呼び出しのtool_resultを含むユーザーメッセージでは、tool_use_resultが{ detachedToolCall: true }に設定されます。呼び出しはまだ実行中で、完了すると Claude はその結果を受け取ります。そのtool_use_idに対する 2 つ目のtool_resultは続かないため、アプリケーションでツール呼び出しごとに行を描画している場合は、このメッセージを受信した時点でその行をバックグラウンドに移動済みとしてマークしてください。Claude Code v2.1.287 以降が必要です。- 結果に
resource_linkブロックを含む MCP ツール:tool_use_resultは、SDKMcpResourceLinkエントリのresourceLinks配列を持つオブジェクトです。Claude は各リンクをtool_resultブロック内の 1 行のテキストとして受け取るため、そのテキストを解析するのではなくresourceLinksを読み取ってサーバーが返したファイルを表示してください。Claude Code は、結果にリンクがない場合およびサブエージェントからの結果ではresourceLinksを省略し、1 つの結果につき最大 50 個のリンクを保持し、配列がシリアル化された JSON で 64 KiB に達するとリンクの追加を停止します。resourceLinksには Agent SDK v0.3.257 以降が必要です。 structuredContentを返す MCP ツール:tool_use_resultは、structuredContentメンバーにサーバーが送信したものを、contentメンバーにMcpOutputの値を保持するオブジェクトです。サブエージェントからの結果にはstructuredContentは含まれません。structuredContentをシリアル化すると 1,048,576 文字を超える JSON になる MCP ツール:Claude Code はtool_use_resultからstructuredContentを除外し、代わりにstructuredContentOmitted: trueを設定するため、アプリケーションはオブジェクトが削除された場合とツールが何も送信しなかった場合を区別できます。contentやresourceLinksなどの他のメンバーは残り、Claude が受け取る内容は変わりません。この上限は Claude Code v2.1.287 以降で適用されます。次の 2 種類のツールは扱いが異なります。- インプロセス SDK サーバーのツールは対象外で、オブジェクト全体を配信します。
tools/listエントリで MCP Apps のui://リソースを宣言するツールの上限は、Claude Code v2.1.295 以降では 8,388,608 文字で、v2.1.295 より前のバージョンでは対象外です。
SDKUserMessageReplay
必須の UUID を持つ再生されたユーザーメッセージです。
origin の kind が peer または channel のものは、アクティブなターン中に配信された場合でも、セッションがアイドル状態のときに新しいターンを開始した場合でも、再生としてストリームに届きます。v2.1.207 より前は、セッションがアイドル状態のときに配信された注入ターンはストリームにメッセージを生成せず、トランスクリプトを読み直したときにのみ表示されていました。
SDKResultMessage
最終結果メッセージです。
subtype 以上の診断情報を提供します。
api_error_status: 会話を終了させた API エラーの HTTP ステータスコード。ターンが API エラーなしで終了した場合は、存在しないかnullです。ttft_ms: 最初のトークンまでの時間(ミリ秒)で、最初の完全なアシスタントメッセージが到着した時点で測定されます。success アームにのみ存在します。ttft_stream_ms: 応答ストリームが開いたときの最初のmessage_startストリームイベントまでの時間(ミリ秒)。ttft_msより小さく、両者の差は最初のメッセージのストリーミングに費やされた時間です。success アームにのみ存在します。user_message_uuid: このターンが応答した、送信済みメッセージのuuid。どの結果がこれを持つかについてはuser_message_uuidを参照してください。user_message_uuids: このターンで Claude Code が応答した、送信済みのすべてのメッセージのuuid。user_message_uuidsを参照してください。resume_reason: このターンが再起動によって中断されたターンを継続する理由です。両方のアームに存在します。resume_reasonを参照してください。local_command:/compactなど、エージェントループに入らずにコマンドが完了したターンの success 結果における、そのターンがディスパッチしたコマンドの名前。名前は小文字とアンダースコアに変換されるため、/reload-pluginsはreload_pluginsと報告されます。MCP サーバーが提供するコマンドと組み込みの/mcpはmcpと報告されます。自分で定義したコマンドはcustomと報告されます。引数は含まれません。エージェントループに入ったすべてのターンと、コマンドを実行しなかった送信には存在しません。Agent SDK v0.3.268 以降が必要です。request_sent_wall_ms: Claude Code が API リクエストをディスパッチした時刻のエポックミリ秒で、サーバー側のタイムスタンプとの結合に使用します。API リクエストを送信したターンの、is_errorが false である success 結果において、user_message_uuidと一緒にのみ存在します。first_content_frame_ms: 最初のcontent_block_startまたはcontent_block_deltaストリームイベントまでの時間(ミリ秒)で、思考ブロックもコンテンツとして数えます。success アームで、is_errorが false の場合にのみ存在します。Agent SDK v0.3.260 以降が必要です。first_stream_post_ms、first_stream_post_ack_ms、first_stream_post_wall_ms: ターンの最初のストリームイベントのアップロードに関するタイミング。Claude Code は、クラウドセッションなど claude.ai にストリーミングするセッションでのみこれらを記録し、query()が返す結果にはこれらは含まれません。Agent SDK v0.3.260 以降が必要です。usage: メインのエージェントループのみが対象です。サブエージェントや補助的なモデル呼び出しは除外され、ストリーミング入力セッションではターンごとの値になります。トークンやコストの集計にはmodelUsageを優先してください。modelUsage: このquery()呼び出しの間にクエリパイプラインを通じて行われたすべてのモデル呼び出しのモデルごとの合計で、メインループ、サブエージェント、コンテキスト圧縮や Workflow エージェントなどの内部呼び出しを含みます。権限分類器やトークンカウントのリクエストなど、そのパイプライン外のヘルパー呼び出しは除外されます。セッションを再開する呼び出しでは、セッションの以前の呼び出しから復元されたモデルごとの合計も数えられます。ストリーミング入力セッションでは合計がターンをまたいで累積されるため、結果を合算するのではなく最新の結果を読み取ってください。リセットについては Track costs in streaming input mode を、ゼロになった結果については Recover totals after a session crash を参照してください。total_cost_usd: USD での累積推定コストで、modelUsageと同じ呼び出しを対象とし、同じタイミングでリセットされます。セッションを再開する呼び出しでは、セッションの以前の呼び出しから復元された合計も数えられます。これは推定値であり、請求明細ではありません。精度に関する注意事項については コストと使用状況を追跡する を参照してください。queued_turn_count: Claude Code が結果を生成した時点でまだ待機中の、origin: { kind: "human" }を付けて送信したメッセージの数。0やフィールドがない場合の意味についてはqueued_turn_countを参照してください。result_index: 実行の配信順序におけるこの結果の位置で、プロセスが書き込むすべての結果を通して 0 から数えます。両方のアームに存在します。書き込みに失敗した結果もその番号を消費するため、連番に欠番がある場合は結果が失われたことを意味します。Agent SDK v0.3.268 以降が必要です。startup_failure_reason: 既知の起動失敗で終了する前に Claude Code が書き込むerror_during_execution結果における、Claude Code が起動を拒否した理由。値とどの失敗がこれを持つかについてはstartup_failure_reasonを参照してください。Agent SDK v0.3.274 以降が必要です。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"のいずれかです。fast_mode_disabled_reason: fast mode が現在利用できない理由。fast mode を妨げるものがない場合は存在しませんが、リクエストが標準速度で実行されることもあります。fast mode のレート制限後のクールダウン中、Claude Code は理由コードなしでfast_mode_state: "cooldown"を報告し、クールダウンが終了すると fast mode を再び有効にします。Claude Code v2.1.219 以降が必要です。
同じ 2 つのフィールドが
SDKSystemMessage と SDKControlInitializeResponse にも含まれるため、最初のターンの前に fast mode の状態を読み取ることができます。
origin フィールドは、この結果をトリガーしたユーザーメッセージの SDKMessageOrigin を転送します。完了したバックグラウンドタスクに対するものなど、SDK が合成のフォローアップターンを注入した場合、結果の SDKResultMessage には origin: { kind: "task-notification" } が含まれます。トリガーが発火したルーティンや、他のセッションからのサーバー検証済みメッセージもこの kind で届き、それぞれに Task-notification subkinds で説明されている subkind が付きます。ルーティングや抑制を行う前に kind を確認して、プロンプトに応答する結果と注入されたフォローアップを区別してください。アプリケーションがスケジュール実行を宣言する場合、その結果にも kind: "task-notification" が含まれるため、kind だけで抑制しないでください。
複数のバックグラウンドタスクの完了がまとめてキューに入っている場合、Claude Code はそれぞれに 1 ターンずつではなく、1 つのターンでそれらに応答することがあります。各完了はそれでもこの origin を持つ独自の結果を生成します。Claude Code がまとめて応答する完了のうち最後のもの以外は、順番に num_turns: 0 の空の結果を生成し、最後のものの結果に、すべてに応答するターンが含まれます。
起動エラーなど、ユーザーターンの前に出力された結果にはこのフィールドはありません。
PreToolUse フックが permissionDecision: "defer" を返した場合、結果には stop_reason: "tool_deferred" が含まれ、deferred_tool_use には保留中のツールの id、name、input が含まれます。このフィールドを読み取って独自の UI でリクエストを表示し、同じ session_id で再開して続行してください。一連の流れについては Defer a tool call for later を参照してください。
user_message_uuid
ターンが応答している SDKUserMessage の uuid で、Claude Code の応答を送信したメッセージと対応付けられるようにエコーされます。Claude Code が uuid をエコーするのは、メッセージにそれを設定した場合のみです。このフィールドは SDKUserMessage ではオプションであり、query() に渡した文字列プロンプトには含まれません。
ターンがどのメッセージに応答するかは、ターンの開始方法によって異なります。
- 送信した通常のメッセージ(
isSynthetic: trueのないもの): ターンは実行全体を通してそのメッセージに応答します。複数のメッセージを短い間隔で送信すると、Claude Code はそれらを 1 つのターンにマージすることがあり、その場合フィールドには最後のメッセージのuuidのみが含まれます。マージされたいずれかのメッセージに応答を対応付けるには、user_message_uuidsを使用してください。 isSynthetic: trueを付けて送信したメッセージ: ターンは最初はそのメッセージに応答します。Claude Code がツール呼び出しの合間に通常のメッセージを拾った場合、それ以降ターンは拾ったメッセージに応答します。合成メッセージのuuidをエコーするには Agent SDK v0.3.265 以降が必要です。以前のバージョンでは合成ターンで何もエコーされません。CLAUDE_CODE_RESUME_INTERRUPTED_TURNのもとで中断されたターンを継続するために Claude Code が生成するプロンプト: 中断されたターンの最後のプロンプトが送信した通常のメッセージである場合(それがターンを開始したか、ターン中に Claude Code が取り込んだかにかかわらず)、継続されたターンは最初はそのメッセージに応答します。resume_reasonにより、継続されたターンのフレームと中断された試行のフレームを区別できます。最後のプロンプトが通常のメッセージでない場合、継続されたターンは最初はどのメッセージにも応答しません。Claude Code がツール呼び出しの合間に通常のメッセージを取り込んだ場合、以降ターンは取り込まれたメッセージに応答します。中断されたターンのプロンプトのエコーには Agent SDK v0.3.268 以降が必要です。- Claude Code 自身が生成したその他のプロンプト: ターンは最初は送信したどのメッセージにも応答せず、そのフレームにはエコーが含まれません。Claude Code がツール呼び出しの合間に通常のメッセージを拾った場合、それ以降ターンはそのメッセージに応答します。拾った際のエコーには Agent SDK v0.3.265 以降が必要です。以前のバージョンではこれらのターンで何もエコーされません。
uuid を 3 種類のフレームでエコーします。
- 結果: 送信したメッセージに応答したターンのすべての結果。Agent SDK v0.3.265 以降では、そのようなすべての結果にこれが含まれます。v0.3.265 より前は、通常のメッセージで開始されたターンの success 結果で、ターンが API リクエストを送信しなかった場合や遅延されたツール呼び出しで終了した場合に、これが欠けていました。v0.3.246 より前はエラー結果にも欠けており、v0.3.216 より前はすべての結果に欠けていました。
- ターンの最初の応答: 最初のアシスタントメッセージ、および
includePartialMessagesを使用する場合はevent.typeがpingでない最初のストリームイベントにも含まれるため、結果が届く前に応答を対応付けることができます。最初の応答でのエコーには Agent SDK v0.3.246 以降が必要です。v0.3.269 より前は、includePartialMessagesを使用する場合、Claude Code はその最初のストリームイベントにのみ、またはターンが何もストリーミングしなかった場合は最初のアシスタントメッセージにこれを設定していました。Agent SDK v0.3.265 以降では、ターンが応答しているメッセージがターンの途中で変わった場合、変更後の最初の応答にもこのフィールドが含まれます。以前のバージョンでは、ターンごとに 1 つの応答フレームにのみ設定されていました。 - ターンのすべての
thinking_tokensフレーム: ターンの最初の応答を待たずに、思考の進行状況を送信したメッセージに関連付けることができます。Agent SDK v0.3.260 以降が必要です。
- 上記の最初の応答以外の応答フレーム
- サブエージェントのフレーム
- 送信したどのメッセージにも応答しないターン、または
uuidなしで送信したメッセージに応答するターン - クラッシュしたワーカープロセスの後のゼロになった結果など、送信したどのメッセージにも応答しない結果
user_message_uuids
このターンで Claude Code が応答した、送信済みのすべてのメッセージの uuid。複数のメッセージを短い間隔で送信すると、Claude Code はそれらを 1 つのターンにマージすることがあり、その場合 user_message_uuid はそのうち最後のものだけを示します。マージされたいずれかのメッセージに応答を対応付けるには、このリスト内でそのメッセージの uuid を探してください。Agent SDK v0.3.259 以降が必要です。
Claude Code は、user_message_uuid を含む各応答フレームと結果に、そのフィールドと一緒にこのリストを設定します。応答したメッセージの uuid をエコーするターンフレームの全体と、それぞれに必要なバージョンについては、user_message_uuid を参照してください。リストには常に user_message_uuid が含まれ、最大 64 エントリを保持します。
ターンの実行中に送信した通常のメッセージを Claude Code が拾った場合、そのメッセージの uuid が結果のリストに追加されます。
最初の応答または結果に、リストなしで user_message_uuid が含まれている場合、それは以前の Claude Code バージョンからのものなので、単一のフィールドにフォールバックしてください。
resume_reason
このターンが再起動によって中断されたターンを継続する理由です。Claude Code は、CLAUDE_CODE_RESUME_INTERRUPTED_TURN のもとで中断されたターンを継続するターンにこのフィールドを設定するため、継続されたターンの返信と結果を中断された試行のものと区別できます。Agent SDK v0.3.268 以降が必要です。
Claude Code は 2 種類のフレームにこのフィールドを設定します。
- 継続されたターンの結果: success と error の両方のアームで、結果が
user_message_uuidを持つかどうかにかかわらず設定されます。 - 継続されたターンの返信フレーム:
user_message_uuidを持つものです。
interrupted_turn のような短い小文字のトークンです。
queued_turn_count
Claude Code が結果を生成した時点でまだコマンドキューで待機中の、origin: { kind: "human" } を付けて送信したメッセージの数。Agent SDK v0.3.242 以降が必要です。
0 とフィールドがない場合の意味は次のとおりです。
0: Claude Code はそのoriginなしで送信したメッセージやタスク通知を数えないため、それでもターンが続く可能性があります。- 存在しない: クラッシュまたは致命的な起動エラーの後に Claude Code が出力する最終結果ではこのフィールドが省略され、合計がゼロになっている場合があります。
startup_failure_reason
Claude Code が起動を拒否した理由で、アプリケーションが再試行ではなく修正方法を提示できるようにするものです。Claude Code は、既知の起動失敗で終了する前に書き込む error_during_execution 結果にこれを設定します。その結果の合計はゼロで、errors 配列には stderr と同じテキストが含まれます。その他のすべての結果にはこのフィールドはありません。Agent SDK v0.3.274 以降が必要です。
すべての SDKStartupFailureReason 値についてこの結果を受け取るには、env で CLAUDE_CODE_STARTUP_FAILURE_RESULTS を 1 に設定してください。この変数がない場合、Claude Code は次の失敗についてのみ結果を書き込み、それ以外は stderr 出力と非ゼロの終了で終わり、結果メッセージは出力されません。
- セッションを worktree に戻せないために Claude Code が停止する再開(
worktree_unverifiedまたはworktree_resume_refused)。どのエラーがどの値を持つかはそのセクションに記載されています。 - バックグラウンドセッションが保持している会話の
continueが拒否された場合(session_held_by_background)。そのような会話のresumeが拒否された場合は、変数が設定されているときにのみ Claude Code は結果を書き込みます。
SDKSystemMessage
システム初期化メッセージです。
fast_mode_state はセッションの fast mode の状態を報告します。fast mode を妨げるものがある場合、fast_mode_disabled_reason がそれを妨げたチェックを示します。このフィールドには Claude Code v2.1.219 以降が必要です。理由コードとその意味については、結果メッセージの fast_mode_disabled_reason を参照してください。
terminal_slash_commands は、slash_commands のエントリのうち、exit など、インターフェースがローカルターミナルに結び付いているものを示します。これらは slash_commands の他のエントリと同様に送信できます。このフィールドは、リモートクライアントやモバイルクライアントがコマンドメニューからそれらを非表示にできるようにするために存在します。このフィールドは空でない場合にのみ存在し、Agent SDK v0.3.229 以降が必要です。
- 各
mcp_serversエントリのsource: サーバーの定義の取得元で、McpServerStatusのsourceと同じ値を取ります。Agent SDK v0.3.274 以降が必要です。 effort: Claude Code がセッションの次のリクエストで送信する effort レベル、または送信しない場合はnull。Claude Code はこのフィールドを Remote Control クライアントに送信する init メッセージにのみ設定し、アプリケーションが読み取る init メッセージからは省略します。Agent SDK v0.3.234 以降が必要です。
capabilities 配列は、この CLI が実装しているプロトコルの動作を示すため、claude_code_version の文字列を比較する代わりに機能検出を行えます。これはオープンな集合です。認識できない値は無視し、依存する動作に対応する特定の capability があるかを確認してください。このフィールドには Claude Code v2.1.205 以降が必要で、それより前の CLI には存在しません。
plugin_errors 配列は、プラグインの読み込み失敗を列挙します。エントリは、読み込まれず plugins に含まれていないプラグイン、またはフックファイルなどの一部が欠けた状態で読み込まれたプラグインのいずれかを表します。何も失敗しなかった場合、このキーは省略されます。SDKSystemMessage は Agent SDK v0.3.283 以降で plugin_errors を宣言しています。
plugins オプションで指定したディレクトリまたはアーカイブ自体の読み込みに失敗した場合、エントリの plugin フィールドにはプラグイン名の代わりに inline[0] などの位置を示すタグが入ります。これは、たとえばパスが存在しない場合やマニフェストが無効な場合に発生します。そのようなエントリは、path フィールドを使ってオプションと対応付けてください。
次の表は、各 plugin_errors エントリのフィールドを示しています。
SDKPartialAssistantMessage
ストリーミングの部分メッセージです(includePartialMessages が true の場合のみ)。
parent_tool_use_id フィールドは常に null です。ストリームイベントはメインセッションに対してのみ出力されます。サブエージェントへの帰属を判断するには、agent_id と parent_tool_use_id を含む完全なメッセージを使用するか、forwardSubagentText を有効にしてサブエージェントのテキストと思考を完全なメッセージとして受け取ってください。
user_message_uuid に記載された条件のもとで、ターンの最初の ping 以外のストリームイベントと、ターンが応答しているメッセージが変わったときに再度、user_message_uuid と user_message_uuids を設定します。再起動によって中断されたターンを継続するターンでは、これらのフィールドを持つストリームイベントに resume_reason も設定されます。
SDKCompactBoundaryMessage
会話のコンテキスト圧縮の境界を示すメッセージです。
SDKInformationalMessage
ループが出力する汎用のテキストバナーです。Claude Code が発する警告、通知、その他のエラー以外のステータス行、および UserPromptSubmit フックのブロック理由などのフックのフィードバックを伝えます。
Claude Code v2.1.227 以降では、フックの systemMessage がこのメッセージとして届くことがあり、各行には PostToolUse:Bash says: のようにフックの名前が前置されます。出力がどのように表示されるかは、フックのページの各イベントのセクションに記載されています。
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コールバックとデフォルトのpermissionPrompts: 'host'を使用する場合: 権限プロンプトはコールバックに送られ、このイベントは Claude Code がコールバックを呼び出さずに独自に決定した拒否を報告します。- どちらも使用しない場合: 素の
-p実行、またはcanUseToolもpermissionPromptToolNameも設定しないquery()では、PermissionRequestフックが許可しない限り、プロンプトを表示するはずだったツール呼び出しは拒否され、このイベントはそれらの拒否と、Claude Code が独自に決定した拒否を報告します。v2.1.223 より前は、コールバックのない実行では Claude Code はこのイベントを出力しませんでした。 permissionPromptToolNameまたは--permission-prompt-toolフラグで設定した MCP プロンプトツールと、デフォルトのpermissionPrompts: 'host'を使用する場合: Claude Code はこのイベントをまったく出力せず、独自に決定したルールによる拒否についても出力しません。permissionPrompts: 'none'を使用する場合:canUseToolや MCP プロンプトツールも設定されている場合でも、Claude Code はプロンプトを表示するはずだった呼び出しを拒否し、このイベントはそれらの拒否と、Claude Code が独自に決定した拒否を報告します。Claude Code v2.1.259 以降が必要です。
PreToolUse フックのパスで決定された拒否をスキップします。これは、フック自身が呼び出しを拒否した場合も、拒否ルールがフックの allow または ask の決定を上書きした場合も同様です。また、このイベントはベストエフォートです。Claude Code がこのイベントを出力せずに拒否を記録することがまれにあるため、結果メッセージの permission_denials が正式な記録となります。
SDKPermissionDenial
拒否されたツール使用に関する情報です。
SDKContextUsage
/context レポートの構造化された形式で、/context の結果を届ける SDKAssistantMessage に context_usage として含まれます。Agent SDK v0.3.232 以降がこの型をエクスポートします。SDKControlGetContextUsageResponse とは異なり、使用量の内訳を表示するために必要なデータのみを含み、color や gridRows などの表示用フィールドは含みません。Claude Code は、メッセージストリームに現れないトークンカウントの API リクエストを使ってレポートを算出します。これらのリクエストの扱いを参照してください。
model から over_limit までのフィールドはセッション全体を表し、コレクションフィールドは個々の項目にトークンを割り当てます。
over_limit.kind は、API が次のリクエストを受け付けるかどうかではなく、Claude Code がウィンドウをどのように決定したかを記録します。
hard_limit: ウィンドウは、Claude Code がモデル自体の上限だと考えているもので、それを超えると API がリクエストを拒否しますcompaction_window: ウィンドウはコンテキスト圧縮ポリシーのウィンドウで、モデルの上限と一致する場合もしない場合もあります
SDKContextUsageCategory
/context のカテゴリ別使用量の内訳の 1 行です。
各
kind の値は、その行のトークンが何であるかを示します。
used: コンテキストウィンドウを占有しているコンテンツfree: ウィンドウの残りbuffer: コンテキスト圧縮用の予約領域deferred: Claude Code がウィンドウの外に保持し、使用量の計算から除外しているツールスキーマ。参考のために列挙されます
SDKUsageReport
/usage レポートの構造化された形式で、/usage の結果を配信する SDKAssistantMessage に usage_report として含まれます。Agent SDK v0.3.273 以降でこの型がエクスポートされます。この型は実験的なもので、形状が変更される可能性があります。
session と rate_limits です。
session:Claude Code の累積コストと使用量の合計で、SDKResultMessageのtotal_cost_usdおよびmodelUsageと同じ台帳から読み取られます。各model_usageエントリはModelUsageです。rate_limits:limitsにプランの使用量の行、extra_usageに使用クレジットの支出を含みます。セッションの OAuth トークンにuser:profileスコープがない場合など、Claude Code がプランの使用量を取得できなかった場合はnullです。
session.total_cost_usd をトークン数からローカルで計算するため、これは推定値であり、プランで請求される金額ではありません。サーバーが報告する使用クレジットの支出は、別の extra_usage ブロックです。精度に関する注意事項についてはコストと使用量を追跡するを参照してください。
limits には、サーバーが送信したとおりの使用量の行が含まれます。どのメーターが適用されるか、そのスコープ、ラベル、重要度、順序はサーバーが決めるものなので、行はそのままレンダリングしてください。
- 空の配列は、サーバーがメーターを報告しなかったことを意味します。
nullは、Claude Code に報告する行がないことを意味します。
limits の各行は 1 つの使用量メーターを表します。
Agent SDK v0.3.277 より前は、型で
severity と is_active が任意かつ null 許容として宣言されており、行にそれらが含まれない場合がありました。
extra_usage は、サーバーが報告する請求期間の使用クレジットの支出と上限で、プランに使用クレジットがある場合に存在します。金額は currency の補助単位で、USD の場合はセントです。
monthly_limitは、このアカウント自体に支出上限がない場合はnullです。Team プランと Enterprise プランでは、nullを無制限としてレンダリングしないでください。is_enabledは、使用クレジットでリクエストの支払いができない間はfalseです。
SDKMessageOrigin
ユーザーロールのメッセージの出所です。SDKUserMessage に origin として含まれ、対応する SDKResultMessage に転送されるため、特定のターンが何によってトリガーされたかを判別できます。
タスク通知のサブ種別
Claude Code がタスク通知をセッションに配信する際、Anthropic のサーバーがその通知の出所を検証した場合は、通知のorigin に subkind を設定します。アプリケーション自身がメッセージをスケジュール実行として宣言した場合にも subkind を設定し、これには TypeScript Agent SDK v0.3.280 以降が必要です。subkind には Claude Code v2.1.213 以降が必要で、次の 2 つの値のいずれかを取ります。
scheduled-trigger: 通知はルーティンに保存されたプロンプトで、ルーティンのトリガー(スケジュール、API トリガー、GitHub トリガー、または Run now)のいずれかが発火したために配信されたものです。アプリケーションがスケジュール実行として宣言したプロンプトもこの値を持ちます。Claude Code はこれらをセッションに割り当てられたタスクとしてモデルに提示し、他のタスク通知に付く注記とは異なる注記を付けます。peer-send-message: 通知は、クラウドセッション同士がメッセージをやり取りするために使用するサーバー側のsend_messageツールで、別のセッションから送信されたメッセージです(セッション間のSendMessageツールではありません)。Anthropic のサーバーが、両方のセッションが同じプライベートなセッショングループに属していることを検証しています。Claude Code v2.1.224 以降が必要です。サーバーがこの方法で検証しなかったsend_messageの配信には subkind は付きません。
subkind はありません。これには、セッションに配信される PR アクティビティや、完了したタスクなどのバックグラウンドイベントが含まれます。セッション間の SendMessage ツールからのメッセージはそもそもタスク通知ではありません。同じマシン上のセッションからのものでも、別のマシンから Anthropic のサーバーを経由したものでも、Claude Code はそれらに kind: "peer" とピアの origin フィールドを付与します。
fireReason は、scheduled-trigger 通知が発火した理由を、scheduled、manual、retry、catch_up、api などの短い小文字のトークンで示します。Anthropic のサーバーはルーティンの配信にこれを設定し、アプリケーションはスケジュール実行を宣言する際にこれを設定します。どちらも送信しなかった場合は存在しません。TypeScript Agent SDK v0.3.280 以降が必要です。
Claude がサブエージェントを再開する場合など、バックグラウンドタスクは同じ task_id のもとで複数回実行されることがあります。各実行には独自の run_id があります。ある実行の通知がユーザーメッセージとしてセッションに届くと、そのメッセージの task-notification origin の runId に同じ値が入ります。通知はタスクの次の実行が開始された後に届くこともあり、その場合でも以前の実行の ID を持ちます。あるターンがどの実行に属するかを判別するには、task_id ではなく runId を比較してください。TypeScript Agent SDK v0.3.292 以降が必要です。
スケジュール実行を宣言する
アプリケーションが独自のスケジュールでプロンプトを実行する場合は、各実行を宣言してください。そうすることで、Claude Code はターンをユーザーからのライブ入力ではなくスケジュールタスクとしてモデルに提示します。env で CLAUDE_CODE_HOST_SCHEDULED_RUN を 1 に設定してセッションを開始し、実行の SDKUserMessage を origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" } 付きで、isSynthetic なしで送信します。Claude Code は、その変数なしで開始されたプロセスでは宣言を無視します。また、環境に CLAUDECODE または CLAUDE_CODE_CHILD_SESSION が含まれるプロセスでも無視します。Claude Code は、値が 1 ~ 32 文字の小文字またはアンダースコアである場合にのみ fireReason を保持します。TypeScript Agent SDK v0.3.280 以降が必要です。
Peer origin のフィールド
peer origin は、どのエージェントがメッセージを送信したかを識別します。送信元は、SendMessage を使って main に送信するインプロセスのチームメイトか、ユーザー自身の別の Claude Code セッションであるクロスセッションピアのいずれかです。クロスセッションピアには、macOS および Linux で Claude Code v2.1.224 以降が必要です。ネイティブ Windows での要件については、クロスセッションメッセージングの利用条件を参照してください。クロスセッションピアは同じマシン上で実行できるほか、メッセージが Remote Control を介して届く場合は、ユーザーの別のマシン上やクラウドで実行することもできます。2 種類の送信元では、フィールドの設定方法が異なります。
from:チームメイトの名前、またはクロスセッションピアの場合は送信元アドレスです。一方向のクロスマシンメッセージの場合、送信元には返信先アドレスがなく、fromは"unknown"になります。この値は送信元が作成したものであり、検証済みの ID はverifiedPeerPidです。fromMode:送信元セッションの権限クラス(bypassまたはprompting)で、デスクトップアプリなど、ユーザーのセッション間でピアメッセージを中継するホストによって宣言されます。Claude Code は、受信側セッションで受信メッセージの制御を適用する際にこの値を読み取ります。Agent SDK v0.3.234 以降が必要です。senderTaskId:チームメイトのタスク ID です。クロスセッションピアの場合は存在しません。name:Claude Code によって正規化された送信元の表示名です。Unicode の制御文字、書式文字、サロゲート、および行区切り文字や段落区切り文字のコードポイントを除去したうえで、前後の空白を削除し、64 コードポイントを上限として超過分を省略記号で切り詰めます。Claude Code v2.1.205 以降が必要です。body:ピアエンベロープを取り除いてデコードしたメッセージ本文で、モデルが見る内容とバイト単位で一致します。単一のチームメイトメッセージの場合は存在し、複数がマージされた場合は存在しません。クロスセッションピアの場合は、ターンが Claude Code によって形成されたちょうど 1 つのピアエンベロープである場合にのみ存在します。メッセージテキストを再解析するのではなく、nameとbodyを表示してください。v2.1.299 より前は、マージされたメッセージは最初のメッセージのbodyを保持していました。Claude Code v2.1.205 以降が必要です。fromSession:ホストで開くことができる送信元のセッション ID で、UI から送信元セッションへリンクできるように送信元のホストによって設定されます。fromと同様に送信元が主張する値であるため、ナビゲーション先としてのみ使用し、送信元の身元の証明として扱わないでください。Claude Code v2.1.216 以降が必要です。verifiedPeerPid:このセッションのクロスセッションメッセージングソケットに接続したプロセスのプロセス ID です。カーネルによって検証され、ペイロードからではなく常に接続そのものから読み取られます。送信元の識別にはfromではなくこの値を使用してください。fromは同じユーザーの任意のプロセスによって偽装される可能性があります。Windows やソケット以外の経路での受信など、Claude Code が検証できない場合はこのフィールドは存在しないため、値が存在しないことは送信元が未検証であることを意味します。中継されたトラフィックの場合、この値はメッセージの作成者ではなく中継元を識別します。また、プロセス ID は再利用される可能性があるため、認証トークンではなく来歴情報として扱ってください。Claude Code v2.1.216 以降が必要です。
フック型
例や一般的なパターンを含むフックの使用ガイドについては、フックガイド を参照してください。HookEvent
利用可能なフックイベント。
HookCallback
フックコールバック関数型。
HookCallbackMatcher
オプションのマッチャーを含むフック設定。
HookInput
すべてのフック入力型の共用体型。
BaseHookInput
すべてのフック入力型が拡張する基本インターフェース。
prompt_id フィールドは、現在処理中のユーザープロンプトを識別する UUID です。OpenTelemetry イベントの prompt.id 属性 と一致し、最初のユーザー入力まで存在しません。Claude Code v2.1.196 以降が必要です。
PreToolUseHookInput
mcp_server は、ツールが MCP サーバーから来た場合に存在します。McpServerProvenance を参照してください。PostToolUse、PostToolUseFailure、PermissionRequest、および PermissionDenied 入力は同じフィールドを保持します。このフィールドには Agent SDK v0.3.274 以降が必要です。
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
バッチ内のすべてのツール呼び出しが解決された後、次のモデルリクエストの前に 1 回発火します。tool_response はモデルが見るシリアル化された tool_result コンテンツを保持します。形状は PostToolUseHookInput の構造化された Output オブジェクトとは異なります。
PermissionDeniedHookInput
NotificationHookInput
UserPromptSubmitHookInput
UserPromptExpansionHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
StopFailureHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PostCompactHookInput
PreModelSwitchHookInput
リクエストされたモデルスイッチが有効になる前に発火します。context_tokens とそれ以降のフィールドは、新しいモデルに会話を再送信するコストを推定します。完全なフィールド説明とブロッキングセマンティクスについては、PreModelSwitch を参照してください。
PostModelSwitchHookInput
セッションのモデルが変更された後に発火します。PreModelSwitchHookInput と同じフィールドを保持し、2 つの追加の source 値があります。PostModelSwitch を参照してください。
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCreatedHookInput
TaskCompletedHookInput
ElicitationHookInput
ElicitationResultHookInput
ConfigChangeHookInput
InstructionsLoadedHookInput
DirectoryAddedHookInput
directory は追加されたディレクトリの絶対パスです。source は /add-dir で追加された場合は "slash_command" で、SDK 制御リクエストで追加された場合は "register_repo_root" です。
WorktreeCreateHookInput
WorktreeRemoveHookInput
CwdChangedHookInput
FileChangedHookInput
MessageDisplayHookInput
HookJSONOutput
フック戻り値。
AsyncHookJSONOutput
SyncHookJSONOutput
ツール入力型
組み込み Claude Code ツールの入力スキーマのドキュメントです。これらの型は@anthropic-ai/claude-agent-sdk/sdk-tools からエクスポートされ、タイプセーフなツール相互作用に使用できます。
ToolInputSchemas
@anthropic-ai/claude-agent-sdk/sdk-tools からエクスポートされたツール入力型の共用体。メンバーには以下が含まれます:
Agent
ツール名:Agent。以前の名前 Task はまだエイリアスとして受け入れられ、SDKSystemMessage 初期化メッセージの tools 配列は、後方互換性のためこのツールを Task として一覧表示しています。
mode フィールドは Claude Code v2.1.212 以降では非推奨で無視されます。サブエージェントは親セッションの権限モードまたはその定義の permissionMode のいずれかで実行され、サブエージェント継承ルール がどちらであるかを決定します。AskUserQuestion
ツール名:AskUserQuestion
Bash
ツール名:Bash
Monitor
ツール名:Monitor
command はスクリプトを実行し、stdout 行ごとに 1 つのイベントを発行し、ws は WebSocket を開き、テキストフレームごとに 1 つのイベントを発行します。command または ws のいずれか正確に 1 つを指定してください。ws ソースには Claude Code v2.1.195 以降が必要です。
timeout_ms はウォッチの期限(ミリ秒)です。デフォルトは 300000 で、最大 3600000 の値を受け入れます。有効な期限は最大 1800000(30 分)です。より大きい受け入れられた値はその値に短縮されます。期限に達するとウォッチが終了し、Claude は 1 つの通知を受け取るため、必要に応じて新しいウォッチを開始できます。
エクスポートされた型は timeout_ms を必須としてマークしています。スキーマがデフォルトを入力するため、それを省略する呼び出しは検証されます。
Monitor がコマンドを実行する場合、Bash と同じ権限ルールに従います。WebSocket ウォッチは別途承認を求めます。動作とプロバイダーの可用性については、Monitor ツールリファレンス を参照してください。
TaskOutput
Claude Code v2.1.277 で削除されました。そのTaskOutputInput 型と一緒に削除されました。以前は実行中または完了したバックグラウンドタスクから出力を取得していました。Claude はバックグラウンドタスクの出力ファイルを Read で読み取ります。
disallowedTools エントリまたは TaskOutput という名前の拒否ルールは警告なしに無視されます。
Edit
ツール名:Edit
Read
ツール名:Read
- PDF ページ範囲には
pagesを使用します(例:"1-5")。 allow_largeを使用すると、セッションのコンテキストウィンドウに余裕がある場合に、Claude は 通常のサイズ制限 を超えてテキストファイルを読み取れます。Agent SDK v0.3.296 以降が必要で、これには Claude Code v2.1.296 がバンドルされています。
tool_result コンテンツ内のファイルの内容を受け取ります。pdf 出力 を返す読み取りは、サマリー text ブロックの後に document ブロックを含みます。parts 出力を返す読み取りは、サマリー text ブロックの後に抽出されたページごとに 1 つのブロックを含みます。image ブロック、または Claude Code がそれを画像としてレンダリングできなかった場合はページを名前付けする text ブロック。Agent SDK v0.3.242 より前は、Claude Code はファイルの内容をツール結果の後の別の user メッセージとして配信していました。
Write
ツール名:Write
Glob
ツール名:Glob
Grep
ツール名:Grep
TaskStop
ツール名:TaskStop
task_id はエージェントチームのチームメイト、またはエージェント ID または名前で名前付きバックグラウンドエージェントも受け入れます。
NotebookEdit
ツール名:NotebookEdit
WebFetch
ツール名:WebFetch
offset はページの先頭からスキップする文字数です。Claude は長いページを読み進めるためにこれを設定します。このフィールドには Agent SDK v0.3.290 以降が必要です。
WebSearch
ツール名:WebSearch
Workflow
ツール名:Workflow
Workflow ツールは Agent SDK v0.3.149 以降で利用可能です。script、name、または scriptPath の少なくとも 1 つが必要です。
TodoWrite
ツール名:TodoWrite
以下のツールは、デフォルトでは Claude Opus 4.7、Claude Sonnet 4.6、Claude Haiku 4.5、およびそれ以前のモデルでのみ利用可能です。その他のすべてのモデル(Claude Code が認識しないモデル ID を含む)では、オプトインしない限り利用できません。
TodoWriteTaskCreateTaskGetTaskUpdateTaskList
CLAUDE_CODE_ENABLE_TASKS=0 を設定した場合は、代わりに TodoWrite を提供します。このデフォルトセットは Claude Code v2.1.268 以降に適用されます。これは TypeScript Agent SDK が v0.3.268 からバンドルしています。モデルの可用性 を参照してオプトインしてください。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 は相互に排他的です。
ExitWorktree
ツール名:ExitWorktree
keep アクションは worktree とブランチをディスク上に残し、remove は両方を削除します。discard_changes は、コミットされていないファイルまたはマージされていないコミットを持つ worktree を削除する場合は true である必要があります。
EnterPlanMode
ツール名:EnterPlanMode
CronCreate
ツール名:CronCreate
recurring を false に設定して、次のマッチで 1 回だけ実行します。ジョブはデフォルトではセッションスコープです。--resume または --continue で再開するとまだ期限切れになっていないジョブが復元されます。スケジュールタスク を参照してください。
durable を true に設定すると、.claude/scheduled_tasks.json への永続化をリクエストするため、ジョブは再起動後も存続します。耐久性のあるスケジューリングはすべてのセッションで利用できるわけではありません。利用できない場合、Claude Code は durable: true を受け入れますがジョブをセッションのみで作成します。出力の durable フィールドを読んで、ジョブが永続化されたかどうかを確認してください。
CronDelete
ツール名:CronDelete
CronCreate から返された ID でスケジュール済み cron ジョブを削除します。
CronList
ツール名:CronList
.claude/scheduled_tasks.json からの耐久性のあるジョブと現在のセッションからのセッションのみのジョブ。
ScheduleWakeup
ツール名:ScheduleWakeup
/loop コマンドをサポートしています。ランタイムは delaySeconds を 60 ~ 3600 秒の間にクランプします。delaySeconds、reason、prompt、および noop フィールドは、stop が true でない限り必須です。noop: true は何も変わらなかったウェイクアップを報告します。stop: true を設定すると、保留中のウェイクアップをキャンセルし、自分のペースで進める /loop を終了します。stop フィールドには Claude Code v2.1.202 以降が必要です。ツールリファレンスの ScheduleWakeup 行 を参照してください。
RemoteTrigger
ツール名:RemoteTrigger
/schedule コマンドをサポートしています。trigger_id は get、update、run、および list_runs アクションに必須です。body は create、update、および create_webhook_trigger に必須で、run ではオプションです。
create_webhook_trigger は、GitHub イベント など、既存のルーティンにイベントソースをアタッチして実行します。body はソース、イベント、および実行するルーティンに名前を付けます。Claude Code v2.1.225 以降が必要です。
list_runs はルーティンの最近の実行をリストし、get_run_log は 1 つの実行のログを読みます。session_id は list_runs 結果から読むべき実行に名前を付け、cursor はいずれかのアクションの結果をページングします。両方のアクションには Claude Code v2.1.227 以降が必要です。
このツールは、セッションが Routines が有効なプランで claude.ai アカウントで認証されている場合にのみ利用可能で、組織のポリシーが クラウドセッション を無効にしている場合は存在しません。Claude Code v2.1.227 以降では、Owner が 組織のルーティンをオフにした 場合、ツールも存在しません。v2.1.227 より前は、ルーティンの切り替えのみがオフになっているセッションでもツールが表示され、サーバーはその呼び出しを拒否していました。
PushNotification
ツール名:PushNotification
message を 200 文字以下に保ちます。ツールリファレンスの PushNotification 行 でプロバイダーの可用性を参照してください。プッシュ配信は Anthropic でホストされたインフラストラクチャを通じて実行されます。Amazon Bedrock、Claude Platform on AWS、Google Cloud の Agent Platform、または Microsoft Foundry からはアクセスできません。
REPL
v2.1.275 で削除されました。v2.1.274 までは、実験的なREPL ツールを env オプション で CLAUDE_CODE_REPL=1 を設定することでオンにできました。
ReportFindings
ツール名:ReportFindings
level はオプションで、Claude がレビューについて報告する effort レベルを保持します。Claude Code はこれをレビューが実際に実行されたレベルと比較しないため、両者が異なる場合があります。
各検出結果には以下のフィールドが含まれます:
file:検出結果が含まれるリポジトリ相対パス。オプションのlineはそれがアンカーされている 1 インデックス付きの行です。summary:欠陥の 1 文の説明。failure_scenarioは、間違った出力またはクラッシュにつながる具体的な入力と状態を説明します。short_summary:コンパクト表示用の最大 60 文字の圧縮ラベル(オプション)。Claude Code v2.1.212 以降が必要です。category:correctnessまたはtest-coverageなどの検出結果タイプの短いケバブケーススラッグ(オプション)。Claude Code v2.1.199 以降が必要です。verdict:検証パスが実行されたときに設定;インラインのみのレビューでは存在しません。outcome:修正を適用した後に再度レポートする場合にのみ設定されます。
Artifact
ツール名:Artifact
.html または .md ファイルをホストされたアーティファクトページとして公開するか、ユーザーの公開されたアーティファクトをリストします。action を省略するか "publish" を渡して file_path を公開します。これは公開アクションに必須です。以下の各フィールドは公開に適用されます:
icon:アーティファクトのブラウザタブアイコンの 1 つの短い一般的な単語(chartやmapなど)。Claude は最初の公開時にそれを含め、更新時に省略します。これはアーティファクトの保存されたアイコンを保持します。favicon:非推奨で、Claude は省略します。title:HTML ファイルに<title>タグがない場合、ブラウザタブとギャラリーで公開されたページに名前を付けます。url:新しいページを作成する代わりに、既存のアーティファクトをその場で更新するターゲット。
force は、別のセッションが公開した新しいバージョンを破棄する最後の手段の上書きです。競合時に、失敗した公開はより新しいコンテンツを返します。Claude はその変更をそのコンテンツにマージするか、アーティファクトを再度読み取り、再度公開します。ユーザーがそのバージョンを明示的に破棄するよう求めた場合にのみ force を渡します。
"list" を渡してユーザーの公開されたアーティファクトを列挙します。limit と scope のみがそれに付随する場合があります。scope はデフォルトで "mine" で、ユーザーが所有するアーティファクトをリストします。"shared" は他の人がユーザーと共有したアーティファクトをリストし、"all" は両方をリストします。
limit は、一覧で返されるアーティファクトの最大数を 1 ~ 200 の範囲で設定します。50 を超える limit には Agent SDK v0.3.292 以降が必要です。limit を指定しない場合、一覧は最大 25 件を返します。
capabilities:公開されたページが使用するランタイム機能。機能名でキー付けされます。例えば、ページが呼び出す可能性があるコネクタ。アーティファクトサービスは宣言を検証し、アカウントが使用できない機能に名前を付けるか、無効な設定を与える公開を拒否します。{}を渡して保存された宣言をクリアし、再デプロイ時にフィールドを省略して保持します。Agent SDK v0.3.235 以降が必要です。contract:公開されたページが実行されるランタイムバージョン。省略してアーティファクトの現在のバージョンを保持し、"latest"を渡してアップグレードするか、特定のバージョンを渡してピン留めまたはロールバックします。Agent SDK v0.3.235 以降が必要です。
Projects
ツール名:Projects
method でディスパッチします:
project_info:プロジェクトメタデータとドキュメントリストを返します。project_read:pathで 1 つのドキュメントを読みます。project_search:queryでプロジェクトのナレッジベースをクエリします。nはヒット数をキャップし、デフォルトは5です。project_write:content(インラインテキストを含む)またはlocal_path(作業ディレクトリ内のファイルに名前を付ける)のいずれか正確に 1 つからpathでドキュメントを作成または置換します。present_to_user: trueは、書き込まれたドキュメントをユーザーが見る必要がある成果物としてマークします。project_delete:pathでドキュメントを削除します。
ReadMcpResourceDir
ツール名:ReadMcpResourceDirTool
resources リストを返し、error フィールドはディレクトリリスティングが有効になっていないことを報告します。
RefreshMcpTools
ツール名:RefreshMcpTools
env オプション で CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1 を設定し、少なくとも 1 つの MCP サーバーがあるセッションでのみツールを登録します。Claude Code v2.1.211 以降が必要です。
ShowOnboardingRolePicker
ツール名:ShowOnboardingRolePicker
McpInput
ツール名:mcp__<server>__<tool> の形式の動的 MCP ツール名
ツール出力タイプ
組み込み Claude Code ツールの出力スキーマのドキュメント。これらのタイプは@anthropic-ai/claude-agent-sdk/sdk-tools からエクスポートされ、各ツールによって返される実際のレスポンスデータを表します。
ToolOutputSchemas
@anthropic-ai/claude-agent-sdk/sdk-tools からエクスポートされたツール出力タイプの Union。メンバーには以下が含まれます:
Agent
ツール名:Agent。以前の名前 Task はエイリアスとしてまだ受け入れられており、SDKSystemMessage 初期化メッセージの tools 配列は、後方互換性のためこのツールを Task として現在リストしています。
status フィールドで判別されます:完了したタスクの場合は "completed"、バックグラウンドタスクの場合は "async_launched"、Claude Code がクラウドセッションにディスパッチしたタスクの場合は "remote_launched" です。sessionUrl はそのセッションにリンクし、taskId がそれを識別します。
completed バリアントでは、resolvedModel はサブエージェントが開始したモデルを名付けます。これは、availableModels または別の上書きが適用される場合、リクエストされた model 入力と異なる場合があります。このフィールドは Claude Code v2.1.174 以降が必要です。async_launched では、タスクがバックグラウンドに移動したときに使用中のモデルを名付けます。
modelsUsed はサブエージェントが使用したモデルを順序で列挙します。このフィールドは実行中のスワップが発生した場合にのみ存在し、実行がそれに戻ったときにモデルが再度表示されます。async_launched では、リストはバックグラウンド化前に使用されたモデルをカバーします。modelsUsed と resolvedModel のバックグラウンド化動作の両方は Claude Code v2.1.212 以降が必要です。
Claude Code がサブエージェントの分離された worktree を保持した場合、completed 結果の worktreePath はそれを見つける場所です。worktreeBranch はそのブランチで、Claude Code が worktree を git で作成した場合に存在します。
Claude Code は usage と totalTokens をサブエージェントの最終 API リクエストから入力します。実行全体からではないため、usage.service_tier は API がそのリクエストで報告したサービスティア文字列です。存在する場合、usage.output_tokens_details.thinking_tokens はそのリクエストの出力トークンのうち思考トークンであった数です。output_tokens_details フィールドは TypeScript SDK v0.3.228 以降が必要です。これは Claude Code v2.1.228 をバンドルしています。fallback_credit フィールドは TypeScript SDK v0.3.285 以降が必要です。これは Claude Code v2.1.285 をバンドルしています。
usage.output_tokens_details は意味において Usage.output_tokens_details と一致しますが、その最終リクエストにスコープされています。ただし、ここではそのすべてのレベルがオプションです。オブジェクトとフィールドの両方をガードしてください。例えば usage.output_tokens_details?.thinking_tokens ?? 0 のように、直接読み取るのではなく。
v2.1.207 より前では、公開されたタイプはより狭いものでした。worktreePath、worktreeBranch、citations、toolStats.frameCount、および inference_geo、speed、iterations 使用フィールドを省略し、service_tier を "standard" | "priority" | "batch" として型付けしていました。タイプがオプションとしてマークするフィールドは、以前のバージョンで記録された結果に存在しない場合があります。
AskUserQuestion
ツール名:AskUserQuestion
response はユーザーが構造化された質問に答える代わりに自由形式の返信を入力した場合に設定されます。存在する場合、Claude は質問ごとの回答リストの代わりに「The user responded: …」を受け取ります。
Bash
ツール名:Bash
stdout、stderr、backgroundTaskId フィールドは以下を保持します:
timedOutAfterMs はタイムアウト(ミリ秒単位)で、コマンドがタイムアウトに達し、明示的に開始するのではなくバックグラウンドに移動した場合に設定されます。backgroundCwdHint はバックグラウンド化されたコマンドに cd、pushd、popd、chdir などのディレクトリ変更組み込みが含まれていた場合に設定され、セッション作業ディレクトリが変更されなかったことを注記します。両方のフィールドは Claude Code v2.1.210 以降が必要です。
フォアグラウンドで実行されているサブエージェントがバックグラウンド化されたコマンドを所有している場合、コマンドはそのサブエージェントの実行が終了するときに終了します。Claude Code はそのようなコマンドで backgroundEndsWithFinalResponse を true に設定し、コマンドがターンを超えて存続する場合はフィールドを省略します。メインの会話またはバックグラウンドサブエージェントによって開始されたコマンドと同様です。このフィールドは Claude Code v2.1.227 以降が必要です。
Claude Code は gitOperation.commit.branch を git のコミットサマリー行で名付けられたブランチに設定し、デタッチされた HEAD 上で行われたコミットの場合は省略します。このフィールドは Agent SDK v0.3.227 以降が必要です。Claude Code は gh pr reopen コマンドを reopened PR アクションとして報告します。これは Agent SDK v0.3.234 以降が必要です。
Monitor
ツール名:Monitor
TaskStop で使用して、ウォッチを早期にキャンセルできます。
Edit
ツール名:Edit
Read
ツール名:Read
type フィールドで判別されます。
Write
ツール名:Write
originalFile と structuredPatch が保持する内容は書き込みに依存します:
- 新しく作成されたファイルの場合、
originalFileは null でstructuredPatchは空です - 上書きの場合、
originalFileは以前のコンテンツを保持します。ただし、そのコンテンツが約 10 MB より大きい場合は除きます。Claude Code は diff をスキップし、originalFilenull とstructuredPatch空を返します - 書き込みが何も変更しなかった場合、または diff がタイムアウトした場合、
structuredPatchも空です
Glob
ツール名:Glob
totalMatches と countIsComplete は Claude Code v2.1.191 以降が必要です。totalMatches は切り詰め前のマッチングファイル数を報告します。countIsComplete が false の場合、基盤となる検索が独自の出力を切り詰めたため、totalMatches は下限です。
Grep
ツール名:Grep
mode によって異なります:ファイルリスト、マッチを含むコンテンツ、またはマッチカウント。count モードでは、numFiles と numMatches はページネーションされたスライスではなく、完全な結果セット全体の合計です。v2.1.208 より前では、リストされたエントリを切り詰めた head_limit または offset もそれらの合計を切り詰めていました。
totalFiles は Claude Code v2.1.208 以降が必要で、files_with_matches モードで head_limit と offset ページネーション前の結果の総数を報告します。totalLines は Claude Code v2.1.210 以降が必要で、content モードでページネーション前の行の総数を報告します。
TaskStop
ツール名:TaskStop
NotebookEdit
ツール名:NotebookEdit
WebFetch
ツール名:WebFetch
artifactRead は Claude Code 独自のアーティファクト読み取りの記録で、セッションが公開できるアーティファクトを Claude が取得した場合にのみ存在します。セッションが再開されるとき、Claude Code はそれを読み直すため、後の公開は正しいバージョンに基づいて構築されます。コードはそれに対して行動する必要はありません。slug はアーティファクトに名前を付け、ver は読み取りが記録したバージョンで、記録しなかった場合は存在しません。seeded: false は完全なソースが Claude に到達しなかった読み取りをマークします。seeded フィールドは Agent SDK v0.3.239 以降が必要です。
WebSearch
ツール名:WebSearch
Workflow
ツール名:Workflow
error を確認してください:構文チェックに失敗したスクリプトは status: "async_launched" と error セットで返され、実行されることはありません。
TodoWrite
ツール名:TodoWrite
以下のツールは、デフォルトでは Claude Opus 4.7、Claude Sonnet 4.6、Claude Haiku 4.5、およびそれ以前のモデルでのみ利用可能です。その他のすべてのモデル(Claude Code が認識しないモデル ID を含む)では、オプトインしない限り利用できません。
TodoWriteTaskCreateTaskGetTaskUpdateTaskList
CLAUDE_CODE_ENABLE_TASKS=0 を設定した場合は、代わりに TodoWrite を提供します。このデフォルトセットは Claude Code v2.1.268 以降に適用されます。これは TypeScript Agent SDK が v0.3.268 からバンドルしています。モデルの可用性を参照してオプトインしてください。TaskCreate
ツール名:TaskCreate
TaskUpdate
ツール名:TaskUpdate
TaskGet
ツール名:TaskGet
null。
TaskList
ツール名:TaskList
ExitPlanMode
ツール名:ExitPlanMode
ListMcpResources
ツール名:ListMcpResourcesTool
ReadMcpResource
ツール名:ReadMcpResourceTool
EnterWorktree
ツール名:EnterWorktree
ExitWorktree
ツール名:ExitWorktree
EnterPlanMode
ツール名:EnterPlanMode
CronCreate
ツール名:CronCreate
CronDelete
ツール名:CronDelete
CronList
ツール名:CronList
.claude/scheduled_tasks.json からの永続ジョブと現在のセッションからのセッションのみのジョブ。セッションのみのジョブは durable: false を保持します。ディスクから読み取られたジョブはフィールドを省略します。
ScheduleWakeup
ツール名:ScheduleWakeup
stopped フィールドは呼び出しが stop: true でループを終了した場合は true です。Claude Code v2.1.202 以降が必要です。cancelledWakeups フィールドは stop: true 呼び出しがキャンセルした保留中のウェイクアップの数をカウントします。0 の値は何も保留されていないことを意味し、繰り返し /loop cron は stop: true でキャンセルされません。Claude Code v2.1.206 以降が必要です。
RemoteTrigger
ツール名:RemoteTrigger
PushNotification
ツール名:PushNotification
ReportFindings
ツール名:ReportFindings
level 値、および結果本体のためにエコーバックされた検出結果を返します。Claude Code v2.1.196 以降が必要です。エコーバックされた short_summary フィールドは Claude Code v2.1.212 以降が必要です。
Artifact
ツール名:Artifact
url と公開されたローカル path を返します。公開アクション用に、updated は公開が既存のアーティファクトを再デプロイした場合に true に設定され、warnings は公開時の勧告を保持します。リストアクションは代わりに artifacts 行を返し、truncated はリクエストされた制限より多くのアーティファクトが存在する場合に設定されます。スコープが "mine" でないリストでは、各行は rel を保持し、ユーザーがアーティファクトを所有しているか、それが共有されているかをマークします。出力の scope はどの非デフォルトスコープがリストを生成したかを記録します。両方ともデフォルトリストに存在しません。
リスト結果は total も報告します。これはリストされたスコープに一致するアーティファクトの数で、limit を超えるものも含みます。total_at_least が設定されている場合、その数は下限であり、さらに多くのアーティファクトが存在する可能性があります。両方のフィールドは Agent SDK v0.3.292 以降が必要です。
Projects
ツール名:Projects
method フィールドで判別され、入力をミラーリングします。project_read は小さいテキストドキュメントを content にインラインで返し、より大きなドキュメントを代わりに local_file パスに書き込みます。project_search はプロジェクトのインデックスが利用可能な場合は RAG hits を rag: true で返し、そうでない場合は docs パスリストにフォールバックします。
ReadMcpResourceDir
ツール名:ReadMcpResourceDirTool
"inode/directory" で表示されます。error はサーバーがディレクトリをリストできなかった場合に人間が読めるメッセージを保持します。
RefreshMcpTools
ツール名:RefreshMcpTools
refreshed は再クエリされたツールリストが適用されたことを意味し、error は再クエリが失敗し、以前のツールセットが保持されたことを意味し、not_connected はサーバーがクエリするライブ接続を持たないことを意味します。
ShowOnboardingRolePicker
ツール名:ShowOnboardingRolePicker
role、ピッカーを閉じた場合は dismissed: true。空のオブジェクトはユーザーがロールを選択せずに呼び出しを承認したことを意味します。
McpOutput
ツール名:mcp__<server>__<tool> の形式の動的 MCP ツール名
structuredContent やリソースリンクも含む結果については、tool_use_result を参照してください。この値はその content メンバーに保持されます。実行時に値は undefined の場合もありますが、エクスポートされた型はこれをモデル化しません。
パーミッション型
PermissionUpdate
パーミッション更新の操作。
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
その他のタイプ
ApiKeySource
セッションのリクエストに使用される API キーの出所です。SDKSystemMessage 初期化メッセージの apiKeySource として報告されます。
Agent SDK v0.3.234 以降では、タイプ内にこれら 4 つの値がリストされます。タイプは
user、project、org、temporary、oauth も保持しているため、古いコードは引き続きコンパイルされ、Claude Code はそれらを報告しません。
SdkBeta
betas オプションで有効にできる利用可能なベータ機能です。詳細については、Beta headers を参照してください。
SlashCommand
利用可能なコマンドに関する情報です。
builtin は、コマンドが Claude Code 自体のものであり、/name を入力するとそれが実行される場合に true です。ユーザー、プロジェクト、プラグイン、または MCP サーバーによって定義されたコマンド、および 名前で置き換える バンドルされたコマンドの場合は存在しません。Agent SDK v0.3.277 以降が必要です。
ModelInfo
利用可能なモデルに関する情報です。
AgentInfo
Agent ツールを介して呼び出すことができる利用可能なサブエージェントに関する情報です。
McpServerProvenance
mcp__* ツールを提供する MCP サーバーと、そのサーバーの定義がどこから来たかです。PreToolUse、PostToolUse、PostToolUseFailure、PermissionRequest、PermissionDenied フックの入力は mcp_server として、CanUseTool オプションは mcpServer として持ちます。MCP サーバーから来ないツールの場合は両方とも省略されます。
source は以下の値のいずれかを取ります。セットはオープンなため、認識しない値を設定されたソースとして扱い、sdk としては扱いません。
sdk: アプリケーションが登録したインプロセスサーバー。SDK ホストアプリケーションのみが登録できるため、設定されたサーバーは名前に関係なくsdkを報告しません。plugin: プラグイン が提供するサーバー。そのnameは プラグイン提供 MCP サーバー で説明されているスコープ付きplugin:<plugin-name>:<server-name>形式です。- 設定スコープ:
user、project、local、dynamic、managed、enterprise、claudeai、またはagent。.mcp.jsonサーバーはprojectを報告し、MCP インストールスコープ はlocal、project、userを定義します。アプリケーションがmcpServersオプション で渡すサーバー(インプロセス SDK サーバー以外)はdynamicを報告します。
name または mcp__<server>__ ツール名プレフィックスではなく source に基づいてください。sdk 以外のソースの場合、name は信頼されていないテキストです。表示する前にエスケープしてください。
McpServerProvenance とそれを持つフィールドには Agent SDK v0.3.274 以降が必要です。
McpServerStatus
接続された MCP サーバーのステータスです。
source はサーバーの定義がどこから来たかを示し、McpServerProvenance の source と同じ値と信頼ルールを持ちます。フィールドには Agent SDK v0.3.274 以降が必要で、以前のバージョンでは存在しません。
tools エントリの _meta は、そのツールの _meta の MCP Apps メンバーを持ち、アプリケーションが readMcpResource() でレンダリングする ui:// リソースを見つけることができます。Claude Code は ui オブジェクトと非推奨のフラット ui/resourceUri 文字列をパススルーし、他のすべてのキーを保留します。ui 内では、resourceUri は ui:// 文字列で、visibility はサーバーが設定した場合に "model" と "app" の配列で、他のメンバーは変更されずにパススルーされます。Claude Code は値が不正な形式の場合、どちらかのキーをドロップし、ツールが宣言しない場合は _meta を省略します。フィールドは初期化メッセージの capabilities に mcp_tool_ui_meta_v1 が含まれる場合にのみ存在し、TypeScript Agent SDK v0.3.280 以降が必要です。
McpServerStatusConfig
mcpServerStatus() によって報告される MCP サーバーの設定です。これはすべての MCP サーバートランスポートタイプの和集合です。
McpServerConfig を参照してください。
AccountInfo
認証されたユーザーのアカウント情報です。
ModelUsage
結果メッセージで返されるモデルごとの使用統計です。costUSD 値はクライアント側の推定値です。請求に関する注意事項については、コストと使用状況の追跡 を参照してください。
thinkingTokens はこのモデルが生成した思考トークンをカウントします。outputTokens はすでにそれらを含んでいるため、2 つを合計しないでください。フィールドは、ターンが記録するバージョンの Claude Code で実行されるまで存在しません。そのため、以前のバージョンで開始された再開されたセッションは部分的なカウントを報告します。thinkingTokens には Agent SDK v0.3.257 以降が必要です。
canonicalModel および provider フィールドには Claude Code v2.1.218 以降が必要です。canonicalModel は価格ルックアップが使用する正規モデル ID です。例えば、その文字列がプロバイダー固有の ID またはエイリアスの場合、エントリのキーとなる生のモデル文字列と異なる場合があります。
provider は、firstParty、bedrock、vertex、foundry、anthropicAws、mantle、gateway など、モデルを提供した API バックエンドに名前を付けます。
costBasis はモデルの最新リクエストに価格を付けた価格表に名前を付けます:リスト価格の場合は list、modelPricing テーブルの場合は managed、モデル ID がどちらにも一致しない場合は unknown。フィールドには Claude Code v2.1.246 以降が必要です。
ConfigScope
NonNullableUsage
fallback_credit を除くすべてのヌル許容フィールドをヌル許容でなくした Usage のバージョンです。fallback_credit は引き続き null になる可能性があります。
Usage
トークン使用統計です。これは @anthropic-ai/sdk の BetaUsage タイプです。
BetaServerToolUsage、BetaIterationsUsage、BetaOutputTokensDetails、BetaFallbackCreditUsage は @anthropic-ai/sdk で定義されています。
output_tokens_details は請求された出力をカテゴリ別に分類します。現在、thinking_tokens: number という 1 つのフィールドを持ち、モデルが内部推論として生成した出力トークンをカウントします。これには思考ブロック区切り文字が含まれます。output_tokens_details フィールドには TypeScript SDK v0.3.228 以降が必要で、これは Claude Code v2.1.228 をバンドルしています。
- 請求: 分類は請求のためではなく、観測可能性のために読んでください。
output_tokensは引き続き正式な合計であり、output_tokens - thinking_tokensは非推論出力を近似します。 - カウントが対象とするもの: モデルが生成した生の推論。これは応答本文で返された思考テキストより長い場合があります。API はその生テキストを再トークン化することで計算するため、モデルの正確な生成カウントから数トークン異なる場合があります。
- ストリーミング: ストリーミングされたアシスタントメッセージでは、この分類は
output_tokensと同様にmessage_startプレースホルダーで、実際のカウントを持たないため、結果メッセージから出力トークンを読む で説明されているように結果メッセージのusageから読んでください。結果メッセージでは、モデルまたはプロバイダーが分類を報告しない場合、thinking_tokensは0になります。 nullケース:output_tokens_details自体は、Claude Code が合成するアシスタントメッセージ(API エラーメッセージなど)ではnullです。
Usage が fallback_credit を持つかどうかは、インストールされている @anthropic-ai/sdk によって異なります。このフィールドは 0.115.0 で追加されました。
CallToolResult
MCP ツール結果タイプ(@modelcontextprotocol/sdk/types.js から)。structuredContent は content と一緒に返すことができる JSON オブジェクトで、画像ブロックを含みます。構造化データを返す を参照してください。
SDKMcpResourceLink
MCP ツールが参照によって返した 1 つのファイルです。Claude Code は各エントリをツール結果の resource_link ブロックから構築し、リストを SDKUserMessage.tool_use_result の resourceLinks として、または呼び出しがバックグラウンドで完了した場合は SDKTaskNotificationMessage の resource_links として配信します。Agent SDK v0.3.257 以降が必要です。
uri または name が文字列でないブロックをドロップし、値がリストされたタイプでないオプションフィールドを除外します。
ThinkingConfig
Claude の思考/推論動作を制御します。非推奨の maxThinkingTokens より優先されます。
display フィールドは、思考テキストが "summarized" または "omitted" で返されるかどうかを制御します。Claude Opus 4.7 以降では、API デフォルトは "omitted" なため、思考コンテンツを thinking ブロックで受け取るには "summarized" を設定してください。Claude Code は、Amazon Bedrock や Google Cloud の Agent Platform など一部のプロバイダーには display の値を渡しません。これらのプロバイダーでは、display を "summarized" に設定した場合でも、Opus 4.7 以降は空の thinking ブロックを返します。
SpawnedProcess
カスタムプロセス生成用のインターフェース(spawnClaudeCodeProcess オプションで使用)。ChildProcess はすでにこのインターフェースを満たしています。
SpawnOptions
カスタム spawn 関数に渡されるオプションです。
signal フィールドは、プロセスをティアダウンするタイミングを spawn 関数に伝えます。Node の spawn() に signal オプションとして渡すか、VM またはコンテナティアダウンハンドラーに渡してください。このシグナルは Options.abortController が中止する瞬間に発火しません。SDK は最初にプロセスの stdin を閉じ、CLI がクリーンにシャットダウンできるように約 2 秒待機してから、このシグナルを中止します。呼び出し元が中止する瞬間に反応するには、spawn 関数がそのエンクロージングスコープから参照できる独自の Options.abortController.signal をリッスンしてください。McpSetServersResult
setMcpServers() 操作の結果です。
setMcpServers() を呼び出すと、Claude Code は以下のルールを適用します。
- 呼び出しが名前を付けないサーバー: クラウドセッション以外では、Claude Code は以前の
setMcpServers()呼び出しが追加したサーバーとインプロセス SDK サーバーを切断し、それらをremovedにリストします。その他のサーバーは実行を続け、removedにはリストされません。これにはmcpServersオプションからの stdio、HTTP、SSE サーバー、設定ファイルからのサーバー、プラグイン提供サーバーが含まれます。 - 呼び出しが名前を付けるサーバー: Claude Code は、以前の
setMcpServers()呼び出しが追加した stdio、HTTP、または SSE サーバーを、その設定が渡したものと異なる場合にのみ置き換えます。その名前ですでに登録されているインプロセス SDK サーバーはそのまま残るため、入れ替えるには、ある呼び出しからそれを除外し、次の呼び出しで追加してください。 - CLI が起動時に開始した組み込みサーバー: 呼び出しが 1 つを名前付けする場合、Claude Code はそのエントリをドロップし、
errorsで報告します。
added は、接続したかどうかに関わらず、Claude Code が追加または置き換えたサーバーをリストします。接続に失敗したサーバーは added と errors の両方に表示され、失敗テキストは errors の下にあり、mcpServerStatus() に failed 行があります。Claude Code v2.1.257 より前では、接続試行がスローされたサーバーは errors の下にのみ報告されました。
RewindFilesResult
rewindFiles() 操作の結果です。
skippedLinks は、リンク安全性のために巻き戻しが復元または削除を拒否した追跡パスをカウントします。追跡パスのシンボリックリンク、ハードリンク、またはその他の非通常ファイル、チェックポイント取得時に指していた場所に解決されなくなった親ディレクトリ、または安全に読み取ることができなかったバックアップ。フィールドには Claude Code v2.1.216 以降が必要です。rewindFiles(userMessageId, { dryRun: true }) でのプレビュー呼び出しは設定しません。
SDKStatusMessage
ステータス更新メッセージ(例:コンパクト化)。
SDKTaskNotificationMessage
バックグラウンドタスクが完了、失敗、または停止したときの通知です。バックグラウンドタスクには run_in_background Bash コマンド、Monitor ウォッチ、バックグラウンドサブエージェントが含まれます。run_id および ambient フィールドについては、それらとそのバージョン要件を定義している SDKTaskStartedMessage を参照してください。
reason は、タスクがそれ自体の完了、失敗、または停止以外の原因で終了したときに設定され、Agent SDK v0.3.273 以降が必要です。Claude Code は claude.ai を介して接続するセッション、つまりセルフホストランナー上のものを含むクラウドセッションと Remote Control セッションでのみこれを設定します。ローカルの query() 呼び出しでは設定されません。唯一の値である worker_restart は、タスクを実行していた Claude Code プロセスが再起動したことを意味します。通知のステータスは "stopped" になるため、タスクは完了でも失敗でもないものとして扱ってください。
Claude Code が 長い MCP ツール呼び出しをバックグラウンドに移動 する場合、その呼び出しの tool_result ブロックはプレースホルダーのみを保持し、呼び出しの実際の結果はこの通知で到着します。tool_use_id で通知を呼び出しと照合してください。completed 通知では、resource_links はツールが参照によって返したファイルを SDKMcpResourceLink エントリとしてリストし、tool_use_result.resourceLinks と同じ 50 リンクおよび 64 KiB の制限があります。Claude Code は、結果にリンクがない場合と、MCP ツール呼び出しではないタスクの通知では resource_links を省略します。resource_links には Agent SDK v0.3.257 以降が必要です。
Claude Code は、モデルに送信するすべてのタスク通知に告知を前置します。ただし、scheduled-trigger サブカインド でスタンプされた配信は除きます。これらは代わりに割り当てられたタスクとしてのフレーミングを持ちます。告知は人間の入力が発生していないことを述べるため、モデルは通知をユーザーの指示や承認として扱いません。
タスク通知ターンを検出するには、告知テキストと照合するのではなく、SDKUserMessage または SDKResultMessage で origin.kind === "task-notification" をチェックしてください。何がそれを発生させたかを知る必要がある場合は、同じフィールドから subkind を読んでください。v2.1.205 より前では、Claude Code はセッションがアイドル状態の間に到着した通知に告知を付けていませんでした。
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
ツールが実行中に定期的に発行され、進捗を示します。
heartbeat: true で 30 秒ごとに tool_progress メッセージを発行します。各ハートビートはツール名と経過秒数を持ち、長時間実行される呼び出しを停止したセッションと区別できます。Claude Code はサブエージェント内のツール呼び出しのハートビートを発行しません。heartbeat フィールドには Agent SDK v0.3.214 以降が必要です。v2.1.257 より前では、Claude Code はフォアグラウンド Agent ツール呼び出しのハートビートも発行しませんでした。
ハートビート以外の Agent ツールの tool_progress メッセージでは、subagent_type は実行中のサブエージェントタイプ(general-purpose など)に名前を付けます。subagent_retry はそのサブエージェントが API エラーバックオフ(レート制限やオーバーロードなど)を待機している間に存在し、再試行ごとに 1 つのメッセージがあります。両方のフィールドには Agent SDK v0.3.214 以降が必要です。
subagent_retry から再試行インジケーターをレンダリングするには:
parent_tool_use_idでインジケーターを追跡します。これはサブエージェントごとに一意です。tool_use_idは 1 つのアシスタントターンから並列サブエージェントで共有されるため、それで追跡するとあるサブエージェントの更新が別のサブエージェントのインジケーターをクリアしてしまいます。- 同じ
parent_tool_use_idの後のtool_progressがsubagent_retryもheartbeat: trueも持たずに到着した場合、またはツールの結果メッセージが到着したときにインジケーターをクリアします。heartbeat: trueのフレームはライブネスのみを報告するため、それが到着したときはインジケーターを保持してください。attemptは永続的な再試行の下でmax_retriesを超える可能性があるため、カウンターからクリアを導出しないでください。 error_categoryを表示テキストではなく、独自のメッセージテキストを選択するためのトークンとして扱います。値はrate_limit、overloaded、authentication_failed、server_error、cloud_credential_error、unknownです。後のリリースで値が追加される可能性があるため、認識しない値はunknownと同じ方法で処理してください。
SDKAuthStatusMessage
認証フロー中に発行されます。
SDKTaskStartedMessage
タスクが開始するときに発行されます。task_type フィールドは Bash コマンドと Monitor ウォッチの場合は "local_bash"、サブエージェントの場合は "local_agent"、または "remote_agent" です。
run_id はタスクの 1 回の実行を識別します。Claude が再開するサブエージェント のように、タスクが同じ task_id で再度実行されると、新しい実行には新しい run_id が割り当てられます。フィールドには Agent SDK v0.3.292 以降が必要です。これを使用して、1 つのタスクの実行同士を区別してください。
- メッセージを実行と照合する: 1 回の実行の
task_started、task_progress、task_updated、task_notificationメッセージは同じrun_idを持ちます。各SDKBackgroundTasksChangedMessage内のその実行のエントリも同じ値を持ち、その実行の通知を配信するユーザーメッセージの origin にあるrunIdも同様です。 - 遅れて届いたメッセージを検出する: 単純な文字列として比較すると、1 つのタスクの実行 ID は実行が開始された順にソートされるため、
run_idが表示中の実行より前にソートされるメッセージは以前の実行からのものです。その比較以外では、値を不透明なものとして扱ってください。 task_idにフォールバックする: 再開されたセッションが以前のプロセスが開始したタスクを閉じるために発行するtask_notificationなど、メッセージがrun_idを持たない場合は、task_idによって帰属を判断してください。
task_started メッセージは task_id を共有し、最初の実行を終了した通知は最初の実行の ID を持ちます。
ambient は、セッションの作業の一部ではないタスク(Claude Code が独自の操作のために実行するタスクなど)の場合は true です。ライブアップデートウォッチャーもアンビエントで、ユーザーが要求したウォッチャーを含みます。アクティビティインジケーターからアンビエントタスクを除外してください。フィールドには Agent SDK v0.3.247 以降が必要です。
ambient は SDKTaskNotificationMessage および SDKBackgroundTasksChangedMessage エントリにも表示されます。
is_backgrounded および spawn_depth は Claude Code がタスクをどのように開始したかを説明します。両方のフィールドには Agent SDK v0.3.238 以降が必要です。
is_backgrounded: Claude Code は"local_agent"および"local_bash"タスクで設定します。trueはタスクがバックグラウンドで実行されることを意味します。falseはタスクがフォアグラウンドで実行され、それを開始したツール呼び出しはタスクが完了するかバックグラウンドに移動するまでブロックされたままであることを意味します。spawn_depth: Claude Code は"local_agent"タスクのみで設定します。メインスレッドが生成したサブエージェントの深さは1です。深さ1のサブエージェントが生成したサブエージェントの深さは2となり、以下同様です。
is_backgrounded: true を報告します。Claude Code はすべての再開されたサブエージェントをバックグラウンドで実行するためです。フォアグラウンドタスクが後でバックグラウンドに移動する場合、Claude Code は 2 番目の task_started を送信するのではなく、新しい is_backgrounded 値を task_updated メッセージで報告します。
parent_task_id は、このタスクを起動したサブエージェントの task_id を保持します。これを使用して、各タスクをそれを開始したサブエージェントの下にグループ化してください。Claude Code はサブエージェント、Bash、Monitor タスクでこれを設定します。フィールドには Agent SDK v0.3.292 以降が必要です。以下の場合は存在しません。
- メインスレッドがタスクを起動した場合
- Claude Code が親タスクを追跡しなくなった場合
- チームメイト またはワークフロー内のエージェントがタスクを起動した場合
SDKTaskProgressMessage
サブエージェントまたはバックグラウンドタスクが実行中に定期的に発行されます。run_id フィールドについては、それとそのバージョン要件を定義している SDKTaskStartedMessage を参照してください。
サブエージェントタスクの場合、summary フィールドはモデル生成の進捗概要を持ち、agentProgressSummaries が有効な場合にのみ入力されます。バックグラウンド化された MCP ツール呼び出し の場合、summary は MCP サーバーが最後に報告した進捗を持ち、そのオプションに依存しません。
SDKTaskUpdatedMessage
バックグラウンドタスクの状態が変わるときに発行されます。例えば、running から completed に遷移するときなど。patch をローカルタスクマップ(task_id でキー付け)にマージしてください。end_time フィールドは Unix エポックタイムスタンプ(ミリ秒単位)で、Date.now() と比較可能です。run_id フィールドについては、それとそのバージョン要件を定義している SDKTaskStartedMessage を参照してください。
SDKBackgroundTasksChangedMessage
ライブバックグラウンドタスクのセットが変わるたびに発行されます。タスクの開始、完了、キル、フォアグラウンドエージェントのバックグラウンド化、またはタスクの description、ambient、parent_task_id フィールドの変更などです。各エントリの run_id および parent_task_id フィールドについては、それらとそのバージョン要件を定義している SDKTaskStartedMessage を参照してください。
tasks 配列はライブセット全体です。task_started および task_notification イベントをペアリングするのではなく、各ペイロードでキャッシュされたセットを置き換えてください。そうすれば、次のメンバーシップ変更で逃したイベントが修正されます。
タスクが終了すると、その task_updated と task_notification は、それをリストから削除する background_tasks_changed より前に到着します。それ以外の場合、タスクごとのイベントに対する順序付けは指定されていません。
起動時には何も発行されません。セッションの CLI プロセスが開始または再開されるたびに空のセットにリセットし、次のメンバーシップ変更でそれを再入力させてください。
実行中のセッションに繰り返しの initialize 制御リクエストを送信する場合(例えば、トランスポートギャップ後の reinitialize())、Claude Code はレスポンスに続いて、空の場合でも現在のライブセットのスナップショットを送信します。そのため、再接続するホストは次のメンバーシップ変更を待つことなく何が実行されているかを把握できます。Agent SDK v0.3.239 より前では、Claude Code は繰り返された initialize の後にスナップショットを送信しませんでした。
Claude Code v2.1.203 以降が必要です。
subagent_type は、task_type が "local_agent" のエントリで、サブエージェントタイプ(general-purpose やカスタムサブエージェントの名前など)に名前を付けます。フィールドには Agent SDK v0.3.293 以降が必要です。
SDKThinkingTokensMessage
Claude が思考ブロック(編集されたものを含む)を生成している間に発行されます。estimated_tokens は現在のブロックでこれまでに生成された思考トークンの逐次推定値で、estimated_tokens_delta はこのフレームが持つ増分です。進捗表示にこれらの推定値を使用してください。
モデルまたはプロバイダーが分類を報告する場合、トップレベルエージェントループの最終カウントは結果メッセージの usage.output_tokens_details.thinking_tokens です。これは サブエージェントトークンを含みません。
Claude Code v2.1.153 以降が必要です。
SDKSessionStateChangedMessage
Claude Code がセッションの状態を報告するときに発行されます。これらのメッセージを受信するには、CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS=1 を設定してください。Claude Code は同じ状態を複数回報告することがあるため、メッセージは遷移としてではなく、セッションの現在の状態として読んでください。
state フィールドは以下のいずれかの値を持ちます。
running: セッションが作業中です。idle: Claude Code が次のプロンプトを待っています。requires_action: セッションが、ホストに送信したリクエスト(権限プロンプトなど)への回答を待ってブロックされています。
idle メッセージと result メッセージは、どちらの順序でも到着する可能性があります。idle がバックグラウンドサブエージェントや ワークフロー の実行などのバックグラウンド作業を待つかどうかを変更するには、CLAUDE_CODE_BG_TASKS_REPORT_RUNNING を参照してください。
SDKFilesPersistedEvent
ファイルチェックポイントがディスクに永続化されるときに発行されます。
SDKRateLimitEvent
セッションがレート制限に遭遇するときに発行されます。
errorCode が "credits_required" の場合、拒否は含まれる使用量を使い切った claude.ai サブスクリプションからのもので、ユーザーが使用クレジットを購入するまでセッションは続行できません。canUserPurchaseCredits は認証されたユーザーがアカウントのクレジットを購入できるかどうかを示し、hasChargeableSavedPaymentMethod は保存された支払い方法が登録されているかどうかを示します。3 つのフィールドはすべて、クレジット必須の拒否ではないレート制限イベントでは存在しません。Claude Code v2.1.181 以降が必要です。
SDKLocalCommandOutputMessage
Claude Code はこのメッセージタイプを発行しません。/context または /usage などのコマンドをプロンプトとして送信する場合、その出力は SDKAssistantMessage として到着します。
SDKCommandsChangedMessage
利用可能なコマンドのセットがセッション中に変わるときに発行されます。例えば、エージェントがサブディレクトリに入る際に Claude Code がスキルを発見するときなど。commands 配列は完全に更新されたリストなため、このペイロードでキャッシュされたコマンドリストを置き換えてください。このメッセージの後に supportedCommands() を呼び出すと、メソッドが最新のプッシュを追跡するため、同じ更新されたリストが返されます。これには Agent SDK v0.3.216 以降が必要です。以前の SDK バージョンでは、supportedCommands() は初期化時にキャプチャされたスナップショットを返し、セッション中の変更を反映しません。
Claude Code はまた、MCP サーバーの プロンプト がリストに追加または削除されるときにもこのメッセージを発行します。例えば、セッション開始後にサーバーが接続を完了するときなど。これには Claude Code v2.1.281 以降が必要です。
SDKPromptSuggestionMessage
promptSuggestions が有効で、Claude Code がそのターンの提案を生成した場合に、ターンの後に発行されます。予測される次のユーザープロンプトが含まれます。提案を取得しないターンについては、Claude Code が提案をスキップする場合 を参照してください。
SDKConversationResetMessage
セッションを終了せずにセッションの会話が置き換えられるときに発行されます。query() 呼び出しでは、/clear とそのエイリアスのみがこのメッセージを生成します。new_conversation_id の下に空のトランスクリプトをマウントし、キャッシュされたセッションタイトルを破棄してください。
trigger: 会話を破棄したもの。すべてのconversation_resetメッセージでトランスクリプトをリセットしてください。このフィールドが存在しない場合や認識しない値を持つ場合も含みます。user_message_uuid:/clearを持つユーザーメッセージのuuid。リセットをそのメッセージと照合するために使用してください。timestamp: リセットが発生した時刻。UTC の ISO 8601 文字列として。表示に使用してください。メッセージの順序付けには使用しないでください。
trigger、user_message_uuid、timestamp フィールドには Claude Code v2.1.281 以降が必要です。
SDK の公開された型付けは Claude Code v2.1.203 以降で SDKConversationResetMessage を宣言します。v2.1.203 より前では、SDKMessage は型を宣言せずに参照したため、skipLibCheck が無効な場合、type === "conversation_reset" での絞り込みは型チェックに失敗しました。
AbortError
中止操作のカスタムエラークラスです。
AbortError は SDK の型付き API における唯一のエラークラスです。Claude Code プロセスの終了や起動失敗など、その他の失敗は、照合できる SDK クラスを持たないエラーでメッセージイテレーションを拒否します。トラブルシューティング では、それらのエラーをメッセージごとに整理し、各エラーの原因と修正方法を示しています。
サンドボックス設定
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 ハンドラーが呼び出され、カスタム認可ロジックを実装できます。
excludedCommands エントリは、代わりにサンドボックスを自動的にバイパスし、モデルの関与はありません。sandbox.excludedCommands を参照して、エントリが適用される場合を確認してください。
下の例では、isCommandAuthorized は定義する認可チェックの代わりです。
関連項目
- SDK 概要 - 一般的な SDK 概念
- Python SDK リファレンス - Python SDK ドキュメント
- CLI リファレンス - コマンドラインインターフェース
- 一般的なワークフロー - ステップバイステップガイド