OpenClaw kan hulpmiddelen in sandbox-backends uitvoeren om de impactradius te beperken. Dit is optioneel en wordt via configuratie beheerd (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 of agents.list[].sandbox). Als sandboxing uit staat, worden hulpmiddelen op de host uitgevoerd. De Gateway blijft op de host; uitvoering van hulpmiddelen draait in een geisoleerde sandbox wanneer dit is ingeschakeld.
Dit is geen perfecte beveiligingsgrens, maar het beperkt bestandsysteem- en procestoegang aanzienlijk wanneer het model iets doms doet.
Wat in een sandbox wordt uitgevoerd
- Uitvoering van hulpmiddelen (
exec,read,write,edit,apply_patch,process, enz.). - Optionele browser in een sandbox (
agents.defaults.sandbox.browser).
Sandboxed browser details
Sandboxed browser details
- Standaard start de sandboxbrowser automatisch (zorgt dat CDP bereikbaar is) wanneer het browserhulpmiddel die nodig heeft. Configureer via
agents.defaults.sandbox.browser.autoStartenagents.defaults.sandbox.browser.autoStartTimeoutMs. - Standaard gebruiken sandboxbrowsercontainers een toegewezen Docker-netwerk (
openclaw-sandbox-browser) in plaats van het globalebridge-netwerk. Configureer metagents.defaults.sandbox.browser.network. - Optioneel beperkt
agents.defaults.sandbox.browser.cdpSourceRangeCDP-ingress aan de containerrand met een CIDR-allowlist (bijvoorbeeld172.21.0.1/32). - noVNC-observertoegang is standaard met een wachtwoord beveiligd; OpenClaw geeft een kortlevende token-URL uit die een lokale bootstrap-pagina serveert en noVNC opent met het wachtwoord in het URL-fragment (niet in query-/headerlogs).
- Met
agents.defaults.sandbox.browser.allowHostControlkunnen sandboxsessies expliciet de hostbrowser targeten. - Optionele allowlists bewaken
target: "custom":allowedControlUrls,allowedControlHosts,allowedControlPorts.
- Het Gateway-proces zelf.
- Elk hulpmiddel dat expliciet buiten de sandbox mag draaien (bijv.
tools.elevated).- Verhoogde exec omzeilt sandboxing en gebruikt het geconfigureerde ontsnappingspad (
gatewaystandaard, ofnodewanneer het exec-doelnodeis). - Als sandboxing uit staat, verandert
tools.elevatedde uitvoering niet (die draait al op de host). Zie Verhoogde modus.
- Verhoogde exec omzeilt sandboxing en gebruikt het geconfigureerde ontsnappingspad (
Modi
agents.defaults.sandbox.mode bepaalt wanneer sandboxing wordt gebruikt:
- off
- non-main
- all
Geen sandboxing.
Bereik
agents.defaults.sandbox.scope bepaalt hoeveel containers worden gemaakt:
"agent"(standaard): een container per agent."session": een container per sessie."shared": een container gedeeld door alle sandboxsessies.
Backend
agents.defaults.sandbox.backend bepaalt welke runtime de sandbox levert:
"docker"(standaard wanneer sandboxing is ingeschakeld): lokale, door Docker ondersteunde sandboxruntime."ssh": generieke, door SSH ondersteunde externe sandboxruntime."openshell": door OpenShell ondersteunde sandboxruntime.
agents.defaults.sandbox.ssh. OpenShell-specifieke configuratie staat onder plugins.entries.openshell.config.
Een backend kiezen
| Docker | SSH | OpenShell | |
|---|---|---|---|
| Waar het draait | Lokale container | Elke via SSH toegankelijke host | Door OpenShell beheerde sandbox |
| Installatie | scripts/sandbox-setup.sh | SSH-sleutel + doelhost | OpenShell-Plugin ingeschakeld |
| Werkruimtemodel | Bind-mount of kopie | Extern-canoniek (eenmalig seeden) | mirror of remote |
| Netwerkbeheer | docker.network (standaard: none) | Hangt af van externe host | Hangt af van OpenShell |
| Browsersandbox | Ondersteund | Niet ondersteund | Nog niet ondersteund |
| Bind-mounts | docker.binds | N.v.t. | N.v.t. |
| Meest geschikt voor | Lokale ontwikkeling, volledige isolatie | Offloaden naar een externe machine | Beheerde externe sandboxes met optionele tweerichtingssynchronisatie |
Docker-backend
Sandboxing staat standaard uit. Als je sandboxing inschakelt en geen backend kiest, gebruikt OpenClaw de Docker-backend. Die voert hulpmiddelen en sandboxbrowsers lokaal uit via de Docker-daemonsocket (/var/run/docker.sock). Isolatie van sandboxcontainers wordt bepaald door Docker-namespaces.
Om host-GPU’s aan Docker-sandboxes bloot te stellen, stel je agents.defaults.sandbox.docker.gpus in of de override per agent agents.list[].sandbox.docker.gpus. De waarde wordt als afzonderlijk argument doorgegeven aan Docker’s --gpus-vlag, bijvoorbeeld "all" of "device=GPU-uuid", en vereist een compatibele hostruntime zoals NVIDIA Container Toolkit.
SSH-backend
Gebruikbackend: "ssh" wanneer je wilt dat OpenClaw exec, bestandshulpmiddelen en medialeesbewerkingen sandboxt op een willekeurige via SSH toegankelijke machine.
How it works
How it works
- OpenClaw maakt een externe root per bereik onder
sandbox.ssh.workspaceRoot. - Bij eerste gebruik na maken of opnieuw maken seedt OpenClaw die externe werkruimte eenmalig vanuit de lokale werkruimte.
- Daarna worden
exec,read,write,edit,apply_patch, promptmedialeesbewerkingen en staging van inkomende media rechtstreeks via SSH tegen de externe werkruimte uitgevoerd. - OpenClaw synchroniseert externe wijzigingen niet automatisch terug naar de lokale werkruimte.
Authentication material
Authentication material
identityFile,certificateFile,knownHostsFile: gebruik bestaande lokale bestanden en geef ze door via OpenSSH-configuratie.identityData,certificateData,knownHostsData: gebruik inline strings of SecretRefs. OpenClaw lost ze op via de normale secrets-runtime-snapshot, schrijft ze naar tijdelijke bestanden met0600en verwijdert ze wanneer de SSH-sessie eindigt.- Als zowel
*Fileals*Datavoor hetzelfde item zijn ingesteld, wint*Datavoor die SSH-sessie.
Remote-canonical consequences
Remote-canonical consequences
Dit is een extern-canoniek model. De externe SSH-werkruimte wordt de echte sandboxstatus na de initiële seed.
- Host-lokale bewerkingen die buiten OpenClaw na de seedstap worden gedaan, zijn extern niet zichtbaar totdat je de sandbox opnieuw maakt.
openclaw sandbox recreateverwijdert de externe root per bereik en seedt opnieuw vanuit lokaal bij het volgende gebruik.- Browsersandboxing wordt niet ondersteund op de SSH-backend.
sandbox.docker.*-instellingen gelden niet voor de SSH-backend.
OpenShell-backend
Gebruikbackend: "openshell" wanneer je wilt dat OpenClaw hulpmiddelen sandboxt in een door OpenShell beheerde externe omgeving. Zie de speciale OpenShell-pagina voor de volledige installatiehandleiding, configuratiereferentie en vergelijking van werkruimtemodi.
OpenShell hergebruikt hetzelfde kern-SSH-transport en dezelfde externe bestandssysteembridge als de generieke SSH-backend, en voegt OpenShell-specifieke lifecycle toe (sandbox create/get/delete, sandbox ssh-config) plus de optionele mirror-werkruimtemodus.
mirror(standaard): lokale werkruimte blijft canoniek. OpenClaw synchroniseert lokale bestanden naar OpenShell voor exec en synchroniseert de externe werkruimte terug na exec.remote: OpenShell-werkruimte is canoniek nadat de sandbox is gemaakt. OpenClaw seedt de externe werkruimte eenmalig vanuit de lokale werkruimte; daarna draaien bestandshulpmiddelen en exec rechtstreeks tegen de externe sandbox zonder wijzigingen terug te synchroniseren.
Remote transport details
Remote transport details
- OpenClaw vraagt OpenShell om sandboxspecifieke SSH-configuratie via
openshell sandbox ssh-config <name>. - Core schrijft die SSH-configuratie naar een tijdelijk bestand, opent de SSH-sessie en hergebruikt dezelfde externe bestandssysteembridge die wordt gebruikt door
backend: "ssh". - Alleen in
mirror-modus verschilt de lifecycle: synchroniseer lokaal naar extern voor exec en synchroniseer daarna terug na exec.
Current OpenShell limitations
Current OpenShell limitations
- sandboxbrowser wordt nog niet ondersteund
sandbox.docker.bindswordt niet ondersteund op de OpenShell-backend- Docker-specifieke runtimeknoppen onder
sandbox.docker.*gelden nog steeds alleen voor de Docker-backend
Werkruimtemodi
OpenShell heeft twee werkruimtemodellen. Dit is het deel dat in de praktijk het belangrijkst is.- mirror (local canonical)
- remote (OpenShell canonical)
Gebruik
plugins.entries.openshell.config.mode: "mirror" wanneer je wilt dat de lokale werkruimte canoniek blijft.Gedrag:- Voor
execsynchroniseert OpenClaw de lokale werkruimte naar de OpenShell-sandbox. - Na
execsynchroniseert OpenClaw de externe werkruimte terug naar de lokale werkruimte. - Bestandshulpmiddelen werken nog steeds via de sandboxbridge, maar de lokale werkruimte blijft tussen beurten de bron van waarheid.
- je lokaal bestanden buiten OpenClaw bewerkt en wilt dat die wijzigingen automatisch in de sandbox verschijnen
- je wilt dat de OpenShell-sandbox zich zo veel mogelijk gedraagt als de Docker-backend
- je wilt dat de hostwerkruimte sandbox-schrijfacties weerspiegelt na elke exec-beurt
mirror als je de sandbox ziet als een tijdelijke uitvoeringsomgeving. Kies remote als je de sandbox ziet als de echte werkruimte.
OpenShell-levenscyclus
OpenShell-sandboxes worden nog steeds beheerd via de normale sandboxlevenscyclus:openclaw sandbox listtoont zowel OpenShell-runtimes als Docker-runtimesopenclaw sandbox recreateverwijdert de huidige runtime en laat OpenClaw deze bij het volgende gebruik opnieuw aanmaken- opschoonlogica is ook backendbewust
remote is opnieuw aanmaken extra belangrijk:
- opnieuw aanmaken verwijdert de canonieke externe werkruimte voor dat bereik
- het volgende gebruik zaait een nieuwe externe werkruimte vanuit de lokale werkruimte
mirror reset opnieuw aanmaken vooral de externe uitvoeringsomgeving, omdat de lokale werkruimte toch canoniek blijft.
Werkruimtetoegang
agents.defaults.sandbox.workspaceAccess bepaalt wat de sandbox kan zien:
- none (default)
- ro
- rw
Tools zien een sandboxwerkruimte onder
~/.openclaw/sandboxes.- de modus
mirrorgebruikt nog steeds de lokale werkruimte als canonieke bron tussen exec-beurten - de modus
remotegebruikt de externe OpenShell-werkruimte als canonieke bron na de eerste zaai workspaceAccess: "ro"en"none"beperken schrijfgedrag nog steeds op dezelfde manier
media/inbound/*).
Skills-opmerking: de tool
read is geworteld in de sandbox. Met workspaceAccess: "none" spiegelt OpenClaw geschikte skills naar de sandboxwerkruimte (.../skills) zodat ze gelezen kunnen worden. Met "rw" zijn werkruimte-Skills leesbaar vanuit /workspace/skills.Aangepaste bind-mounts
agents.defaults.sandbox.docker.binds koppelt extra hostmappen aan de container. Indeling: host:container:mode (bijv. "/home/user/source:/source:rw").
Globale en per-agent binds worden samengevoegd (niet vervangen). Onder scope: "shared" worden per-agent binds genegeerd.
agents.defaults.sandbox.browser.binds koppelt extra hostmappen alleen aan de sandboxbrowser-container.
- Wanneer ingesteld (inclusief
[]), vervangt ditagents.defaults.sandbox.docker.bindsvoor de browsercontainer. - Wanneer weggelaten, valt de browsercontainer terug op
agents.defaults.sandbox.docker.binds(achterwaarts compatibel).
Images en setup
Standaard Docker-image:openclaw-sandbox:bookworm-slim
Build the default image
sandbox.docker.setupCommand (vereist netwerk-egress + beschrijfbare root + rootgebruiker).OpenClaw vervangt niet stilzwijgend door gewone debian:bookworm-slim wanneer openclaw-sandbox:bookworm-slim ontbreekt. Sandboxruns die op de standaardimage zijn gericht, falen snel met een bouwinstructie totdat je scripts/sandbox-setup.sh uitvoert, omdat de gebundelde image python3 bevat voor sandboxhelpers voor schrijven/bewerken.Optional: build the common image
Voor een functionelere sandboximage met algemene tooling (bijvoorbeeld Stel daarna
curl, jq, nodejs, python3, git):agents.defaults.sandbox.docker.image in op openclaw-sandbox-common:bookworm-slim.agents.defaults.sandbox.docker.network.
Sandbox browser Chromium defaults
Sandbox browser Chromium defaults
De gebundelde sandboxbrowserimage past ook conservatieve Chromium-opstartstandaarden toe voor gecontaineriseerde workloads. Huidige containerstandaarden omvatten:
--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-sandboxwanneernoSandboxis ingeschakeld.- De drie graphics-hardening-flags (
--disable-3d-apis,--disable-software-rasterizer,--disable-gpu) zijn optioneel en nuttig wanneer containers geen GPU-ondersteuning hebben. StelOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0in als je workload WebGL of andere 3D-/browserfuncties vereist. --disable-extensionsis standaard ingeschakeld en kan worden uitgeschakeld metOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0voor flows die afhankelijk zijn van extensies.--renderer-process-limit=2wordt beheerd doorOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>, waarbij0de standaard van Chromium behoudt.
browser.extraArgs om extra opstartflags toe te voegen.Network security defaults
Network security defaults
network: "host"wordt geblokkeerd.network: "container:<id>"wordt standaard geblokkeerd (risico op omzeiling via namespace-join).- Break-glass-override:
agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.
scripts/docker/setup.sh sandboxconfiguratie bootstrapen. Stel OPENCLAW_SANDBOX=1 (of true/yes/on) in om dat pad in te schakelen. Je kunt de socketlocatie overschrijven met OPENCLAW_DOCKER_SOCKET. Volledige setup- en env-referentie: Docker.
setupCommand (eenmalige container-setup)
setupCommand wordt eenmalig uitgevoerd nadat de sandboxcontainer is aangemaakt (niet bij elke run). Het wordt binnen de container uitgevoerd via sh -lc.
Paden:
- Globaal:
agents.defaults.sandbox.docker.setupCommand - Per agent:
agents.list[].sandbox.docker.setupCommand
Common pitfalls
Common pitfalls
- Standaard is
docker.network"none"(geen egress), dus pakketinstallaties zullen mislukken. docker.network: "container:<id>"vereistdangerouslyAllowContainerNamespaceJoin: trueen is alleen voor break-glass.readOnlyRoot: truevoorkomt schrijven; stelreadOnlyRoot: falsein of bak een aangepaste image.usermoet root zijn voor pakketinstallaties (laatuserweg of steluser: "0:0"in).- Sandbox-exec erft host-
process.envniet. Gebruikagents.defaults.sandbox.docker.env(of een aangepaste image) voor skill-API-sleutels.
Toolbeleid en escape hatches
Tool-allow/deny-beleid geldt nog steeds vóór sandboxregels. Als een tool globaal of per agent wordt geweigerd, brengt sandboxing die niet terug.tools.elevated is een expliciete escape hatch die exec buiten de sandbox uitvoert (gateway standaard, of node wanneer het exec-doel node is). /exec-directives gelden alleen voor geautoriseerde afzenders en blijven per sessie behouden; gebruik toolbeleid deny om exec hard uit te schakelen (zie Sandbox vs Tool Policy vs Elevated).
Debuggen:
- Gebruik
openclaw sandbox explainom de effectieve sandboxmodus, het toolbeleid en fix-it-configuratiesleutels te inspecteren. - Zie Sandbox vs Tool Policy vs Elevated voor het mentale model achter “waarom wordt dit geblokkeerd?”.
Multi-agent-overrides
Elke agent kan sandbox + tools overschrijven:agents.list[].sandbox en agents.list[].tools (plus agents.list[].tools.sandbox.tools voor sandbox-toolbeleid). Zie Multi-Agent Sandbox & Tools voor prioriteit.
Minimaal inschakelvoorbeeld
Gerelateerd
- Multi-agent-sandbox en tools — overschrijvingen per agent en prioriteit
- OpenShell — installatie van beheerde sandbox-backend, werkruimtemodi en configuratiereferentie
- Sandboxconfiguratie
- Sandbox versus toolbeleid versus verhoogd — foutopsporing “waarom wordt dit geblokkeerd?”
- Beveiliging