Песочница vs Политика инструментов vs Повышенные привилегии¶
В OpenClaw есть три связанных (но разных) механизма управления:
- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) определяет где запускаются инструменты (Docker или хост). - Tool policy (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) определяет какие инструменты доступны/разрешены. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) — это исключительно exec-механизм обхода, позволяющий запускаться на хосте при работе в sandbox.
Быстрая отладка¶
Используйте инспектор, чтобы увидеть, что OpenClaw фактически делает:
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
Он выводит:
- эффективный режим sandbox / область действия / доступ к рабочему пространству
- находится ли сеанс в данный момент в sandbox (main vs non-main)
- эффективный allow/deny инструментов sandbox (и откуда он пришёл: agent/global/default)
- шлюзы elevated и пути ключей «fix-it»
Sandbox: где запускаются инструменты¶
Sandboxing управляется ключом agents.defaults.sandbox.mode:
"off": всё выполняется на хосте."non-main": в sandbox попадают только non-main сеансы (частый «сюрприз» для групп/каналов)."all": всё выполняется в sandbox.
Полную матрицу (область действия, монтирование рабочих пространств, образы) см. в разделе Sandboxing.
Bind mounts (быстрая проверка безопасности)¶
docker.bindsпробивает файловую систему sandbox: всё, что вы монтируете, становится видимым внутри контейнера с указанным режимом (:roили:rw).- По умолчанию используется режим read-write, если режим не указан; для исходников/секретов предпочтительнее
:ro. scope: "shared"игнорирует per-agent монтирования (применяются только глобальные).- Монтирование
/var/run/docker.sockфактически передаёт контроль над хостом sandbox; делайте это только осознанно. - Доступ к рабочему пространству (
workspaceAccess: "ro"/"rw") не зависит от режимов bind.
Tool policy: какие инструменты существуют/могут вызываться¶
Два слоя имеют значение:
- Профиль инструментов:
tools.profileиagents.list[].tools.profile(базовый список разрешённых) - Профиль инструментов провайдера:
tools.byProvider[provider].profileиagents.list[].tools.byProvider[provider].profile - Глобальная/per-agent политика инструментов:
tools.allow/tools.denyиagents.list[].tools.allow/agents.list[].tools.deny - Политика инструментов провайдера:
tools.byProvider[provider].allow/denyиagents.list[].tools.byProvider[provider].allow/deny - Политика инструментов sandbox (применяется только при работе в sandbox):
tools.sandbox.tools.allow/tools.sandbox.tools.denyиagents.list[].tools.sandbox.tools.*
Практические правила:
denyвсегда имеет приоритет.- Если
allowне пуст, всё остальное считается заблокированным. - Политика инструментов — это жёсткая точка остановки:
/execне может переопределить запрещённый инструментexec. /execлишь меняет значения по умолчанию сеанса для авторизованных отправителей; доступ к инструментам он не предоставляет. Ключи инструментов провайдера принимают либоprovider(например,google-antigravity), либоprovider/model(например,openai/gpt-5.2).
Группы инструментов (сокращения)¶
Политики инструментов (global, agent, sandbox) поддерживают записи group:*, которые разворачиваются в несколько инструментов:
{
tools: {
sandbox: {
tools: {
allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
},
},
},
}
Доступные группы:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: все встроенные инструменты OpenClaw (исключая плагины провайдеров)
Elevated: exec-only «запуск на хосте»¶
Elevated не предоставляет дополнительных инструментов; он влияет только на exec.
- Если вы работаете в sandbox,
/elevated on(илиexecсelevated: true) выполняется на хосте (подтверждения всё ещё могут требоваться). - Используйте
/elevated full, чтобы пропустить подтверждения exec для сеанса. - Если вы уже работаете напрямую, elevated фактически является no-op (но всё равно проходит через шлюзы).
- Elevated не имеет привязки к Skills и не переопределяет allow/deny инструментов.
/execотделён от elevated. Он лишь настраивает per-session значения по умолчанию exec для авторизованных отправителей.
Шлюзы:
- Включение:
tools.elevated.enabled(и при необходимостиagents.list[].tools.elevated.enabled) - Allowlist отправителей:
tools.elevated.allowFrom.<provider>(и при необходимостиagents.list[].tools.elevated.allowFrom.<provider>)
См. Elevated Mode.
Распространённые исправления «sandbox jail»¶
«Инструмент X заблокирован политикой инструментов sandbox»¶
Ключи для исправления (выберите один):
- Отключить sandbox:
agents.defaults.sandbox.mode=off(или per-agentagents.list[].sandbox.mode=off) - Разрешить инструмент внутри sandbox:
- удалить его из
tools.sandbox.tools.deny(или per-agentagents.list[].tools.sandbox.tools.deny) - или добавить его в
tools.sandbox.tools.allow(или per-agent allow)
«Я думал, что это main — почему он в sandbox?»¶
В режиме "non-main" ключи групп/каналов не являются main. Используйте ключ main-сеанса (показывается в sandbox explain) или переключите режим на "off".