Политики разрешений контролируют, выполняются ли инструменты, выполняемые сервером (встроенный набор инструментов агента и набор инструментов MCP), автоматически или ждут вашего одобрения. Пользовательские инструменты выполняются вашим приложением и контролируются вами, поэтому они не подпадают под политики разрешений.
Все запросы Managed Agents API требуют заголовка бета-версии managed-agents-2026-04-01. SDK автоматически устанавливает заголовок бета-версии.
| Политика | Поведение |
|---|---|
always_allow | Инструмент выполняется автоматически без подтверждения. |
always_ask | Сеанс выдает событие session.status_idle и ждет события user.tool_confirmation перед выполнением. |
При создании агента вы можете опционально применить политику ко всем инструментам в agent_toolset_20260401, используя default_config.permission_policy:
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, установите permission_policy в записи mcp_toolset.
mcp_server_name должно совпадать с name, на которое ссылается массив mcp_servers.
Этот пример подключает сервер GitHub MCP и позволяет его инструментам работать без подтверждения:
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
YAMLИспользуйте массив configs для переопределения значения по умолчанию для отдельных инструментов. Этот пример позволяет полному набору инструментов агента работать по умолчанию, но требует подтверждения перед выполнением любой команды bash:
tools = [
{
"type": "agent_toolset_20260401",
"default_config": {
"permission_policy": {"type": "always_allow"},
},
"configs": [
{
"name": "bash",
"permission_policy": {"type": "always_ask"},
},
],
},
]Когда агент вызывает инструмент с политикой always_ask:
agent.tool_use или agent.mcp_tool_use.session.status_idle, содержащим stop_reason: requires_action. Идентификаторы блокирующих событий находятся в массиве stop_reason.requires_action.event_ids.user.tool_confirmation для каждого, передав идентификатор события в параметр tool_use_id. Установите result на "allow" или "deny". Используйте deny_message для объяснения отказа.running.Узнайте больше об обработке событий в руководстве поток событий сеанса.
# Allow the tool to execute
client.beta.sessions.events.send(
session.id,
events=[
{
"type": "user.tool_confirmation",
"tool_use_id": agent_tool_use_event.id,
"result": "allow",
},
],
)
# Or deny it with an explanation
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.",
},
],
)Политики разрешений не применяются к пользовательским инструментам. Когда агент вызывает пользовательский инструмент, ваше приложение получает событие agent.custom_tool_use и несет ответственность за решение о его выполнении перед отправкой user.custom_tool_result. Полный процесс см. в разделе Поток событий сеанса.
Was this page helpful?