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

インストール

仮想環境にパッケージをインストールしてください。最近の Debian、Ubuntu、Homebrew Python インストールでは、システム Python に対して pip install を実行すると error: externally-managed-environment で失敗します。
uv、Windows PowerShell、API キーのセットアップについては、Agent SDK 概要の「Get started」セクションを参照してください。

query()ClaudeSDKClient の選択

Python SDK は Claude Code と対話するための 2 つの方法を提供します。

クイック比較

query() を使用する場合(1 回限りのタスク)

最適な用途:
  • 会話履歴が不要な 1 回限りの質問
  • 前の交換からのコンテキストが不要な独立したタスク
  • シンプルな自動化スクリプト
  • 毎回新しく開始したい場合

ClaudeSDKClient を使用する場合(継続的な会話)

最適な用途:
  • 会話を続ける - Claude がコンテキストを記憶する必要がある場合
  • フォローアップ質問 - 前の回答に基づいて構築する
  • インタラクティブなアプリケーション - チャットインターフェース、REPL
  • 応答駆動ロジック - 次のアクションが Claude の応答に依存する場合
  • セッション制御 - 会話ライフサイクルを明示的に管理する

関数

query()

Claude Code との各インタラクションのために新しいセッションを作成します。デフォルトでは、メッセージが到着するにつれて生成される非同期イテレータを返します。query() への各呼び出しは、continue_conversation=True または ClaudeAgentOptionsresume を渡さない限り、前のインタラクションのメモリなしで新しく開始します。セッション を参照してください。

パラメータ

戻り値

会話からのメッセージを生成する AsyncIterator[Message] を返します。

例 - オプション付き

tool()

型安全性を備えた MCP ツールを定義するためのデコレータ。

パラメータ

入力スキーマオプション

  1. シンプルな型マッピング(推奨):
  2. 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 で装飾されたクラス(ResultMessageAgentDefinitionTextBlock など)は実行時にオブジェクトインスタンスであり、属性アクセスをサポートします:msg.resultTypedDict で定義されたクラス(ThinkingConfigEnabledMcpStdioServerConfigSyncHookJSONOutput など)は実行時にプレーンな dict であり、キーアクセスが必要です:config["budget_tokens"]config.budget_tokens ではなく。ClassName(field=value) 呼び出し構文は両方で機能しますが、dataclass のみが属性を持つオブジェクトを生成します。

SdkMcpTool

@tool デコレータで作成された SDK MCP ツールの定義。

Transport

カスタムトランスポート実装の抽象基本クラス。これを使用して、カスタムチャネル(例:ローカルサブプロセスの代わりにリモート接続)を介して Claude プロセスと通信します。
これは低レベルの内部 API です。インターフェースは将来のリリースで変更される可能性があります。カスタム実装は、インターフェースの変更に合わせて更新する必要があります。
インポート: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_MSrun_in_background で起動されたサブエージェント用の停止ウォッチドッグ。デフォルト 600000。各ストリームイベントでリセットされます。停止時にサブエージェントを中止し、タスクを失敗とマークし、部分的な結果を含むエラーを親に表示します。同期サブエージェントには適用されません。
  • CLAUDE_ENABLE_STREAM_WATCHDOGCLAUDE_STREAM_IDLE_TIMEOUT_MS:ヘッダーが到着したがレスポンスボディがストリーミングを停止したときにリクエストを中止します。ウォッチドッグはすべてのプロバイダーでデフォルトで有効です。CLAUDE_ENABLE_STREAM_WATCHDOG=0 を設定して無効にします。CLAUDE_STREAM_IDLE_TIMEOUT_MS はデフォルト 300000 で、その最小値にクランプされます。中止されたリクエストは通常のリトライパスを通ります。

OutputFormat

構造化出力検証の設定。これを ClaudeAgentOptionsoutput_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 は影響を受けません。
すべてのファイルシステム設定を明示的に読み込む:
特定の設定ソースのみを読み込む:
テストと CI 環境:
SDK のみのアプリケーション:
CLAUDE.md プロジェクト指示を読み込む:

設定の優先順位

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

AgentDefinition

プログラムで定義されたサブエージェントの設定。
AgentDefinition フィールド名は disallowedToolspermissionModemaxTurns などの camelCase を使用します。これらの名前は TypeScript SDK と共有される wire 形式に直接マップされます。これは disallowed_toolspermission_mode などの同等のトップレベルフィールドに Python snake_case を使用する ClaudeAgentOptions とは異なります。AgentDefinition は dataclass であるため、snake_case キーワードを渡すと構築時に TypeError が発生します。

PermissionMode

ツール実行を制御するためのパーミッションモード。

EffortLevel

思考の深さを導くための努力レベル。

CanUseTool

ツールパーミッションコールバック関数の型エイリアス。
コールバックは以下を受け取ります:
  • tool_name:呼び出されるツールの名前
  • input_data:ツールの入力パラメータ
  • context:追加情報を含む ToolPermissionContext
PermissionResultPermissionResultAllow または PermissionResultDeny)を返します。 コールバックは対話的なパーミッションプロンプトの SDK 置き換えです:パーミッション評価フロー がプロンプトに解決される場合にのみ呼び出されます。allowed_tools エントリ、設定許可ルール、または acceptEditsbypassPermissions などのパーミッションモードによって事前承認されたツール呼び出しは呼び出されません。すべてのツール呼び出しをゲートするには、代わりに PreToolUse hook を使用してください。 AskUserQuestionrequiresUserInteraction とマークされた 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 型。
ClaudeAgentOptionsbetas フィールドで使用してベータ機能を有効にします。
context-1m-2025-08-07 ベータは 2026 年 4 月 30 日時点で廃止されました。このヘッダーを Claude Sonnet 4.5 または Sonnet 4 で渡すと効果がなく、標準の 200k トークンコンテキストウィンドウを超えるリクエストはエラーを返します。1M トークンコンテキストウィンドウを使用するには、Claude Sonnet 5、Claude Sonnet 4.6、Claude Opus 4.6、Claude Opus 4.7、または Claude Opus 4.8 に移行してください。これらには、ベータヘッダーなしで標準価格で 1M コンテキストが含まれます。

McpSdkServerConfig

create_sdk_mcp_server() で作成された SDK MCP サーバーの設定。

McpServerConfig

MCP サーバー設定の Union 型。

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpServerStatusConfig

get_mcp_status() によって報告される MCP サーバーの設定。これは、すべての McpServerConfig トランスポートバリアント、および claude.ai を通じてプロキシされるサーバー用の出力のみの claudeai-proxy バリアントの Union です。
McpSdkServerConfigStatusMcpSdkServerConfig のシリアライズ可能な形式で、type"sdk")と namestr)フィールドのみです。インプロセス instance は省略されます。McpClaudeAIProxyServerConfig には type"claudeai-proxy")、urlstr)、idstr)フィールドがあります。

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:会話がエラー状態で終了した場合は Trueerror_* サブタイプでは常に Truesubtype="success" では、最終モデルリクエストが失敗した場合は True。つまり、エージェントループが完了しましたが、最後の API 呼び出しがエラーを返しました。
  • api_error_status:終了する API エラーの HTTP ステータスコード。ターンがエラーなしで終了した場合は Nonesubtype="success" でのみ入力されます。
  • resultsubtype="success" での最終アシスタントメッセージのテキスト、または error_* サブタイプでは Nonesubtype="success"is_error=True の場合、これは利用可能な場合は API エラー文字列を保持しますが、空の場合もあるため、api_error_status と前の AssistantMessage コンテンツで詳細を確認してください。
  • errors:最大ターンメッセージなどのループレベルのエラー文字列。error_* サブタイプでのみ入力されます。
usage dict には、存在する場合、以下のキーが含まれます: model_usage dict はモデル名をモデルごとの使用状況にマップします。内部 dict キーは camelCase を使用します。これは、基になる CLI プロセスから変更されずに渡される値であり、TypeScript ModelUsage 型と一致するためです:

StreamEvent

ストリーミング中の部分的なメッセージ更新のためのストリームイベント。ClaudeAgentOptionsinclude_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 イベントをサポートしています:SessionStartSessionEndSetupTeammateIdleTaskCompletedConfigChangeWorktreeCreateWorktreeRemovePostToolBatch、および MessageDisplay

HookCallback

hook コールバック関数の型定義。
パラメータ:
  • inputhook_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 入力:
出力(content モード):
出力(files_with_matches モード):

NotebookEdit

ツール名: NotebookEdit 入力:
出力:

WebFetch

ツール名: WebFetch 入力:
出力:

WebSearch

ツール名: WebSearch 入力:
出力:

TodoWrite

ツール名: TodoWrite
Claude Code v2.1.142 以降、TodoWrite はデフォルトで無効になっています。代わりに TaskCreateTaskGetTaskUpdate、および 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 では bubblewrapsocat などのツールが必要です。デフォルトでは、enabledTrue でもサンドボックスが起動できない場合、コマンドはサンドボックスなしで実行され、stderr に警告が表示されます。このデフォルト動作は TypeScript SDK とは異なり、TypeScript SDK では failIfUnavailable がデフォルトで true です。サンドボックス設定で "failIfUnavailable": True を設定して、代わりに停止するようにしてください。このキーはまだ SandboxSettings で宣言されていませんが、SDK は Claude Code に転送し、Claude Code がこれを尊重します。その後、query()subtype="error_during_execution"ResultMessage を報告し、理由は errors に含まれます。query() がメッセージを生成する前に例外を発生させることを期待するのではなく、そのサブタイプを監視してください。

使用例

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

SandboxNetworkConfig

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

SandboxIgnoreViolations

特定のサンドボックス違反を無視するための設定。

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

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

関連項目