Was this page helpful?
権限ポリシーは、サーバー実行ツール(事前構築されたエージェントツールセットとMCPツールセット)が自動的に実行されるか、承認を待つかを制御します。カスタムツールはアプリケーションによって実行され、ユーザーによって制御されるため、権限ポリシーの対象ではありません。
すべてのManaged Agents APIリクエストには、managed-agents-2026-04-01ベータヘッダーが必要です。SDKはベータヘッダーを自動的に設定します。
| ポリシー | 動作 |
|---|---|
always_allow | ツールは確認なしで自動的に実行されます。 |
always_ask | セッションはsession.status_idleイベントを発行し、実行前にuser.tool_confirmationイベントを待ちます。 |
エージェントを作成する際、default_config.permission_policyを使用して、agent_toolset_20260401内のすべてのツールにポリシーを適用することができます。
ant beta:agents create <<'YAML'
name: Coding Assistant
model: claude-opus-4-7
tools:
- type: agent_toolset_20260401
default_config:
permission_policy:
type: always_ask
YAMLdefault_configはオプション設定です。これを省略した場合、エージェントツールセットはデフォルトの権限ポリシーであるalways_allowで有効になります。
MCPツールセットはデフォルトでalways_askです。これにより、MCPサーバーに追加された新しいツールがアプリケーションで承認なしに実行されないようになります。信頼できるMCPサーバーからのツールを自動承認するには、mcp_toolsetエントリでpermission_policyを設定します。
mcp_server_nameは、mcp_servers配列で参照されるnameと一致する必要があります。
この例は、GitHub MCPサーバーを接続し、そのツールが確認なしで実行されるようにします。
configs配列を使用して、個別ツールのデフォルトをオーバーライドします。この例では、エージェントツールセット全体をデフォルトで許可しますが、bashコマンドが実行される前に確認が必要です。
エージェントがalways_askポリシーでツールを呼び出す場合:
agent.tool_useまたはagent.mcp_tool_useイベントを発行します。session.status_idleイベントで一時停止し、stop_reason: requires_actionが含まれます。ブロッキングイベントIDはstop_reason.requires_action.event_ids配列にあります。user.tool_confirmationイベントを送信し、tool_use_idパラメータでイベントIDを渡します。resultを"allow"または"deny"に設定します。deny_messageを使用して拒否の理由を説明します。runningに戻ります。イベント処理の詳細については、セッションイベントストリームガイドを参照してください。
権限ポリシーはカスタムツールには適用されません。エージェントがカスタムツールを呼び出すと、アプリケーションはagent.custom_tool_useイベントを受け取り、user.custom_tool_resultを送信する前に実行するかどうかを決定する責任があります。完全なフローについては、セッションイベントストリームを参照してください。
ant beta:agents create <<'YAML'
name: Dev Assistant
model: claude-opus-4-7
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
YAMLtools = [
{
"type": "agent_toolset_20260401",
"default_config": {
"permission_policy": {"type": "always_allow"},
},
"configs": [
{
"name": "bash",
"permission_policy": {"type": "always_ask"},
},
],
},
]# ツールの実行を許可する
client.beta.sessions.events.send(
session.id,
events=[
{
"type": "user.tool_confirmation",
"tool_use_id": agent_tool_use_event.id,
"result": "allow",
},
],
)
# または説明付きで拒否する
client.beta.sessions.events.send(
session.id,
events=[
{
"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.",
},
],
)