Sandbox vs polityka narzędzi vs podniesione uprawnienia
OpenClaw ma trzy powiązane (ale różne) mechanizmy kontroli:- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) decyduje gdzie uruchamiane są narzędzia (backend sandbox vs host). - Polityka narzędzi (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) decyduje które narzędzia są dostępne/dozwolone. - Podniesione uprawnienia (
tools.elevated.*,agents.list[].tools.elevated.*) to mechanizm ucieczki tylko dla exec, pozwalający uruchamiać poza sandboxem, gdy działasz w sandboxie (gatewaydomyślnie albonode, gdy cel exec jest skonfigurowany jakonode).
Szybkie debugowanie
Użyj inspektora, aby zobaczyć, co OpenClaw naprawdę robi:- efektywny tryb/zakres sandbox i dostęp do workspace
- czy sesja jest obecnie w sandboxie (main vs non-main)
- efektywną politykę allow/deny narzędzi sandboxa (oraz skąd pochodzi: agent/global/default)
- bramki podniesionych uprawnień i ścieżki kluczy do naprawy
Sandbox: gdzie uruchamiane są narzędzia
Sandboxing jest kontrolowany przezagents.defaults.sandbox.mode:
"off": wszystko działa na hoście."non-main": tylko sesje non-main są objęte sandboxem (częste „zaskoczenie” dla grup/kanałów)."all": wszystko jest w sandboxie.
Bind mounts (szybka kontrola bezpieczeństwa)
docker.bindsprzebija system plików sandboxa: wszystko, co zamontujesz, jest widoczne wewnątrz kontenera z ustawionym trybem (:rolub:rw).- Domyślnie jest to odczyt-zapis, jeśli pominiesz tryb; dla źródeł/sekretów preferuj
:ro. scope: "shared"ignoruje bindy per agent (obowiązują tylko bindy globalne).- OpenClaw sprawdza ź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 zablokowanych ścieżek ani dozwolonych katalogów głównych.
- Nieistniejące ścieżki końcowe też są bezpiecznie sprawdzane. Jeśli
/workspace/alias-out/new-filerozwiązuje się przez rodzica będącego symlinkiem do zablokowanej ścieżki albo poza skonfigurowanymi dozwolonymi katalogami głównymi, bind zostanie odrzucony. - Zamontowanie
/var/run/docker.sockw praktyce oddaje kontrolę nad hostem sandboxowi; rób to tylko celowo. - Dostęp do workspace (
workspaceAccess: "ro"/"rw") jest niezależny od trybów bindów.
Polityka narzędzi: które narzędzia istnieją/mogą być wywoływane
Istotne są dwie warstwy:- Profil narzędzi:
tools.profileiagents.list[].tools.profile(bazowa lista dozwolonych) - Profil narzędzi providera:
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 providera:
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 nadaje dostępu do narzędzi. Klucze narzędzi providera akceptują alboprovider(np.google-antigravity), alboprovider/model(np.openai/gpt-5.4).
Grupy narzędzi (skróty)
Polityki narzędzi (globalne, per agent, sandbox) 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,video_generate,ttsgroup:openclaw: wszystkie wbudowane narzędzia OpenClaw (z wyłączeniem pluginów providerów)
Podniesione uprawnienia: tylko dla exec „uruchom na hoście”
Podniesione uprawnienia nie nadają dodatkowych narzędzi; wpływają tylko naexec.
- Jeśli działasz w sandboxie,
/elevated on(alboexeczelevated: true) uruchamia poza sandboxem (zatwierdzenia nadal mogą obowiązywać). - Użyj
/elevated full, aby pominąć zatwierdzenia exec dla sesji. - Jeśli już działasz bezpośrednio, podniesione uprawnienia są w praktyce no-opem (nadal objętym bramkami).
- Podniesione uprawnienia nie są ograniczane do Skills i nie nadpisują
allow/denydla narzędzi. - Podniesione uprawnienia nie dają arbitralnych nadpisań między hostami z
host=auto; stosują normalne reguły celu exec i zachowująnodetylko wtedy, gdy skonfigurowany/docelowy cel sesji już jestnode. /execjest oddzielne od podniesionych uprawnień. Dostosowuje tylko domyślne ustawienia exec per sesja dla autoryzowanych nadawców.
- Włączenie:
tools.elevated.enabled(i opcjonalnieagents.list[].tools.elevated.enabled) - Listy dozwolonych nadawców:
tools.elevated.allowFrom.<provider>(i opcjonalnieagents.list[].tools.elevated.allowFrom.<provider>)
Typowe poprawki „więzienia sandboxa”
„Narzędzie X zablokowane przez politykę narzędzi sandboxa”
Klucze naprawcze (wybierz jeden):- Wyłącz sandbox:
agents.defaults.sandbox.mode=off(albo per agentagents.list[].sandbox.mode=off) - Zezwól na narzędzie w sandboxie:
- usuń je z
tools.sandbox.tools.deny(albo per agentagents.list[].tools.sandbox.tools.deny) - albo dodaj do
tools.sandbox.tools.allow(albo do listy 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 (pokazanego przez sandbox explain) albo zmień tryb na "off".
Zobacz także
- Sandboxing — pełne odniesienie do sandboxa (tryby, zakresy, backendy, obrazy)
- Multi-Agent Sandbox & Tools — nadpisania per agent i priorytety
- Tryb podniesionych uprawnień