Gateway
Пісочниця, політика інструментів і підвищені права
OpenClaw має три пов’язані (але різні) елементи керування:
- Пісочниця (
agents.defaults.sandbox.*/agents.list[].sandbox.*) визначає, де запускаються інструменти (бекенд пісочниці чи хост). - Політика інструментів (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) визначає, які інструменти доступні/дозволені. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) — це аварійний вихід лише для exec, щоб запускати поза пісочницею, коли ви в пісочниці (gatewayза замовчуванням абоnode, коли ціль exec налаштована наnode).
Швидке налагодження
Використовуйте інспектор, щоб побачити, що OpenClaw насправді робить:
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
Він виводить:
- ефективний режим/область дії пісочниці/доступ до робочої області
- чи поточний сеанс зараз у пісочниці (main проти non-main)
- ефективні allow/deny для інструментів пісочниці (і чи походять вони від агента/глобальних налаштувань/типових значень)
- запобіжники elevated та шляхи ключів для виправлення
Пісочниця: де запускаються інструменти
Пісочниця керується через agents.defaults.sandbox.mode:
"off": усе запускається на хості."non-main": лише non-main сеанси запускаються в пісочниці (поширений "сюрприз" для груп/каналів)."all": усе запускається в пісочниці.
Див. Пісочниця для повної матриці (область дії, монтування робочої області, образи).
Bind-монтування (швидка перевірка безпеки)
docker.bindsпробиває файлову систему пісочниці: усе, що ви монтуєте, видно всередині контейнера з установленим вами режимом (:roабо:rw).- Якщо режим пропущено, типовим є читання-запис; для вихідного коду/секретів надавайте перевагу
:ro. scope: "shared"ігнорує bind-монтування для окремих агентів (застосовуються лише глобальні bind-монтування).- OpenClaw перевіряє джерела bind-монтувань двічі: спочатку нормалізований шлях джерела, потім ще раз після розв’язання через найглибшого наявного предка. Виходи через батьківські symlink не обходять перевірки заблокованих шляхів або дозволених коренів.
- Неіснуючі кінцеві шляхи все одно перевіряються безпечно. Якщо
/workspace/alias-out/new-fileрозв’язується через symlink-батька до заблокованого шляху або за межі налаштованих дозволених коренів, bind-монтування відхиляється. - Bind-монтування
/var/run/docker.sockфактично передає пісочниці контроль над хостом; робіть це лише свідомо. - Доступ до робочої області (
workspaceAccess: "ro"/"rw") не залежить від режимів bind-монтувань.
Політика інструментів: які інструменти існують/можуть викликатися
Важливі два рівні:
- Профіль інструментів:
tools.profileіagents.list[].tools.profile(базовий список дозволів) - Профіль інструментів провайдера:
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 - Політика інструментів пісочниці (застосовується лише в пісочниці):
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).
Групи інструментів (скорочення)
Політики інструментів (глобальні, агентні, пісочниці) підтримують записи group:*, які розгортаються в кілька інструментів:
{
tools: {
sandbox: {
tools: {
allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
},
},
},
}
Доступні групи:
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:heartbeat_respond,cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_list,update_plangroup:media:image,image_generate,music_generate,video_generate,ttsgroup:openclaw: усі вбудовані інструменти OpenClaw (крім Plugin-провайдерів)
Elevated: "запуск на хості" лише для exec
Elevated не надає додаткових інструментів; він впливає лише на exec.
- Якщо ви в пісочниці,
/elevated on(абоexecзelevated: true) запускає поза пісочницею (схвалення все ще можуть застосовуватися). - Використовуйте
/elevated full, щоб пропустити схвалення exec для сеансу. - Якщо ви вже запускаєте напряму, elevated фактично нічого не змінює (але все одно проходить через запобіжники).
- Elevated не обмежується Skills і не перевизначає allow/deny для інструментів.
- Elevated не надає довільних міжхостових перевизначень із
host=auto; він дотримується звичайних правил цілі exec і зберігаєnodeлише тоді, коли налаштована/сеансова ціль уже єnode. /execвідокремлений від elevated. Він лише коригує типові значення exec для сеансу авторизованих відправників.
Запобіжники:
- Увімкнення:
tools.elevated.enabled(і, за потреби,agents.list[].tools.elevated.enabled) - Списки дозволених відправників:
tools.elevated.allowFrom.<provider>(і, за потреби,agents.list[].tools.elevated.allowFrom.<provider>)
Див. Режим Elevated.
Поширені виправлення "ув’язнення в пісочниці"
"Tool X blocked by sandbox tool policy"
Ключі для виправлення (виберіть один):
- Вимкнути пісочницю:
agents.defaults.sandbox.mode=off(або для окремого агентаagents.list[].sandbox.mode=off) - Дозволити інструмент усередині пісочниці:
- вилучити його з
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" ключі груп/каналів не є main. Використовуйте ключ main-сеансу (показаний sandbox explain) або змініть режим на "off".
Пов’язане
- Пісочниця -- повний довідник пісочниці (режими, області дії, бекенди, образи)
- Пісочниця та інструменти для кількох агентів -- перевизначення й пріоритети для окремих агентів
- Режим Elevated