Sandbox vs Tool Policy vs Elevated
OpenClaw має три пов’язані (але різні) механізми керування:- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) визначає, де запускаються інструменти (Docker чи хост). - Політика інструментів (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) визначає, які інструменти доступні/дозволені. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) — це лише для exec механізм обходу, щоб запускати поза sandbox, коли ви перебуваєте в sandbox (gatewayтипово абоnode, коли exec target налаштовано якnode).
Швидке налагодження
Використовуйте inspector, щоб побачити, що OpenClaw насправді робить:- ефективний режим/scope/workspace access sandbox
- чи сесія зараз працює в sandbox (main чи non-main)
- ефективний allow/deny інструментів sandbox (і чи походить він від agent/global/default)
- механізми elevated і ключі шляхів fix-it
Sandbox: де запускаються інструменти
Sandboxing керується черезagents.defaults.sandbox.mode:
"off": усе запускається на хості."non-main": у sandbox працюють лише не-main сесії (поширений “сюрприз” для groups/channels)."all": усе працює в sandbox.
Bind mounts (швидка перевірка безпеки)
docker.bindsпробиває файлову систему sandbox: усе, що ви монтуєте, стає видимим усередині контейнера з указаним режимом (:roабо:rw).- Якщо не вказати режим, типово використовується read-write; для source/secrets віддавайте перевагу
:ro. scope: "shared"ігнорує bind для кожного агента окремо (застосовуються лише глобальні bind).- OpenClaw двічі перевіряє джерела bind: спочатку на нормалізованому шляху джерела, потім ще раз після визначення через найглибший наявний батьківський каталог. Вихід через symlink-батьківський шлях не обходить перевірки blocked-path або allowed-root.
- Неіснуючі leaf-шляхи все одно безпечно перевіряються. Якщо
/workspace/alias-out/new-fileвизначається через symlink-батьківський каталог у заблокований шлях або поза межами налаштованих allowed roots, bind буде відхилено. - Монтування
/var/run/docker.sockфактично передає контроль над хостом у sandbox; робіть це лише свідомо. - Доступ до workspace (
workspaceAccess: "ro"/"rw") не залежить від режимів bind.
Політика інструментів: які інструменти існують/можна викликати
Важливі два рівні:- Профіль інструментів:
tools.profileіagents.list[].tools.profile(базовий allowlist) - Профіль інструментів провайдера:
tools.byProvider[provider].profileіagents.list[].tools.byProvider[provider].profile - Глобальна/для кожного агента окремо політика інструментів:
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.4).
Групи інструментів (скорочення)
Політики інструментів (глобальні, для агента, для sandbox) підтримують записиgroup:*, які розгортаються в кілька інструментів:
group:runtime:exec,process,code_execution(bashприймається як псевдонім дляexec)group:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,sessions_yield,subagents,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,x_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_listgroup:media:image,image_generate,video_generate,ttsgroup:openclaw: усі вбудовані інструменти OpenClaw (без provider plugins)
Elevated: механізм “запустити на хості” лише для exec
Elevated не надає додаткових інструментів; він впливає лише наexec.
- Якщо ви в sandbox,
/elevated on(абоexecзelevated: true) запускається поза sandbox (при цьому підтвердження можуть усе ще застосовуватися). - Використовуйте
/elevated full, щоб пропустити підтвердження exec для сесії. - Якщо ви вже працюєте напряму, elevated фактично нічого не змінює (але все одно керується механізмами доступу).
- Elevated не обмежується Skills і не перевизначає allow/deny інструментів.
- Elevated не надає довільних міжхостових перевизначень із
host=auto; він дотримується звичайних правил exec target і зберігаєnodeлише тоді, коли налаштований/сесійний target уже дорівнюєnode. /exec— це окремий механізм від elevated. Він лише налаштовує типові параметри exec для сесії для авторизованих відправників.
- Увімкнення:
tools.elevated.enabled(і, за потреби,agents.list[].tools.elevated.enabled) - Allowlist відправників:
tools.elevated.allowFrom.<provider>(і, за потреби,agents.list[].tools.elevated.allowFrom.<provider>)
Типові виправлення “sandbox jail"
"Tool X blocked by sandbox tool policy”
Ключі fix-it (виберіть один):- Вимкнути sandbox:
agents.defaults.sandbox.mode=off(або для конкретного агентаagents.list[].sandbox.mode=off) - Дозволити інструмент усередині sandbox:
- прибрати його з
tools.sandbox.tools.deny(або для конкретного агентаagents.list[].tools.sandbox.tools.deny) - або додати його до
tools.sandbox.tools.allow(або до allow для агента)
- прибрати його з
“I thought this was main, why is it sandboxed?”
У режимі"non-main" ключі group/channel не є main. Використовуйте ключ main session (його показує sandbox explain) або змініть режим на "off".
Див. також
- Sandboxing — повний довідник із sandbox (режими, scope, backend, images)
- Multi-Agent Sandbox & Tools — перевизначення для кожного агента окремо та пріоритетність
- Elevated Mode