Sandbox проти політики інструментів проти підвищеного виконання
OpenClaw має три пов’язані (але різні) механізми керування:- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) визначає, де запускаються інструменти (бекенд sandbox чи хост). - Політика інструментів (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) визначає, які інструменти доступні/дозволені. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) — це лише для exec аварійний обхід для запуску поза sandbox, коли ви працюєте в sandbox (gatewayза замовчуванням абоnode, якщо ціль exec налаштована наnode).
Швидка діагностика
Використовуйте інспектор, щоб побачити, що OpenClaw насправді робить:- ефективний режим/область sandbox/доступ до робочого простору
- чи сесія зараз працює в sandbox (main проти non-main)
- ефективні правила allow/deny для інструментів у sandbox (і чи вони надійшли від агента/глобально/за замовчуванням)
- шлюзи elevated і шляхи ключів для виправлення
Sandbox: де запускаються інструменти
Робота sandbox керується черезagents.defaults.sandbox.mode:
"off": усе запускається на хості."non-main": у sandbox запускаються лише non-main сесії (типовий «сюрприз» для груп/каналів)."all": у sandbox запускається все.
Bind mounts (швидка перевірка безпеки)
docker.bindsпрориває файлову систему sandbox: усе, що ви змонтуєте, буде видиме всередині контейнера з указаним режимом (:roабо:rw).- За замовчуванням використовується читання-запис, якщо режим не вказано; для вихідного коду/секретів краще використовувати
:ro. scope: "shared"ігнорує bind-монтування для окремих агентів (застосовуються лише глобальні bind-монтування).- OpenClaw двічі перевіряє джерела bind-монтувань: спочатку на нормалізованому шляху джерела, а потім повторно після розв’язання через найглибший наявний батьківський каталог. Обхід через батьківські symlink не дозволяє обійти перевірки заблокованих шляхів або дозволених коренів.
- Навіть неіснуючі кінцеві шляхи все одно безпечно перевіряються. Якщо
/workspace/alias-out/new-fileрозв’язується через symlink-батьківський каталог у заблокований шлях або за межі налаштованих дозволених коренів, bind-монтування буде відхилено. - Монтування
/var/run/docker.sockфактично передає керування хостом sandbox; робіть це лише свідомо. - Доступ до робочого простору (
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 - Політика інструментів 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 (не включає Plugin провайдерів)
Elevated: exec-only «запуск на хості»
Elevated не надає додаткових інструментів; він впливає лише наexec.
- Якщо ви в sandbox,
/elevated on(абоexecзelevated: true) запускає виконання поза sandbox (схвалення все одно можуть застосовуватися). - Використовуйте
/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>)
Типові виправлення «sandbox jail»
«Інструмент X заблоковано політикою інструментів sandbox»
Ключі для виправлення (виберіть один):- Вимкнути 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 для окремого агента)
- видалити його з
«Я думав, що це main, чому воно в sandbox?»
У режимі"non-main" ключі груп/каналів не є main. Використовуйте ключ main-сесії (показується через sandbox explain) або перемкніть режим на "off".
Див. також
- Sandboxing — повний довідник із sandbox (режими, області, бекенди, образи)
- Multi-Agent Sandbox & Tools — перевизначення для окремих агентів і пріоритетність
- Elevated Mode