docs/cli/sandbox.md
Manage sandbox runtimes for isolated agent execution.
OpenClaw can run agents in isolated sandbox runtimes for security. The sandbox commands help you inspect and recreate those runtimes after updates or configuration changes.
Today that usually means:
agents.defaults.sandbox.backend = "ssh"agents.defaults.sandbox.backend = "openshell"For ssh and OpenShell remote, recreate matters more than with Docker:
openclaw sandbox recreate deletes that canonical remote workspace for the selected scopeopenclaw sandbox explainInspect the effective sandbox mode/scope/workspace access, sandbox tool policy, and elevated gates (with fix-it config key paths).
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
openclaw sandbox listList all sandbox runtimes with their status and configuration.
openclaw sandbox list
openclaw sandbox list --browser # List only browser containers
openclaw sandbox list --json # JSON output
Output includes:
docker, openshell, etc.)openclaw sandbox recreateRemove sandbox runtimes to force recreation with updated config.
openclaw sandbox recreate --all # Recreate all containers
openclaw sandbox recreate --session main # Specific session
openclaw sandbox recreate --agent mybot # Specific agent
openclaw sandbox recreate --browser # Only browser containers
openclaw sandbox recreate --all --force # Skip confirmation
Options:
--all: Recreate all sandbox containers--session <key>: Recreate container for specific session--agent <id>: Recreate containers for specific agent--browser: Only recreate browser containers--force: Skip confirmation prompt# Pull new image
docker pull openclaw-sandbox:latest
docker tag openclaw-sandbox:latest openclaw-sandbox:bookworm-slim
# Update config to use new image
# Edit config: agents.defaults.sandbox.docker.image (or agents.list[].sandbox.docker.image)
# Recreate containers
openclaw sandbox recreate --all
# Edit config: agents.defaults.sandbox.* (or agents.list[].sandbox.*)
# Recreate to apply new config
openclaw sandbox recreate --all
# Edit config:
# - agents.defaults.sandbox.backend
# - agents.defaults.sandbox.ssh.target
# - agents.defaults.sandbox.ssh.workspaceRoot
# - agents.defaults.sandbox.ssh.identityFile / certificateFile / knownHostsFile
# - agents.defaults.sandbox.ssh.identityData / certificateData / knownHostsData
openclaw sandbox recreate --all
For the core ssh backend, recreate deletes the per-scope remote workspace root
on the SSH target. The next run seeds it again from the local workspace.
# Edit config:
# - agents.defaults.sandbox.backend
# - plugins.entries.openshell.config.from
# - plugins.entries.openshell.config.mode
# - plugins.entries.openshell.config.policy
openclaw sandbox recreate --all
For OpenShell remote mode, recreate deletes the canonical remote workspace
for that scope. The next run seeds it again from the local workspace.
openclaw sandbox recreate --all
# or just one agent:
openclaw sandbox recreate --agent family
# Update only one agent's containers
openclaw sandbox recreate --agent alfred
When you update sandbox configuration:
Use openclaw sandbox recreate to force removal of old runtimes. They are recreated automatically with current settings when next needed.
OpenClaw stores sandbox runtime metadata as one JSON shard per container/browser entry under the sandbox state directory. Older installs may still have monolithic legacy files:
~/.openclaw/sandbox/containers.json~/.openclaw/sandbox/browsers.jsonRegular sandbox runtime reads do not rewrite those files. Run openclaw doctor --fix to migrate valid legacy entries into the sharded registry directories. Invalid legacy files are quarantined so one bad old registry cannot hide current runtime entries.
Sandbox settings live in ~/.openclaw/openclaw.json under agents.defaults.sandbox (per-agent overrides go in agents.list[].sandbox):
{
"agents": {
"defaults": {
"sandbox": {
"mode": "all", // off, non-main, all
"backend": "docker", // docker, ssh, openshell
"scope": "agent", // session, agent, shared
"docker": {
"image": "openclaw-sandbox:bookworm-slim",
"containerPrefix": "openclaw-sbx-",
// ... more Docker options
},
"prune": {
"idleHours": 24, // Auto-prune after 24h idle
"maxAgeDays": 7, // Auto-prune after 7 days
},
},
},
},
}