Gateway
Sandbox kontra zasady narzędzi kontra podwyższone uprawnienia
OpenClaw ma trzy powiązane (ale różne) mechanizmy sterowania:
- Piaskownica (
agents.defaults.sandbox.*/agents.list[].sandbox.*) decyduje, gdzie działają narzędzia (backend piaskownicy albo host). - Zasady narzędzi (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) decydują, które narzędzia są dostępne/dozwolone. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) to wyjście awaryjne tylko dlaexec, pozwalające działać poza piaskownicą, gdy sesja jest w piaskownicy (domyślniegateway, albonode, gdy celexecjest skonfigurowany jakonode).
Szybkie debugowanie
Użyj inspektora, aby zobaczyć, co OpenClaw faktycznie robi:
openclaw sandbox explainopenclaw sandbox explain --session agent:main:mainopenclaw sandbox explain --agent workopenclaw sandbox explain --jsonWypisuje on:
- efektywny tryb/zakres piaskownicy oraz dostęp do workspace
- czy sesja jest obecnie w piaskownicy (main kontra non-main)
- efektywne zezwolenia/blokady narzędzi piaskownicy (i czy pochodzą z agenta/globalnych ustawień/domyślnych ustawień)
- bramki Elevated oraz ścieżki kluczy do naprawy
Piaskownica: gdzie działają narzędzia
Piaskownica jest kontrolowana przez agents.defaults.sandbox.mode:
"off": wszystko działa na hoście."non-main": tylko sesje non-main są w piaskownicy (częsta „niespodzianka” dla grup/kanałów)."all": wszystko jest w piaskownicy.
Zobacz Piaskownica, aby poznać pełną macierz (zakres, montowania workspace, obrazy).
Montowania bind (szybka kontrola bezpieczeństwa)
docker.bindsprzebija system plików piaskownicy: wszystko, co zamontujesz, jest widoczne w kontenerze z ustawionym trybem (:roalbo:rw).- Domyślnie używany jest tryb odczytu i zapisu, jeśli pominiesz tryb; preferuj
:rodla źródeł/sekretów. scope: "shared"ignoruje montowania bind przypisane do agentów (stosowane są tylko montowania globalne).- OpenClaw sprawdza poprawność źródeł montowań bind dwa razy: najpierw na znormalizowanej ścieżce źródłowej, potem ponownie po rozwiązaniu przez najgłębszego istniejącego przodka. Ucieczki przez dowiązania symboliczne w katalogach nadrzędnych nie omijają kontroli zablokowanych ścieżek ani dozwolonych katalogów głównych.
- Nieistniejące ścieżki końcowe nadal są sprawdzane bezpiecznie. Jeśli
/workspace/alias-out/new-filerozwiązuje się przez katalog nadrzędny będący dowiązaniem symbolicznym do zablokowanej ścieżki lub poza skonfigurowane dozwolone katalogi główne, montowanie bind zostanie odrzucone. - Zamontowanie
/var/run/docker.sockw praktyce przekazuje piaskownicy kontrolę nad hostem; rób to tylko świadomie. - Dostęp do workspace (
workspaceAccess: "ro"/"rw") jest niezależny od trybów montowań bind.
Zasady narzędzi: które narzędzia istnieją i można je wywołać
Znaczenie mają 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 - Globalne/per-agent zasady narzędzi:
tools.allow/tools.denyiagents.list[].tools.allow/agents.list[].tools.deny - Zasady narzędzi providera:
tools.byProvider[provider].allow/denyiagents.list[].tools.byProvider[provider].allow/deny - Zasady narzędzi piaskownicy (obowiązują tylko w piaskownicy):
tools.sandbox.tools.allow/tools.sandbox.tools.denyiagents.list[].tools.sandbox.tools.*
Zasady praktyczne:
denyzawsze wygrywa.- Jeśli
allownie jest puste, wszystko inne jest traktowane jako zablokowane. - Zasady narzędzi są twardą blokadą:
/execnie może nadpisać odmowy dla narzędziaexec. - Zasady narzędzi filtrują dostępność narzędzi według nazwy; nie sprawdzają skutków ubocznych wewnątrz
exec. Jeśliexecjest dozwolone, zablokowaniewrite,editalboapply_patchnie sprawia, że polecenia powłoki stają się tylko do odczytu. /execzmienia tylko domyślne ustawienia sesji dla uprawnionych nadawców; nie przyznaje dostępu do narzędzi. Klucze narzędzi providera akceptują zarównoprovider(np.google-antigravity), jak iprovider/model(np.openai/gpt-5.4).- Logi Gateway zawierają wpisy audytowe
agents/tool-policy, gdy krok zasad narzędzi usuwa narzędzia albo zasady narzędzi piaskownicy blokują wywołanie. Użyjopenclaw logs, aby zobaczyć etykietę reguły, klucz konfiguracji i nazwy narzędzi, których to dotyczy.
Grupy narzędzi (skróty)
Zasady narzędzi (globalne, agenta, piaskownicy) obsługują wpisy group:*, które rozwijają się do wielu narzędzi:
{ tools: { sandbox: { tools: { allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"], }, }, },}Dostępne grupy:
group:runtime:exec,process,code_execution(bashjest akceptowane jako alias dlaexec)group:fs:read,write,edit,apply_patchW przypadku agentów tylko do odczytu zablokujgroup:runtimeoraz narzędzia modyfikujące system plików, chyba że zasady systemu plików piaskownicy albo osobna granica hosta wymuszają ograniczenie tylko do odczytu.group: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: wszystkie wbudowane narzędzia OpenClaw (bez pluginów providerów)group:plugins: wszystkie załadowane narzędzia należące do pluginów, w tym skonfigurowane serwery MCP udostępniane przezbundle-mcp
W przypadku serwerów MCP w piaskownicy zasady narzędzi piaskownicy są drugą bramką zezwoleń. Jeśli mcp.servers jest skonfigurowane, ale tury w piaskownicy pokazują tylko narzędzia wbudowane, dodaj bundle-mcp, group:plugins albo nazwę/glob narzędzia MCP z prefiksem serwera, na przykład outlook__send_mail albo outlook__*, do tools.sandbox.tools.alsoAllow, następnie zrestartuj/przeładuj Gateway i ponownie przechwyć listę narzędzi. Globy serwera używają bezpiecznego dla providera prefiksu serwera MCP: znaki inne niż [A-Za-z0-9_-] stają się -, nazwy, które nie zaczynają się od litery, dostają prefiks mcp-, a długie lub zduplikowane prefiksy mogą zostać ucięte albo otrzymać sufiks.
openclaw doctor obecnie sprawdza ten kształt dla serwerów zarządzanych przez OpenClaw w mcp.servers. Serwery MCP ładowane z manifestów wbudowanych pluginów albo z pliku Claude .mcp.json używają tej samej bramki piaskownicy, ale ta diagnostyka jeszcze nie wylicza tych źródeł; użyj tych samych wpisów listy dozwolonych, jeśli ich narzędzia znikają w turach w piaskownicy.
Elevated: „uruchom na hoście” tylko dla exec
Elevated nie przyznaje dodatkowych narzędzi; wpływa tylko na exec.
- Jeśli sesja jest w piaskownicy,
/elevated on(alboexeczelevated: true) działa poza piaskownicą (zatwierdzenia nadal mogą obowiązywać). - Użyj
/elevated full, aby pominąć zatwierdzeniaexecdla sesji. - Jeśli już działasz bezpośrednio, Elevated jest w praktyce operacją bez efektu (nadal podlega bramkom).
- Elevated nie jest ograniczone do Skills i nie nadpisuje zezwoleń/blokad narzędzi.
- Elevated nie przyznaje dowolnych nadpisań między hostami z
host=auto; podąża za normalnymi regułami celuexeci zachowujenodetylko wtedy, gdy skonfigurowany/sesyjny cel już jestnode. /execjest osobne od Elevated. Dostosowuje tylko per-sesyjne domyślne ustawieniaexecdla uprawnionych nadawców.
Bramki:
- Włączenie:
tools.elevated.enabled(oraz opcjonalnieagents.list[].tools.elevated.enabled) - Listy dozwolonych nadawców:
tools.elevated.allowFrom.<provider>(oraz opcjonalnieagents.list[].tools.elevated.allowFrom.<provider>)
Zobacz Tryb Elevated.
Typowe poprawki „uwięzienia w piaskownicy”
„Narzędzie X zablokowane przez zasady narzędzi piaskownicy”
Klucze naprawcze (wybierz jeden):
- Wyłącz piaskownicę:
agents.defaults.sandbox.mode=off(albo per-agentagents.list[].sandbox.mode=off) - Zezwól na narzędzie wewnątrz piaskownicy:
- usuń je z
tools.sandbox.tools.deny(albo per-agentagents.list[].tools.sandbox.tools.deny) - albo dodaj je do
tools.sandbox.tools.allow(albo listy dozwolonych per-agent)
- usuń je z
- Sprawdź
openclaw logspod kątem wpisuagents/tool-policy. Rejestruje on tryb piaskownicy oraz to, czy narzędzie zablokowała regułaallowczydeny.
„Myślałem, że to main; dlaczego jest w piaskownicy?”
W trybie "non-main" klucze grup/kanałów nie są main. Użyj klucza sesji main (pokazanego przez sandbox explain) albo przełącz tryb na "off".
Powiązane
- Piaskownica -- pełna dokumentacja piaskownicy (tryby, zakresy, backendy, obrazy)
- Piaskownica i narzędzia dla wielu agentów -- nadpisania per-agent i kolejność pierwszeństwa
- Tryb Elevated