Песочница 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 фактически делает:- эффективный режим 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.
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:*, которые разворачиваются в несколько инструментов:
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>)
Распространённые исправления «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".