権限ポリシー
エージェントツールとMCPツールがいつ実行されるかを制御します。
「permission policies」(権限ポリシー)は、サーバー側で実行されるツール(事前構築済みのエージェントツールセットおよびMCPツールセット)が自動的に実行されるか、承認を待つかを制御します。カスタムツールはアプリケーションによって実行され、ユーザー自身が制御するため、権限ポリシーの対象にはなりません。
権限ポリシーの種類
| ポリシー | 動作 |
|---|---|
always_allow | ツールは確認なしで自動的に実行されます。 |
always_ask | セッションは一時停止し、実行前に承認を待ちます。イベントフローについては確認リクエストに応答するを参照してください。 |
ツールセットの種類ごとに独自のデフォルトがあります。エージェントツールセットのデフォルトは always_allow、MCPツールセットのデフォルトは always_ask です。
権限ポリシーは、有効化されたツールがいつ実行されるかを制御します。ツールをエージェントから完全に取り除くには、代わりにそのツールを無効化してください。特定のツールを無効化するを参照してください。
ツールセットにポリシーを設定する
権限ポリシーは、エージェント作成時にエージェントの tools 設定で指定します。後からエージェントを更新することで変更することもできます。実行中のセッションは、作成時のツールセット設定を保持します。更新はその後に作成されたセッションに適用されます。
エージェントツールセットの権限
エージェントを作成する際、default_config.permission_policy を使用して agent_toolset_20260401 内のすべてのツールにポリシーを適用できます。
ant beta:agents create < agent.yamlname: Coding Assistant
model: claude-opus-5
tools:
- type: agent_toolset_20260401
default_config:
permission_policy:
type: always_askdefault_config は省略可能です。省略した場合、エージェントツールセットはデフォルトの権限ポリシーである always_allow で有効化されます。
MCPツールセットの権限
MCPツールセットのデフォルトは always_ask です。これにより、MCPサーバーに新しく追加されたツールが承認なしにアプリケーション内で実行されることを防ぎます。信頼できるMCPサーバーのツールを自動承認するには、mcp_toolset エントリに default_config.permission_policy を設定します。
mcp_server_name は、mcp_servers 配列内のサーバーの name と一致している必要があります。
次の例では、GitHub MCPサーバーに接続し、そのツールを確認なしで実行できるようにします。
ant beta:agents create < agent.yamlname: Dev Assistant
model: claude-opus-5
mcp_servers:
- type: url
name: github
url: https://mcp.example.com/github
tools:
- type: agent_toolset_20260401
- type: mcp_toolset
mcp_server_name: github
default_config:
permission_policy:
type: always_allow個別のツールポリシーを上書きする
configs 配列を使用して、個別のツールのデフォルトを上書きします。エージェントツールセットの name の値は利用可能なツールに記載されています。次の例では、デフォルトでエージェントツールセット全体を許可しますが、bashコマンドの実行前には確認を必須とします。
ant beta:agents create <<'YAML'
name: Coding Assistant
model: claude-opus-5
tools:
- type: agent_toolset_20260401
default_config:
permission_policy:
type: always_allow
configs:
- name: bash
permission_policy:
type: always_ask
YAMLこの tools 設定をエージェント作成リクエストで渡します(CLIタブに完全なコマンドが示されています)。MCPツールセットも同じツール単位の上書きをサポートしており、name にはMCPサーバーが報告するツール名を設定します。利用可能なMCPツールを設定するを参照してください。
確認リクエストに応答する
エージェントが always_ask ポリシーのツールを呼び出すと、次のようになります。
- セッションが
agent.tool_useまたはagent.mcp_tool_useイベントを発行します。 - セッションは、
stop_reason.typeがrequires_actionであるsession.status_idleイベントとともに一時停止します。ブロックしているイベントのIDはstop_reason.event_ids配列に含まれます。セッションは応答を無期限に待機します。 - ブロックしている各イベントに対して
user.tool_confirmationイベントを送信し、tool_use_idパラメータにイベントIDを渡します。resultを"allow"または"deny"に設定します。拒否の理由を説明するにはdeny_messageを使用します。1回のeventsリクエストで複数の確認を送信できます。 - ブロックしているすべてのイベントが解決されると、セッションは
runningに戻ります。許可されたツールは実行されます。拒否されたツールは実行されず、エージェントは呼び出しが拒否されたことを示すツール結果(deny_messageを含む)を受け取ります。
以下の例では、ツール使用イベントのIDは session.status_idle イベントの stop_reason.event_ids 配列から取得しています。イベントの受信について詳しくはセッションイベントストリームガイドを参照してください。また、セッションが入力待ちで一時停止したときに通知を受け取るにはWebhookをサブスクライブしてください。
# ツールの実行を許可する
ant beta:sessions:events send \
--session-id "$SESSION_ID" \
--event "{type: user.tool_confirmation, tool_use_id: $AGENT_TOOL_USE_EVENT_ID, result: allow}"
# または説明を付けて拒否する
ant beta:sessions:events send \
--session-id "$SESSION_ID" \
--event "{type: user.tool_confirmation, tool_use_id: $MCP_TOOL_USE_EVENT_ID, result: deny,
deny_message: Don't create issues in the production project. Use the staging project.}"カスタムツール
権限ポリシーはカスタムツールには適用されません。エージェントがカスタムツールを呼び出すと、アプリケーションは agent.custom_tool_use イベントを受け取り、user.custom_tool_result を返す前にそれを実行するかどうかを判断する責任を負います。完全なフローについてはセッションイベントストリームを参照してください。
次のステップ
ドメイン固有のワークフローのために、再利用可能なファイルシステムベースの専門知識をエージェントに付与します。
イベントの送信、レスポンスのストリーミング、実行中のセッションの中断やリダイレクトを行います。
Was this page helpful?