Gateway
Piaskownica a zasady dotyczące narzędzi a podwyższone uprawnienia
OpenClaw ma trzy powiązane (ale różne) mechanizmy kontroli:
- Piaskownica (
agents.defaults.sandbox.*/agents.list[].sandbox.*) decyduje, gdzie uruchamiane są narzędzia (backend piaskownicy albo 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 wyjście awaryjne tylko dlaexec, pozwalające uruchamiać poza piaskownicą, gdy działasz w piaskownicy (domyślniegateway, albonode, gdy celexecjest skonfigurowany jakonode).
Szybkie debugowanie
Użyj inspektora, aby zobaczyć, co OpenClaw faktycznie robi:
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
Wypisuje:
- efektywny tryb/zakres piaskownicy i dostęp do przestrzeni roboczej
- czy sesja jest obecnie w piaskownicy (main kontra non-main)
- efektywne zezwolenia/odmowy narzędzi w piaskownicy (oraz czy pochodzą od agenta/globalnie/z domyślnych ustawień)
- bramki podniesionych uprawnień i ścieżki kluczy naprawczych
Piaskownica: gdzie uruchamiane są narzędzia
Piaskownica jest kontrolowana przez agents.defaults.sandbox.mode:
"off": wszystko działa na hoście."non-main": tylko sesje inne niż main są uruchamiane w piaskownicy (częsta „niespodzianka” dla grup/kanałów)."all": wszystko jest uruchamiane w piaskownicy.
Zobacz Izolacja w piaskownicy, aby poznać pełną macierz (zakres, montowania przestrzeni roboczej, obrazy).
Montowania bind (szybka kontrola bezpieczeństwa)
docker.bindsprzebija system plików piaskownicy: cokolwiek zamontujesz, będzie widoczne wewnątrz kontenera w ustawionym przez Ciebie trybie (: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 (obowiązują tylko montowania globalne).- OpenClaw waliduje źródła montowań bind dwukrotnie: najpierw na znormalizowanej ścieżce źródłowej, a potem ponownie po rozwiązaniu przez najgłębszego istniejącego przodka. Ucieczki przez symlink w katalogu nadrzędnym nie omijają kontroli zablokowanych ścieżek ani dozwolonych katalogów głównych.
- Nieistniejące ścieżki końcowe nadal są bezpiecznie sprawdzane. Jeśli
/workspace/alias-out/new-filerozwiązuje się przez zlinkowany symbolicznie katalog nadrzędny do zablokowanej ścieżki albo 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 przestrzeni roboczej (
workspaceAccess: "ro"/"rw") jest niezależny od trybów montowań bind.
Polityka narzędzi: które narzędzia istnieją i mogą być wywoływane
Znaczenie mają dwie warstwy:
- Profil narzędzi:
tools.profileiagents.list[].tools.profile(bazowa lista dozwolonych) - Profil narzędzi dostawcy:
tools.byProvider[provider].profileiagents.list[].tools.byProvider[provider].profile - Globalna/powiązana z agentem 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 piaskownicy (obowiązuje tylko w piaskownicy):
tools.sandbox.tools.allow/tools.sandbox.tools.denyiagents.list[].tools.sandbox.tools.*
Praktyczne reguły:
denyzawsze wygrywa.- Jeśli
allownie jest puste, wszystko inne jest traktowane jako zablokowane. - Polityka narzędzi jest twardą blokadą:
/execnie może nadpisać odmowy dla narzędziaexec. /execzmienia tylko domyślne ustawienia sesji dla autoryzowanych nadawców; nie przyznaje dostępu do narzędzi. Klucze narzędzi dostawcy akceptują alboprovider(np.google-antigravity), alboprovider/model(np.openai/gpt-5.4).
Grupy narzędzi (skróty)
Polityki 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_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: wszystkie wbudowane narzędzia OpenClaw (z wyłączeniem pluginów dostawców)
Podniesione uprawnienia: „uruchom na hoście” tylko dla exec
Podniesione uprawnienia nie przyznają dodatkowych narzędzi; wpływają tylko na exec.
- Jeśli działasz w piaskownicy,
/elevated on(alboexeczelevated: true) uruchamia poza piaskownicą (zatwierdzenia nadal mogą obowiązywać). - Użyj
/elevated full, aby pominąć zatwierdzeniaexecdla sesji. - Jeśli już działasz bezpośrednio, podniesione uprawnienia w praktyce niczego nie zmieniają (nadal podlegają bramkom).
- Podniesione uprawnienia nie są ograniczone do Skills i nie nadpisują
allow/denynarzędzi. - Podniesione uprawnienia nie przyznają dowolnych nadpisań między hostami z
host=auto; podążają za normalnymi regułami celuexeci zachowująnodetylko wtedy, gdy skonfigurowany/sesyjny cel już jestnode. /execjest niezależne od podniesionych uprawnień. Dostosowuje tylko domyślne ustawieniaexecna poziomie sesji dla autoryzowanych nadawców.
Bramki:
- 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>)
Zobacz Tryb podniesionych uprawnień.
Typowe naprawy „więzienia piaskownicy”
„Narzędzie X zablokowane przez politykę narzędzi piaskownicy”
Klucze naprawcze (wybierz jeden):
- Wyłącz piaskownicę:
agents.defaults.sandbox.mode=off(albo dla konkretnego agentaagents.list[].sandbox.mode=off) - Zezwól na narzędzie wewnątrz piaskownicy:
- usuń je z
tools.sandbox.tools.deny(albo dla konkretnego agenta zagents.list[].tools.sandbox.tools.deny) - albo dodaj je do
tools.sandbox.tools.allow(albo do listy dozwolonych dla konkretnego agenta)
- usuń je z
„Myślałem, że to main, dlaczego działa 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
- Izolacja w piaskownicy -- pełna dokumentacja piaskownicy (tryby, zakresy, backendy, obrazy)
- Piaskownica i narzędzia wielu agentów -- nadpisania dla agentów i kolejność priorytetów
- Tryb podniesionych uprawnień