OpenClaw może uruchamiać narzędzia wewnątrz backendów piaskownicy, aby ograniczyć zakres skutków. Jest to opcjonalne i kontrolowane przez konfigurację (Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
agents.defaults.sandbox lub agents.list[].sandbox). Jeśli uruchamianie w piaskownicy jest wyłączone, narzędzia działają na hoście. Gateway pozostaje na hoście; wykonywanie narzędzi odbywa się w izolowanej piaskownicy, gdy jest włączone.
To nie jest doskonała granica bezpieczeństwa, ale znacząco ogranicza dostęp do systemu plików i procesów, gdy model zrobi coś nierozważnego.
Co trafia do piaskownicy
- Wykonywanie narzędzi (
exec,read,write,edit,apply_patch,processitd.). - Opcjonalna przeglądarka w piaskownicy (
agents.defaults.sandbox.browser).
Sandboxed browser details
Sandboxed browser details
- Domyślnie przeglądarka w piaskownicy uruchamia się automatycznie (zapewnia dostępność CDP), gdy narzędzie przeglądarki jej potrzebuje. Skonfiguruj przez
agents.defaults.sandbox.browser.autoStartiagents.defaults.sandbox.browser.autoStartTimeoutMs. - Domyślnie kontenery przeglądarki w piaskownicy używają dedykowanej sieci Docker (
openclaw-sandbox-browser) zamiast globalnej siecibridge. Skonfiguruj za pomocąagents.defaults.sandbox.browser.network. - Opcjonalne
agents.defaults.sandbox.browser.cdpSourceRangeogranicza wejście CDP na krawędzi kontenera listą dozwolonych CIDR (na przykład172.21.0.1/32). - Dostęp obserwatora noVNC jest domyślnie chroniony hasłem; OpenClaw emituje krótkotrwały URL tokena, który serwuje lokalną stronę startową i otwiera noVNC z hasłem we fragmencie URL (nie w zapytaniu/logach nagłówków).
agents.defaults.sandbox.browser.allowHostControlpozwala sesjom w piaskownicy jawnie wskazywać przeglądarkę hosta.- Opcjonalne listy dozwolonych wartości bramkują
target: "custom":allowedControlUrls,allowedControlHosts,allowedControlPorts.
- Sam proces Gateway.
- Każde narzędzie jawnie dopuszczone do działania poza piaskownicą (np.
tools.elevated).- Podniesione
execomija piaskownicę i używa skonfigurowanej ścieżki ucieczki (gatewaydomyślnie albonode, gdy celemexecjestnode). - Jeśli uruchamianie w piaskownicy jest wyłączone,
tools.elevatednie zmienia wykonywania (już odbywa się na hoście). Zobacz Tryb podniesiony.
- Podniesione
Tryby
agents.defaults.sandbox.mode kontroluje, kiedy używana jest piaskownica:
- off
- non-main
- all
Brak uruchamiania w piaskownicy.
Zakres
agents.defaults.sandbox.scope kontroluje, ile kontenerów jest tworzonych:
"agent"(domyślnie): jeden kontener na agenta."session": jeden kontener na sesję."shared": jeden kontener współdzielony przez wszystkie sesje w piaskownicy.
Backend
agents.defaults.sandbox.backend kontroluje, które środowisko uruchomieniowe zapewnia piaskownicę:
"docker"(domyślnie, gdy piaskownica jest włączona): lokalne środowisko piaskownicy oparte na Dockerze."ssh": ogólne zdalne środowisko piaskownicy oparte na SSH."openshell": środowisko piaskownicy oparte na OpenShell.
agents.defaults.sandbox.ssh. Konfiguracja specyficzna dla OpenShell znajduje się w plugins.entries.openshell.config.
Wybór backendu
| Docker | SSH | OpenShell | |
|---|---|---|---|
| Gdzie działa | Lokalny kontener | Dowolny host dostępny przez SSH | Piaskownica zarządzana przez OpenShell |
| Konfiguracja | scripts/sandbox-setup.sh | Klucz SSH + host docelowy | Włączony Plugin OpenShell |
| Model przestrzeni roboczej | Montowanie bind albo kopia | Zdalnie kanoniczny (jednorazowe zasianie) | mirror lub remote |
| Kontrola sieci | docker.network (domyślnie: brak) | Zależy od hosta zdalnego | Zależy od OpenShell |
| Piaskownica przeglądarki | Obsługiwana | Nieobsługiwana | Jeszcze nieobsługiwana |
| Montowania bind | docker.binds | N/D | N/D |
| Najlepsze do | Lokalny rozwój, pełna izolacja | Odciążanie na zdalną maszynę | Zarządzane zdalne piaskownice z opcjonalną synchronizacją dwukierunkową |
Backend Docker
Uruchamianie w piaskownicy jest domyślnie wyłączone. Jeśli włączysz piaskownicę i nie wybierzesz backendu, OpenClaw użyje backendu Docker. Wykonuje narzędzia i przeglądarki w piaskownicy lokalnie przez gniazdo demona Docker (/var/run/docker.sock). Izolacja kontenera piaskownicy jest określana przez przestrzenie nazw Docker.
Aby udostępnić GPU hosta piaskownicom Docker, ustaw agents.defaults.sandbox.docker.gpus albo nadpisanie per agent agents.list[].sandbox.docker.gpus. Wartość jest przekazywana do flagi Docker --gpus jako osobny argument, na przykład "all" albo "device=GPU-uuid", i wymaga zgodnego środowiska uruchomieniowego hosta, takiego jak NVIDIA Container Toolkit.
Backend SSH
Użyjbackend: "ssh", gdy chcesz, aby OpenClaw uruchamiał w piaskownicy exec, narzędzia plikowe i odczyty multimediów na dowolnej maszynie dostępnej przez SSH.
How it works
How it works
- OpenClaw tworzy zdalny katalog główny dla danego zakresu pod
sandbox.ssh.workspaceRoot. - Przy pierwszym użyciu po utworzeniu lub odtworzeniu OpenClaw jednorazowo zasiewa tę zdalną przestrzeń roboczą z lokalnej przestrzeni roboczej.
- Następnie
exec,read,write,edit,apply_patch, odczyty multimediów promptu oraz etapowanie multimediów przychodzących działają bezpośrednio na zdalnej przestrzeni roboczej przez SSH. - OpenClaw nie synchronizuje automatycznie zdalnych zmian z powrotem do lokalnej przestrzeni roboczej.
Authentication material
Authentication material
identityFile,certificateFile,knownHostsFile: użyj istniejących plików lokalnych i przekaż je przez konfigurację OpenSSH.identityData,certificateData,knownHostsData: użyj ciągów inline lub SecretRefs. OpenClaw rozwiązuje je przez normalny zrzut środowiska uruchomieniowego sekretów, zapisuje do plików tymczasowych z0600i usuwa je po zakończeniu sesji SSH.- Jeśli dla tego samego elementu ustawiono zarówno
*File, jak i*Data,*Datawygrywa dla tej sesji SSH.
Remote-canonical consequences
Remote-canonical consequences
To model zdalnie kanoniczny. Zdalna przestrzeń robocza SSH staje się rzeczywistym stanem piaskownicy po początkowym zasianiu.
- Lokalne edycje na hoście wykonane poza OpenClaw po kroku zasiania nie są widoczne zdalnie, dopóki nie odtworzysz piaskownicy.
openclaw sandbox recreateusuwa zdalny katalog główny dla danego zakresu i przy następnym użyciu ponownie zasiewa z lokalnego.- Piaskownica przeglądarki nie jest obsługiwana w backendzie SSH.
- Ustawienia
sandbox.docker.*nie mają zastosowania do backendu SSH.
Backend OpenShell
Użyjbackend: "openshell", gdy chcesz, aby OpenClaw uruchamiał narzędzia w piaskownicy w zdalnym środowisku zarządzanym przez OpenShell. Pełny przewodnik konfiguracji, referencję konfiguracji i porównanie trybów przestrzeni roboczej znajdziesz na dedykowanej stronie OpenShell.
OpenShell ponownie wykorzystuje ten sam podstawowy transport SSH i mostek zdalnego systemu plików co ogólny backend SSH oraz dodaje cykl życia specyficzny dla OpenShell (sandbox create/get/delete, sandbox ssh-config) i opcjonalny tryb przestrzeni roboczej mirror.
mirror(domyślnie): lokalna przestrzeń robocza pozostaje kanoniczna. OpenClaw synchronizuje pliki lokalne do OpenShell przedexeci synchronizuje zdalną przestrzeń roboczą z powrotem poexec.remote: przestrzeń robocza OpenShell jest kanoniczna po utworzeniu piaskownicy. OpenClaw jednorazowo zasiewa zdalną przestrzeń roboczą z lokalnej przestrzeni roboczej, a następnie narzędzia plikowe iexecdziałają bezpośrednio na zdalnej piaskownicy bez synchronizowania zmian z powrotem.
Remote transport details
Remote transport details
- OpenClaw prosi OpenShell o konfigurację SSH specyficzną dla piaskownicy przez
openshell sandbox ssh-config <name>. - Core zapisuje tę konfigurację SSH do pliku tymczasowego, otwiera sesję SSH i ponownie wykorzystuje ten sam mostek zdalnego systemu plików używany przez
backend: "ssh". - W trybie
mirrorróżni się tylko cykl życia: synchronizacja lokalnego do zdalnego przedexec, a potem synchronizacja z powrotem poexec.
Current OpenShell limitations
Current OpenShell limitations
- przeglądarka w piaskownicy nie jest jeszcze obsługiwana
sandbox.docker.bindsnie jest obsługiwane w backendzie OpenShell- Pokrętła środowiska uruchomieniowego specyficzne dla Docker pod
sandbox.docker.*nadal mają zastosowanie tylko do backendu Docker
Tryby przestrzeni roboczej
OpenShell ma dwa modele przestrzeni roboczej. To część, która w praktyce ma największe znaczenie.- mirror (local canonical)
- remote (OpenShell canonical)
Użyj
plugins.entries.openshell.config.mode: "mirror", gdy chcesz, aby lokalna przestrzeń robocza pozostała kanoniczna.Zachowanie:- Przed
execOpenClaw synchronizuje lokalny obszar roboczy do piaskownicy OpenShell. - Po
execOpenClaw synchronizuje zdalny obszar roboczy z powrotem do lokalnego obszaru roboczego. - Narzędzia plikowe nadal działają przez most piaskownicy, ale lokalny obszar roboczy pozostaje źródłem prawdy między turami.
- edytujesz pliki lokalnie poza OpenClaw i chcesz, aby te zmiany automatycznie pojawiały się w piaskownicy
- chcesz, aby piaskownica OpenShell zachowywała się możliwie podobnie do backendu Docker
- chcesz, aby obszar roboczy hosta odzwierciedlał zapisy z piaskownicy po każdej turze exec
mirror, jeśli traktujesz piaskownicę jako tymczasowe środowisko wykonawcze. Wybierz remote, jeśli traktujesz piaskownicę jako rzeczywisty obszar roboczy.
Cykl życia OpenShell
Piaskownice OpenShell są nadal zarządzane przez normalny cykl życia piaskownicy:openclaw sandbox listpokazuje środowiska uruchomieniowe OpenShell oraz środowiska uruchomieniowe Dockeropenclaw sandbox recreateusuwa bieżące środowisko uruchomieniowe i pozwala OpenClaw odtworzyć je przy następnym użyciu- logika czyszczenia również uwzględnia backend
remote odtworzenie jest szczególnie ważne:
- odtworzenie usuwa kanoniczny zdalny obszar roboczy dla tego zakresu
- następne użycie inicjuje świeży zdalny obszar roboczy z lokalnego obszaru roboczego
mirror odtworzenie głównie resetuje zdalne środowisko wykonawcze, ponieważ lokalny obszar roboczy i tak pozostaje kanoniczny.
Dostęp do obszaru roboczego
agents.defaults.sandbox.workspaceAccess kontroluje, co piaskownica może zobaczyć:
- none (default)
- ro
- rw
Narzędzia widzą obszar roboczy piaskownicy pod
~/.openclaw/sandboxes.- tryb
mirrornadal używa lokalnego obszaru roboczego jako kanonicznego źródła między turami exec - tryb
remoteużywa zdalnego obszaru roboczego OpenShell jako kanonicznego źródła po początkowym zainicjowaniu workspaceAccess: "ro"i"none"nadal ograniczają zachowanie zapisu w ten sam sposób
media/inbound/*).
Uwaga dotycząca Skills: narzędzie
read jest zakorzenione w piaskownicy. Przy workspaceAccess: "none" OpenClaw odzwierciedla kwalifikujące się Skills w obszarze roboczym piaskownicy (.../skills), aby można je było odczytać. Przy "rw" Skills obszaru roboczego są czytelne z /workspace/skills.Niestandardowe montowania bind
agents.defaults.sandbox.docker.binds montuje dodatkowe katalogi hosta w kontenerze. Format: host:container:mode (np. "/home/user/source:/source:rw").
Globalne i per-agent bindy są scalane (nie zastępowane). Przy scope: "shared" bindy per-agent są ignorowane.
agents.defaults.sandbox.browser.binds montuje dodatkowe katalogi hosta tylko w kontenerze przeglądarki piaskownicy.
- Gdy jest ustawione (w tym
[]), zastępujeagents.defaults.sandbox.docker.bindsdla kontenera przeglądarki. - Gdy jest pominięte, kontener przeglądarki używa awaryjnie
agents.defaults.sandbox.docker.binds(zgodność wsteczna).
Obrazy i konfiguracja
Domyślny obraz Docker:openclaw-sandbox:bookworm-slim
Checkout źródeł kontra instalacja npmSkrypty pomocnicze
scripts/sandbox-setup.sh, scripts/sandbox-common-setup.sh i scripts/sandbox-browser-setup.sh są dostępne tylko podczas uruchamiania z checkoutu źródeł. Nie są zawarte w pakiecie npm.Jeśli zainstalowano OpenClaw przez npm install -g openclaw, użyj zamiast tego wbudowanych poleceń docker build pokazanych poniżej.Build the default image
Z checkoutu źródeł:Z instalacji npm (checkout źródeł nie jest potrzebny):Domyślny obraz nie zawiera Node. Jeśli skill potrzebuje Node (lub innych środowisk uruchomieniowych), wypiecz własny obraz albo zainstaluj przez
sandbox.docker.setupCommand (wymaga wyjścia do sieci + zapisywalnego katalogu głównego + użytkownika root).OpenClaw nie podstawia po cichu zwykłego debian:bookworm-slim, gdy brakuje openclaw-sandbox:bookworm-slim. Uruchomienia piaskownicy, które celują w domyślny obraz, szybko kończą się niepowodzeniem z instrukcją budowania, dopóki go nie zbudujesz, ponieważ dołączony obraz zawiera python3 dla pomocników zapisu/edycji piaskownicy.Optional: build the common image
Dla bardziej funkcjonalnego obrazu piaskownicy z typowymi narzędziami (na przykład Z instalacji npm najpierw zbuduj domyślny obraz (zobacz wyżej), a następnie zbuduj obraz common na jego bazie, używając
curl, jq, nodejs, python3, git):Z checkoutu źródeł:scripts/docker/sandbox/Dockerfile.common z repozytorium.Następnie ustaw agents.defaults.sandbox.docker.image na openclaw-sandbox-common:bookworm-slim.Optional: build the sandbox browser image
Z checkoutu źródeł:Z instalacji npm zbuduj, używając
scripts/docker/sandbox/Dockerfile.browser z repozytorium.agents.defaults.sandbox.docker.network.
Sandbox browser Chromium defaults
Sandbox browser Chromium defaults
Dołączony obraz przeglądarki piaskownicy stosuje również konserwatywne domyślne ustawienia uruchamiania Chromium dla obciążeń kontenerowych. Bieżące ustawienia domyślne kontenera obejmują:
--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-dev-shm-usage--disable-background-networking--disable-extensions--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--disable-software-rasterizer--no-zygote--metrics-recording-only--renderer-process-limit=2--no-sandboxgdynoSandboxjest włączone.- Trzy flagi wzmacniające grafikę (
--disable-3d-apis,--disable-software-rasterizer,--disable-gpu) są opcjonalne i przydatne, gdy kontenery nie mają obsługi GPU. UstawOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0, jeśli Twoje obciążenie wymaga WebGL lub innych funkcji 3D/przeglądarki. --disable-extensionsjest domyślnie włączone i można je wyłączyć za pomocąOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0dla przepływów zależnych od rozszerzeń.--renderer-process-limit=2jest kontrolowane przezOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>, gdzie0zachowuje domyślne ustawienie Chromium.
browser.extraArgs, aby dodać dodatkowe flagi uruchamiania.Network security defaults
Network security defaults
network: "host"jest blokowane.network: "container:<id>"jest domyślnie blokowane (ryzyko obejścia przez dołączenie do przestrzeni nazw).- Awaryjne nadpisanie:
agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.
scripts/docker/setup.sh może zainicjować konfigurację piaskownicy. Ustaw OPENCLAW_SANDBOX=1 (lub true/yes/on), aby włączyć tę ścieżkę. Lokalizację socketu możesz nadpisać za pomocą OPENCLAW_DOCKER_SOCKET. Pełna konfiguracja i opis zmiennych środowiskowych: Docker.
setupCommand (jednorazowa konfiguracja kontenera)
setupCommand uruchamia się raz po utworzeniu kontenera piaskownicy (nie przy każdym uruchomieniu). Wykonuje się wewnątrz kontenera przez sh -lc.
Ścieżki:
- Globalnie:
agents.defaults.sandbox.docker.setupCommand - Per-agent:
agents.list[].sandbox.docker.setupCommand
Typowe pułapki
Typowe pułapki
- Domyślna wartość
docker.networkto"none"(brak ruchu wychodzącego), więc instalacje pakietów będą kończyć się niepowodzeniem. docker.network: "container:<id>"wymagadangerouslyAllowContainerNamespaceJoin: truei jest przeznaczone wyłącznie do użycia awaryjnego.readOnlyRoot: trueuniemożliwia zapisy; ustawreadOnlyRoot: falsealbo przygotuj własny obraz.usermusi być użytkownikiem root do instalowania pakietów (pomińuseralbo ustawuser: "0:0").- Wykonanie
execw piaskownicy nie dziedziczyprocess.envhosta. Użyjagents.defaults.sandbox.docker.env(albo własnego obrazu) dla kluczy API Skills.
Zasady narzędzi i wyjścia awaryjne
Zasady zezwalania/odmawiania narzędzi nadal obowiązują przed regułami piaskownicy. Jeśli narzędzie jest zabronione globalnie albo dla danego agenta, piaskownica go nie przywraca.tools.elevated to jawne wyjście awaryjne, które uruchamia exec poza piaskownicą (domyślnie gateway, albo node, gdy celem exec jest node). Dyrektywy /exec mają zastosowanie tylko do autoryzowanych nadawców i utrzymują się w ramach sesji; aby trwale wyłączyć exec, użyj odmowy w zasadach narzędzi (zobacz Piaskownica kontra zasady narzędzi kontra podwyższone uprawnienia).
Debugowanie:
- Użyj
openclaw sandbox explain, aby sprawdzić efektywny tryb piaskownicy, zasady narzędzi i klucze konfiguracji naprawczej. - Zobacz Piaskownica kontra zasady narzędzi kontra podwyższone uprawnienia, aby poznać model myślowy „dlaczego to jest zablokowane?”.
Nadpisania dla wielu agentów
Każdy agent może nadpisać piaskownicę i narzędzia:agents.list[].sandbox oraz agents.list[].tools (plus agents.list[].tools.sandbox.tools dla zasad narzędzi piaskownicy). Zobacz Piaskownica i narzędzia wielu agentów, aby poznać kolejność pierwszeństwa.
Minimalny przykład włączenia
Powiązane
- Piaskownica i narzędzia wielu agentów — nadpisania dla poszczególnych agentów i kolejność pierwszeństwa
- OpenShell — konfiguracja zarządzanego zaplecza piaskownicy, tryby przestrzeni roboczej i dokumentacja konfiguracji
- Konfiguracja piaskownicy
- Piaskownica kontra zasady narzędzi kontra podwyższone uprawnienia — debugowanie „dlaczego to jest zablokowane?”
- Bezpieczeństwo