インストール
仮想環境にパッケージをインストールしてください。最近の Debian、Ubuntu、Homebrew Python インストールでは、システム Python に対してpip install を実行すると error: externally-managed-environment で失敗します。
query() と ClaudeSDKClient の選択
Python SDK は Claude Code と対話するための 2 つの方法を提供します。
クイック比較
query() を使用する場合(1 回限りのタスク)
最適な用途:
- 会話履歴が不要な 1 回限りの質問
- 前の交換からのコンテキストが不要な独立したタスク
- シンプルな自動化スクリプト
- 毎回新しく開始したい場合
ClaudeSDKClient を使用する場合(継続的な会話)
最適な用途:
- 会話を続ける - Claude がコンテキストを記憶する必要がある場合
- フォローアップ質問 - 前の回答に基づいて構築する
- インタラクティブなアプリケーション - チャットインターフェース、REPL
- 応答駆動ロジック - 次のアクションが Claude の応答に依存する場合
- セッション制御 - 会話ライフサイクルを明示的に管理する
関数
query()
Claude Code との各インタラクションのために新しいセッションを作成します。デフォルトでは、メッセージが到着するにつれて生成される非同期イテレータを返します。query() への各呼び出しは、continue_conversation=True または ClaudeAgentOptions の resume を渡さない限り、前のインタラクションのメモリなしで新しく開始します。セッション を参照してください。
パラメータ
戻り値
会話からのメッセージを生成するAsyncIterator[Message] を返します。
例 - オプション付き
tool()
型安全性を備えた MCP ツールを定義するためのデコレータ。
パラメータ
入力スキーマオプション
-
シンプルな型マッピング(推奨):
-
JSON Schema 形式(複雑な検証用):
戻り値
ツール実装をラップし、SdkMcpTool インスタンスを返すデコレータ関数。
例
ToolAnnotations
mcp.types から再エクスポート(from claude_agent_sdk import ToolAnnotations としても利用可能)。すべてのフィールドはオプションのヒントです。クライアントはセキュリティ決定のためにこれらに依存すべきではありません。
create_sdk_mcp_server()
Python アプリケーション内で実行されるインプロセス MCP サーバーを作成します。
パラメータ
戻り値
ClaudeAgentOptions.mcp_servers に渡すことができる McpSdkServerConfig オブジェクトを返します。
例
list_sessions()
メタデータを含む過去のセッションをリストします。プロジェクトディレクトリでフィルタするか、すべてのプロジェクト全体のセッションをリストします。同期的です。すぐに返します。
パラメータ
戻り値の型:SDKSessionInfo
例
プロジェクトの 10 個の最新セッションを出力します。結果はlast_modified の降順でソートされるため、最初の項目が最新です。directory を省略するとすべてのプロジェクト全体を検索します。
get_session_messages()
過去のセッションからメッセージを取得します。同期的です。すぐに返します。
パラメータ
戻り値の型:SessionMessage
例
get_session_info()
プロジェクトディレクトリ全体をスキャンせずに、ID でシングルセッションのメタデータを読み取ります。同期的です。すぐに返します。
パラメータ
SDKSessionInfo を返すか、セッションが見つからない場合は None。
例
プロジェクトディレクトリをスキャンせずに、シングルセッションのメタデータを検索します。前の実行からセッション ID を既に持っている場合に便利です。rename_session()
カスタムタイトルエントリを追加することでセッションの名前を変更します。繰り返し呼び出しは安全です。最新のタイトルが優先されます。同期的です。
パラメータ
session_id が有効な UUID でない場合、または title が空の場合は ValueError を発生させます。セッションが見つからない場合は FileNotFoundError。
例
最新のセッションの名前を変更して、後で見つけやすくします。新しいタイトルは、その後の読み取りでSDKSessionInfo.custom_title に表示されます。
tag_session()
セッションにタグを付けます。None を渡してタグをクリアします。繰り返し呼び出しは安全です。最新のタグが優先されます。同期的です。
パラメータ
session_id が有効な UUID でない場合、またはサニタイズ後に tag が空の場合は ValueError を発生させます。セッションが見つからない場合は FileNotFoundError。
例
セッションにタグを付けてから、後の読み取りでそのタグでフィルタします。既存のタグをクリアするにはNone を渡します。
クラス
ClaudeSDKClient
複数の交換にわたってセッションを維持します。 これは TypeScript SDK の query() 関数が内部的にどのように機能するかの Python 同等物です。会話を続けることができるクライアントオブジェクトを作成します。
主な機能
- セッション継続性:複数の
query()呼び出しにわたって会話コンテキストを維持します - 同じ会話:セッションは前のメッセージを保持します
- 割り込みサポート:タスク途中で実行を停止できます
- 明示的なライフサイクル:セッションの開始と終了を制御します
- 応答駆動フロー:応答に反応してフォローアップを送信できます
- カスタムツールと hooks:カスタムツール(
@toolデコレータで作成)と hooks をサポートします
メソッド
コンテキストマネージャーサポート
クライアントは自動接続管理のための非同期コンテキストマネージャーとして使用できます:
重要: メッセージを反復処理する場合、早期に終了するために break を使用することは避けてください。これは asyncio クリーンアップの問題を引き起こす可能性があります。代わりに、反復を自然に完了させるか、フラグを使用して必要なものを見つけたときを追跡してください。
例 - 会話を続ける
例 - ClaudeSDKClient でのストリーミング入力
例 - 割り込みの使用
割り込み後のバッファ動作:
interrupt() は停止信号を送信しますが、メッセージバッファをクリアしません。割り込まれたタスクによって既に生成されたメッセージ(subtype="error_during_execution" の ResultMessage を含む)はストリームに残ります。新しいクエリの応答を読む前に、receive_response() でそれらをドレインする必要があります。interrupt() の直後に新しいクエリを送信し、receive_response() を 1 回だけ呼び出すと、割り込まれたタスクのメッセージが受け取られ、新しいクエリの応答ではありません。例 - 高度なパーミッション制御
型
@dataclass vs TypedDict: この SDK は 2 種類の型を使用します。@dataclass で装飾されたクラス(ResultMessage、AgentDefinition、TextBlock など)は実行時にオブジェクトインスタンスであり、属性アクセスをサポートします:msg.result。TypedDict で定義されたクラス(ThinkingConfigEnabled、McpStdioServerConfig、SyncHookJSONOutput など)は実行時にプレーンな dict であり、キーアクセスが必要です:config["budget_tokens"]、config.budget_tokens ではなく。ClassName(field=value) 呼び出し構文は両方で機能しますが、dataclass のみが属性を持つオブジェクトを生成します。SdkMcpTool
@tool デコレータで作成された SDK MCP ツールの定義。
Transport
カスタムトランスポート実装の抽象基本クラス。これを使用して、カスタムチャネル(例:ローカルサブプロセスの代わりにリモート接続)を介して Claude プロセスと通信します。
インポート:
from claude_agent_sdk import Transport
ClaudeAgentOptions
Claude Code クエリの設定 dataclass。
遅いまたは停止した API レスポンスを処理
CLI サブプロセスは、API タイムアウトと停止検出を制御するいくつかの環境変数を読み込みます。ClaudeAgentOptions.env を通じてそれらを渡します:
API_TIMEOUT_MS:Anthropic クライアントのリクエストごとのタイムアウト(ミリ秒単位)。デフォルト600000。メインループとすべてのサブエージェントに適用されます。CLAUDE_CODE_MAX_RETRIES:最大 API リトライ数。デフォルト10、上限15。各リトライは独自のAPI_TIMEOUT_MSウィンドウを取得するため、最悪の場合の実時間はおおよそAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)にバックオフを加えたものです。無人実行で長時間の停止を待つ必要がある場合は、CLAUDE_CODE_RETRY_WATCHDOG=1を設定します:容量エラーを無限に再試行し、Claude Code v2.1.199 以降は他の一時的なエラーのデフォルトを300に引き上げ、この変数の上限を削除します。CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS:run_in_backgroundで起動されたサブエージェント用の停止ウォッチドッグ。デフォルト600000。各ストリームイベントでリセットされます。停止時にサブエージェントを中止し、タスクを失敗とマークし、部分的な結果を含むエラーを親に表示します。同期サブエージェントには適用されません。CLAUDE_ENABLE_STREAM_WATCHDOGとCLAUDE_STREAM_IDLE_TIMEOUT_MS:ヘッダーが到着したがレスポンスボディがストリーミングを停止したときにリクエストを中止します。ウォッチドッグはすべてのプロバイダーでデフォルトで有効です。CLAUDE_ENABLE_STREAM_WATCHDOG=0を設定して無効にします。CLAUDE_STREAM_IDLE_TIMEOUT_MSはデフォルト300000で、その最小値にクランプされます。中止されたリクエストは通常のリトライパスを通ります。
OutputFormat
構造化出力検証の設定。これを ClaudeAgentOptions の output_format フィールドに dict として渡します:
SystemPromptPreset
オプションの追加を含む Claude Code のプリセットシステムプロンプトを使用するための設定。
SystemPromptFile
ファイルからカスタムシステムプロンプトを読み込むための設定。文字列として渡す代わりに、ファイル形式を使用します。SDK はこれを CLI --system-prompt-file フラグにマップします。プロンプトが大きい場合はファイル形式を使用します:SDK は文字列 system_prompt を CLI サブプロセス argv に渡します。これは OS コマンドライン長制限の対象となり、SDK が API リクエストを送信する前に失敗します。Linux では、単一の引数が約 128 KB より長い場合、Argument list too long でプロセス生成に失敗します。Windows では、コマンドライン全体が約 32 KB に制限されているため、文字列形式はより低いしきい値で失敗します。
SettingSource
SDK が設定を読み込むファイルシステムベースの設定ソースを制御します。
デフォルト動作
setting_sources が省略されるか None の場合、query() は Claude Code CLI と同じファイルシステム設定を読み込みます:ユーザー、プロジェクト、ローカル。管理ポリシー設定はすべての場合に読み込まれます。サーバー管理設定は、セッションが 適格な設定 上の組織認証情報で認証されるときに取得されます。Claude Code 機能を使用 を参照して、このオプションに関係なく読み込まれる入力と、それらを無効にする方法を確認してください。
setting_sources を使用する理由
ファイルシステム設定を無効にする:Python SDK 0.1.59 以前では、空のリストはオプションを省略するのと同じように扱われていたため、
setting_sources=[] はファイルシステム設定を無効にしませんでした。空のリストが有効になる必要がある場合は、新しいリリースにアップグレードしてください。TypeScript SDK は影響を受けません。設定の優先順位
複数のソースが読み込まれる場合、設定はこの優先順位(最高から最低)でマージされます:- ローカル設定(
.claude/settings.local.json) - プロジェクト設定(
.claude/settings.json) - ユーザー設定(
~/.claude/settings.json)
agents と allowed_tools などのプログラム的なオプションは、ユーザー、プロジェクト、ローカルのファイルシステム設定をオーバーライドします。管理ポリシー設定はプログラム的なオプションより優先されます。
AgentDefinition
プログラムで定義されたサブエージェントの設定。
AgentDefinition フィールド名は disallowedTools、permissionMode、maxTurns などの camelCase を使用します。これらの名前は TypeScript SDK と共有される wire 形式に直接マップされます。これは disallowed_tools と permission_mode などの同等のトップレベルフィールドに Python snake_case を使用する ClaudeAgentOptions とは異なります。AgentDefinition は dataclass であるため、snake_case キーワードを渡すと構築時に TypeError が発生します。PermissionMode
ツール実行を制御するためのパーミッションモード。
EffortLevel
思考の深さを導くための努力レベル。
CanUseTool
ツールパーミッションコールバック関数の型エイリアス。
tool_name:呼び出されるツールの名前input_data:ツールの入力パラメータcontext:追加情報を含むToolPermissionContext
PermissionResult(PermissionResultAllow または PermissionResultDeny)を返します。
コールバックは対話的なパーミッションプロンプトの SDK 置き換えです:パーミッション評価フロー がプロンプトに解決される場合にのみ呼び出されます。allowed_tools エントリ、設定許可ルール、または acceptEdits や bypassPermissions などのパーミッションモードによって事前承認されたツール呼び出しは呼び出されません。すべてのツール呼び出しをゲートするには、代わりに PreToolUse hook を使用してください。
AskUserQuestion、requiresUserInteraction とマークされた MCP ツール、および 組織が ask に設定したコネクタツール は、許可ルールが一致する場合でもコールバックに到達します。dontAsk モードではこれらの呼び出しは代わりに拒否され、コールバックを呼び出しません。
ToolPermissionContext
ツールパーミッションコールバックに渡されるコンテキスト情報。
PermissionResult
パーミッションコールバック結果の Union 型。
PermissionResultAllow
ツール呼び出しを許可すべきことを示す結果。
PermissionResultDeny
ツール呼び出しを拒否すべきことを示す結果。
PermissionUpdate
プログラムでパーミッションを更新するための設定。
PermissionRuleValue
パーミッション更新で追加、置換、または削除するルール。
ToolsPreset
Claude Code のデフォルトツールセットを使用するためのプリセットツール設定。
ThinkingConfig
拡張思考動作を制御します。3 つの設定の Union:
オプションの
display フィールドは、思考テキストが "summarized" または "omitted" で返されるかどうかを制御します。Claude Opus 4.7 以降では、API デフォルトは "omitted" であるため、ThinkingBlock 出力で思考コンテンツを受け取るには "summarized" を設定します。
これらは TypedDict クラスであるため、実行時にはプレーンな dict です。dict リテラルとして構築するか、クラスをコンストラクタのように呼び出します。どちらも dict を生成します。config["budget_tokens"] でフィールドにアクセスし、config.budget_tokens ではなく:
SdkBeta
SDK ベータ機能の Literal 型。
ClaudeAgentOptions の betas フィールドで使用してベータ機能を有効にします。
McpSdkServerConfig
create_sdk_mcp_server() で作成された SDK MCP サーバーの設定。
McpServerConfig
MCP サーバー設定の Union 型。
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpServerStatusConfig
get_mcp_status() によって報告される MCP サーバーの設定。これは、すべての McpServerConfig トランスポートバリアント、および claude.ai を通じてプロキシされるサーバー用の出力のみの claudeai-proxy バリアントの Union です。
McpSdkServerConfigStatus は McpSdkServerConfig のシリアライズ可能な形式で、type("sdk")と name(str)フィールドのみです。インプロセス instance は省略されます。McpClaudeAIProxyServerConfig には type("claudeai-proxy")、url(str)、id(str)フィールドがあります。
McpStatusResponse
ClaudeSDKClient.get_mcp_status() からの応答。サーバーステータスのリストを mcpServers キーの下にラップします。
McpServerStatus
接続された MCP サーバーのステータス。McpStatusResponse に含まれます。
SdkPluginConfig
SDK でプラグインを読み込むための設定。
例:
メッセージ型
Message
すべての可能なメッセージの Union 型。
UserMessage
ユーザー入力メッセージ。
AssistantMessage
コンテンツブロック付きのアシスタント応答メッセージ。
AssistantMessageError
アシスタントメッセージの可能なエラータイプ。
SystemMessage
メタデータ付きのシステムメッセージ。
ResultMessage
コストと使用状況情報を含む最終結果メッセージ。
subtype フィールドは、他のどのフィールドが入力されるかを決定します。これは "success"、"error_during_execution"、"error_max_turns"、"error_max_budget_usd"、または "error_max_structured_output_retries" のいずれかです。Python データクラスはすべてのバリアントを 1 つの形状にフラット化するため、返された subtype に適用されないフィールドは None です。
会話がエラーで終了する場合、いくつかのフィールドは診断の詳細を含みます:
is_error:会話がエラー状態で終了した場合はTrue。error_*サブタイプでは常にTrue。subtype="success"では、最終モデルリクエストが失敗した場合はTrue。つまり、エージェントループが完了しましたが、最後の API 呼び出しがエラーを返しました。api_error_status:終了する API エラーの HTTP ステータスコード。ターンがエラーなしで終了した場合はNone。subtype="success"でのみ入力されます。result:subtype="success"での最終アシスタントメッセージのテキスト、またはerror_*サブタイプではNone。subtype="success"でis_error=Trueの場合、これは利用可能な場合は API エラー文字列を保持しますが、空の場合もあるため、api_error_statusと前のAssistantMessageコンテンツで詳細を確認してください。errors:最大ターンメッセージなどのループレベルのエラー文字列。error_*サブタイプでのみ入力されます。
usage dict には、存在する場合、以下のキーが含まれます:
model_usage dict はモデル名をモデルごとの使用状況にマップします。内部 dict キーは camelCase を使用します。これは、基になる CLI プロセスから変更されずに渡される値であり、TypeScript ModelUsage 型と一致するためです:
StreamEvent
ストリーミング中の部分的なメッセージ更新のためのストリームイベント。ClaudeAgentOptions で include_partial_messages=True の場合のみ受け取られます。from claude_agent_sdk.types import StreamEvent でインポートしてください。
RateLimitEvent
レート制限ステータスが変更されたときに発行されます(例:"allowed" から "allowed_warning" へ)。ユーザーにハード制限に達する前に警告するか、ステータスが "rejected" の場合にバックオフするために使用します。
RateLimitInfo
RateLimitEvent によって運ばれるレート制限状態。
TaskStartedMessage
バックグラウンドタスクが開始されたときに発行されます。バックグラウンドタスクは、メインターンの外で追跡されるもの:バックグラウンド Bash コマンド、Monitor ウォッチ、Agent ツール経由で生成されたサブエージェント、またはリモートエージェント。task_type フィールドはどれであるかを示します。このネーミングは Task から Agent ツールへの名前変更とは無関係です。
TaskUsage
バックグラウンドタスクのトークンとタイミングデータ。
TaskProgressMessage
実行中のバックグラウンドタスクの進捗更新で定期的に発行されます。
TaskNotificationMessage
バックグラウンドタスクが完了、失敗、または停止されたときに発行されます。バックグラウンドタスクには、run_in_background Bash コマンド、Monitor ウォッチ、バックグラウンドサブエージェントが含まれます。
コンテンツブロック型
ContentBlock
すべてのコンテンツブロックの Union 型。
TextBlock
テキストコンテンツブロック。
ThinkingBlock
思考コンテンツブロック(思考機能を持つモデル用)。
ToolUseBlock
ツール使用リクエストブロック。
ToolResultBlock
ツール実行結果ブロック。
エラー型
ClaudeSDKError
すべての SDK エラーの基本例外クラス。
CLINotFoundError
Claude Code CLI がインストールされていないか見つからない場合に発生します。
CLIConnectionError
Claude Code への接続に失敗した場合に発生します。
ProcessError
Claude Code プロセスが失敗した場合に発生します。
CLIJSONDecodeError
JSON 解析に失敗した場合に発生します。
Hook 型
hooks の使用に関する包括的なガイド、例、一般的なパターンについては、Hooks ガイド を参照してください。HookEvent
サポートされている hook イベント型。
TypeScript SDK は、Python ではまだ利用できない追加の hook イベントをサポートしています:
SessionStart、SessionEnd、Setup、TeammateIdle、TaskCompleted、ConfigChange、WorktreeCreate、WorktreeRemove、PostToolBatch、および MessageDisplay。HookCallback
hook コールバック関数の型定義。
input:hook_event_nameに基づいた判別 Union を持つ強く型付けされた hook 入力(HookInputを参照)tool_use_id:オプションのツール使用識別子(ツール関連の hook 用)context:追加情報を含む hook コンテキスト
HookJSONOutput を返します:
decision:アクションをブロックするには"block"systemMessage:ユーザーに表示される警告メッセージhookSpecificOutput:hook 固有の出力データ
HookContext
hook コールバックに渡されるコンテキスト情報。
HookMatcher
特定のイベントまたはツールに hook をマッチングするための設定。
HookInput
すべての hook 入力型の Union 型。実際の型は hook_event_name フィールドに依存します。
BaseHookInput
すべての hook 入力型に存在する基本フィールド。
PreToolUseHookInput
PreToolUse hook イベントの入力データ。
PostToolUseHookInput
PostToolUse hook イベントの入力データ。
PostToolUseFailureHookInput
PostToolUseFailure hook イベントの入力データ。ツール実行が失敗したときに呼び出されます。
UserPromptSubmitHookInput
UserPromptSubmit hook イベントの入力データ。
StopHookInput
Stop hook イベントの入力データ。
SubagentStopHookInput
SubagentStop hook イベントの入力データ。
PreCompactHookInput
PreCompact hook イベントの入力データ。
NotificationHookInput
Notification hook イベントの入力データ。
SubagentStartHookInput
SubagentStart hook イベントの入力データ。
PermissionRequestHookInput
PermissionRequest hook イベントの入力データ。hooks がパーミッション決定をプログラムで処理できるようにします。
HookJSONOutput
hook コールバック戻り値の Union 型。
SyncHookJSONOutput
制御フィールドと決定フィールドを持つ同期 hook 出力。
Python コードで
continue_(アンダースコア付き)を使用してください。CLI に送信されるときに自動的に continue に変換されます。HookSpecificOutput
hook イベント名とイベント固有のフィールドを含む TypedDict。形状は hookEventName 値に依存します。hook イベントごとに利用可能なフィールドの詳細については、hooks で実行を制御 を参照してください。
イベント固有の出力型の判別 union。hookEventName フィールドはどのフィールドが有効かを決定します。
AsyncHookJSONOutput
hook 実行を遅延させる非同期 hook 出力。
Python コードで
async_(アンダースコア付き)を使用してください。CLI に送信されるときに自動的に async に変換されます。Hook 使用例
この例は 2 つの hook を登録します:1 つはrm -rf / のような危険な bash コマンドをブロックし、もう 1 つは監査のためにすべてのツール使用をログします。セキュリティ hook は matcher を介して Bash コマンドでのみ実行され、ログ hook はすべてのツールで実行されます。
ツール入出力型
すべての組み込み Claude Code ツールの入出力スキーマのドキュメント。Python SDK はこれらを型としてエクスポートしませんが、メッセージ内のツール入出力の構造を表します。Agent
ツール名:Agent(以前は Task。これはまだエイリアスとして受け入れられます)
入力:
AskUserQuestion
ツール名:AskUserQuestion
実行中にユーザーに明確化の質問をします。使用の詳細については 承認とユーザー入力を処理 を参照してください。
入力:
Bash
ツール名:Bash
入力:
Monitor
ツール名:Monitor
バックグラウンドソースを実行し、各イベントを Claude に配信して、ポーリングなしで反応できるようにします。command はスクリプトを実行し、stdout 行ごとに 1 つのイベントを発行し、ws は WebSocket を開き、テキストフレームごとに 1 つのイベントを発行します。command または ws のいずれか 1 つを正確に指定してください。
Monitor がコマンドを実行する場合、Bash と同じパーミッションルールに従います。WebSocket ウォッチは別途承認を求めます。ws ソースには Claude Code v2.1.195 以降が必要です。動作とプロバイダーの可用性については、Monitor ツールリファレンス を参照してください。
入力:
Edit
ツール名:Edit
入力:
Read
ツール名:Read
入力:
Write
ツール名:Write
入力:
Glob
ツール名:Glob
入力:
Grep
ツール名:Grep
入力:
NotebookEdit
ツール名:NotebookEdit
入力:
WebFetch
ツール名:WebFetch
入力:
WebSearch
ツール名:WebSearch
入力:
TodoWrite
ツール名:TodoWrite
Claude Code v2.1.142 以降、
TodoWrite はデフォルトで無効になっています。代わりに TaskCreate、TaskGet、TaskUpdate、および TaskList を使用してください。Task ツールへの移行 を参照して監視コードを更新するか、CLAUDE_CODE_ENABLE_TASKS=0 を設定して TodoWrite に戻してください。TaskCreate
ツール名:TaskCreate
入力:
TaskUpdate
ツール名:TaskUpdate
入力:
TaskGet
ツール名:TaskGet
入力:
TaskList
ツール名:TaskList
入力:
BashOutput
ツール名:BashOutput
入力:
KillBash
ツール名:KillBash
入力:
ExitPlanMode
ツール名:ExitPlanMode
入力:
ListMcpResources
ツール名:ListMcpResourcesTool
入力:
ReadMcpResource
ツール名:ReadMcpResourceTool
入力:
ClaudeSDKClient を使用した高度な機能
継続的な会話インターフェースの構築
動作修正のための hooks の使用
リアルタイム進捗監視
使用例
基本的なファイル操作(query を使用)
エラー処理
クライアントでのストリーミングモード
ClaudeSDKClient でカスタムツールを使用する
サンドボックス設定
SandboxSettings
サンドボックス動作の設定。これを使用してコマンドサンドボックスを有効にし、ネットワーク制限をプログラムで設定します。
サンドボックスはプラットフォームサポートに依存し、Linux では
bubblewrap や socat などのツールが必要です。デフォルトでは、enabled が True でもサンドボックスが起動できない場合、コマンドはサンドボックスなしで実行され、stderr に警告が表示されます。このデフォルト動作は TypeScript SDK とは異なり、TypeScript SDK では failIfUnavailable がデフォルトで true です。サンドボックス設定で "failIfUnavailable": True を設定して、代わりに停止するようにしてください。このキーはまだ SandboxSettings で宣言されていませんが、SDK は Claude Code に転送し、Claude Code がこれを尊重します。その後、query() は subtype="error_during_execution" の ResultMessage を報告し、理由は errors に含まれます。query() がメッセージを生成する前に例外を発生させることを期待するのではなく、そのサブタイプを監視してください。使用例
SandboxNetworkConfig
サンドボックスモード用のネットワーク固有の設定。これらの設定は、親の SandboxSettings で enabled が True の場合、サンドボックス化された Bash コマンドに適用されます。WebFetch ツールには適用されず、WebFetch ツールは代わりに パーミッションルール を使用します。
組み込みサンドボックスプロキシは、リクエストされたホスト名に基づいてネットワーク許可リストを強制し、TLS トラフィックを終了または検査しないため、ドメインフロンティング などの技術がそれをバイパスする可能性があります。詳細は サンドボックスセキュリティの制限事項 を参照し、TLS 終了プロキシの設定については セキュアなデプロイ を参照してください。
SandboxIgnoreViolations
特定のサンドボックス違反を無視するための設定。
サンドボックスなしコマンドのパーミッションフォールバック
allowUnsandboxedCommands が有効な場合、モデルはツール入力で dangerouslyDisableSandbox: True を設定することでサンドボックスの外でコマンドを実行するようにリクエストできます。これらのリクエストは既存のパーミッションシステムにフォールバックします。つまり、can_use_tool ハンドラーが呼び出され、カスタム認可ロジックを実装できます。
excludedCommands vs allowUnsandboxedCommands:excludedCommands:常にサンドボックスを自動的にバイパスするコマンドの静的リスト(例:["docker"])。モデルはこれを制御できません。allowUnsandboxedCommands:モデルが実行時にツール入力でdangerouslyDisableSandbox: Trueを設定することでサンドボックスなし実行をリクエストすることを許可します。
- モデルリクエストを監査する:モデルがサンドボックスなし実行をリクエストするときをログします
- 許可リストを実装する:特定のコマンドのみがサンドボックスなしで実行されることを許可します
- 承認ワークフローを追加する:特権操作に明示的な認可を要求します
関連項目
- SDK 概要 - 一般的な SDK 概念
- TypeScript SDK リファレンス - TypeScript SDK ドキュメント
- CLI リファレンス - コマンドラインインターフェース
- 一般的なワークフロー - ステップバイステップガイド