allow、ask、deny のいずれかとして評価されます。クライアントサイドのカスタムツールは常に一時停止し、アプリケーションが実行して結果を返します。
ランタイムの挙動
ツール呼び出しがイベントストリームに送出される際の挙動:| イベント | 意味 | 主要フィールド |
|---|---|---|
agent.tool_use | 組み込みツール呼び出し | id, name, input, evaluated_permission |
agent.mcp_tool_use | MCP ツール呼び出し | id, name, input, mcp_server_name, evaluated_permission |
agent.custom_tool_use | クライアントサイドのカスタムツールリクエスト | id, name, input |
evaluated_permission の値:
| 値 | 挙動 |
|---|---|
allow | プラットフォームがツールを直接実行 |
ask | ターンが一時停止し、user.tool_confirmation を待機 |
deny | プラットフォームが拒否されたツール結果を Agent に返却 |
permission_policy をサポートしません。クライアント側で実行し、user.custom_tool_result で応答してください。
Agent でのポリシー設定
組み込みツールと MCP ツールの権限は、Agent のtools 配列で構成します:
| 設定箇所 | 対象 | 説明 |
|---|---|---|
tools[].configs[].permission_policy | 個別のツール | ツールごとのオーバーライド。組み込みツールの場合 name は Read などの組み込みツール名、MCP ツールの場合は MCP サーバーが公開するツール名 |
tools[].configs[].enabled | 個別のツール | false に設定してツールを無効化・拒否。enabled_tools を使用している場合は、無効化するツールをホワイトリストから除外 |
permission_policy.type の値:
| 値 | ランタイム結果 |
|---|---|
always_allow | evaluated_permission: "allow" |
always_ask | evaluated_permission: "ask" となり、ターンは user.tool_confirmation を待機 |
always_deny | evaluated_permission: "deny" |
Pending Action フロー
ツール呼び出しに人間またはクライアントの入力が必要な場合:- ストリームが
agent.tool_useまたはagent.custom_tool_useを送出 - ストリームが
session.status_idle(stop_reason.type: "requires_action")を送出 stop_reason.event_idsに応答が必要なイベント ID が列挙される- クライアントが
POST /v1/sessions/{session_id}/eventsに応答イベントを送信 - Agent が同じターンを続行
ツール呼び出しの確認
agent.tool_use イベントの id を tool_use_id として使用します。これは evt_... 形式のイベント ID であり、モデルプロバイダー内部のツール使用 ID ではありません。
- 承認
- 拒否
カスタムツールの完了
カスタムツールは Agent のtype: "custom" で構成します。詳細は Agent ツール を参照してください。Agent がカスタムツールをリクエストした場合、アプリケーション側で実行し、agent.custom_tool_use のイベント ID を使って応答します:
content の値は文字列、単一のテキストブロック、またはテキストブロックの配列で指定できます。返されたイベントはコンテンツブロック形式で格納されます。
よくある質問
Q: 1 つのターンで複数の応答が必要になることはありますか? A: あります。stop_reason.event_ids に複数のイベント ID が含まれる場合があります。保留中の各ツールリクエストに応答してください。
Q: Pending Action にタイムアウトはありますか? A: ありません。応答されるか、セッション/ターンがキャンセルされるまで保留状態が維持されます。
Q: カスタムツールに permission_policy を使用できますか? A: できません。カスタムツールはクライアントサイドで実行されるため、実行の可否はクライアントが判断します。
次のステップ
Agent ツール
組み込み、MCP、カスタムツールを構成する。
Session イベントストリーム
agent.tool_use と確認イベントを購読する。Session の開始
実行中のターンでツール確認を行う。
Agent の定義
tools と configs を含む Agent 構成全体のおさらい。