Sandbox vs Tool Policy vs Elevated
OpenClaw ma trzy powiązane (ale różne) mechanizmy kontroli:- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) decyduje gdzie uruchamiane są narzędzia (Docker vs host). - Polityka narzędzi (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) decyduje które narzędzia są dostępne/dozwolone. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) to wyłącznie dlaexecfurtka obejścia, aby uruchamiać poza sandboxem, gdy działasz w sandboxie (gatewaydomyślnie lubnode, gdy cel exec jest skonfigurowany jakonode).
Szybkie debugowanie
Użyj inspectora, aby zobaczyć, co OpenClaw faktycznie robi:- skuteczny tryb/zakres/dostęp do obszaru roboczego sandboxa
- czy sesja jest obecnie uruchomiona w sandboxie (main vs non-main)
- skuteczne allow/deny narzędzi sandboxa (oraz czy pochodzi z agenta/global/default)
- bramki elevated i ścieżki kluczy naprawczych
Sandbox: gdzie uruchamiane są narzędzia
Sandboxing jest kontrolowany przezagents.defaults.sandbox.mode:
"off": wszystko działa na hoście."non-main": tylko sesje inne niż main są uruchamiane w sandboxie (częsta „niespodzianka” dla grup/kanałów)."all": wszystko jest uruchamiane w sandboxie.
Bind mounts (szybka kontrola bezpieczeństwa)
docker.bindsprzebija system plików sandboxa: wszystko, co zamontujesz, będzie widoczne wewnątrz kontenera z ustawionym trybem (:rolub:rw).- Domyślnie używany jest tryb odczyt-zapis, jeśli pominiesz tryb; dla źródeł/sekretów preferuj
:ro. scope: "shared"ignoruje bindy per agent (stosowane są tylko bindy globalne).- OpenClaw weryfikuje źródła bindów dwa razy: najpierw na znormalizowanej ścieżce źródłowej, a potem ponownie po rozwiązaniu przez najgłębszego istniejącego przodka. Ucieczki przez rodzica będącego symlinkiem nie omijają kontroli ścieżek zablokowanych ani dozwolonych katalogów głównych.
- Nieistniejące ścieżki liści również są sprawdzane bezpiecznie. Jeśli
/workspace/alias-out/new-filerozwiązuje się przez rodzica będącego symlinkiem do zablokowanej ścieżki lub poza skonfigurowane dozwolone katalogi główne, bind zostanie odrzucony. - Podpięcie
/var/run/docker.sockskutecznie oddaje kontrolę nad hostem sandboxowi; rób to tylko świadomie. - Dostęp do obszaru roboczego (
workspaceAccess: "ro"/"rw") jest niezależny od trybów bindów.
Polityka narzędzi: które narzędzia istnieją/można wywołać
Znaczenie mają dwie warstwy:- Profil narzędzi:
tools.profileiagents.list[].tools.profile(bazowa allowlista) - Profil narzędzi dostawcy:
tools.byProvider[provider].profileiagents.list[].tools.byProvider[provider].profile - Globalna/per-agent polityka narzędzi:
tools.allow/tools.denyiagents.list[].tools.allow/agents.list[].tools.deny - Polityka narzędzi dostawcy:
tools.byProvider[provider].allow/denyiagents.list[].tools.byProvider[provider].allow/deny - Polityka narzędzi sandboxa (stosowana tylko w sandboxie):
tools.sandbox.tools.allow/tools.sandbox.tools.denyiagents.list[].tools.sandbox.tools.*
denyzawsze wygrywa.- Jeśli
allownie jest puste, wszystko inne jest traktowane jako zablokowane. - Polityka narzędzi to twarda blokada:
/execnie może nadpisać zablokowanego narzędziaexec. /execzmienia tylko domyślne ustawienia sesji dla autoryzowanych nadawców; nie przyznaje dostępu do narzędzi. Klucze narzędzi dostawców akceptująprovider(np.google-antigravity) alboprovider/model(np.openai/gpt-5.4).
Grupy narzędzi (skróty)
Polityki narzędzi (globalne, agenta, sandboxa) obsługują wpisygroup:*, które rozwijają się do wielu narzędzi:
group:runtime:exec,process,code_execution(bashjest akceptowany jako alias dlaexec)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,ttsgroup:openclaw: wszystkie wbudowane narzędzia OpenClaw (bez pluginów dostawców)
Elevated: tylko dla exec „uruchom na hoście”
Elevated nie przyznaje dodatkowych narzędzi; wpływa tylko na exec.
- Jeśli działasz w sandboxie,
/elevated on(lubexeczelevated: true) uruchamia poza sandboxem (nadal mogą obowiązywać zgody). - Użyj
/elevated full, aby pominąć zgody exec dla sesji. - Jeśli już działasz bezpośrednio, elevated jest w praktyce no-opem (nadal objętym bramkami).
- Elevated nie jest ograniczone do Skills i nie nadpisuje allow/deny narzędzi.
- Elevated nie przyznaje arbitralnych nadpisań między hostami z
host=auto; stosuje zwykłe reguły celu exec i zachowujenodetylko wtedy, gdy skonfigurowany/czasowy cel sesji to jużnode. /execjest oddzielne od elevated. Zmienia tylko domyślne ustawienia exec per sesja dla autoryzowanych nadawców.
- Włączenie:
tools.elevated.enabled(oraz opcjonalnieagents.list[].tools.elevated.enabled) - Allowlisty nadawców:
tools.elevated.allowFrom.<provider>(oraz opcjonalnieagents.list[].tools.elevated.allowFrom.<provider>)
Typowe poprawki dla „więzienia sandboxa”
„Narzędzie X zablokowane przez politykę narzędzi sandboxa”
Klucze naprawcze (wybierz jeden):- Wyłącz sandbox:
agents.defaults.sandbox.mode=off(lub per agentagents.list[].sandbox.mode=off) - Zezwól na narzędzie wewnątrz sandboxa:
- usuń je z
tools.sandbox.tools.deny(lub per agentagents.list[].tools.sandbox.tools.deny) - albo dodaj je do
tools.sandbox.tools.allow(lub allow per agent)
- usuń je z
„Myślałem, że to main, dlaczego jest w sandboxie?”
W trybie"non-main" klucze grup/kanałów nie są main. Użyj klucza sesji main (pokazywanego przez sandbox explain) albo przełącz tryb na "off".
Zobacz też
- Sandboxing — pełna dokumentacja sandboxa (tryby, zakresy, backendy, obrazy)
- Multi-Agent Sandbox & Tools — nadpisania per agent i priorytety
- Elevated Mode