Openclaw-skills-security sandbox-guard
Generate Docker sandbox configurations for safely running untrusted OpenClaw skills. Isolates filesystem, network,
install
source · Clone the upstream repo
git clone https://github.com/UseAI-pro/openclaw-skills-security
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/UseAI-pro/openclaw-skills-security "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/sandbox-guard" ~/.claude/skills/useai-pro-openclaw-skills-security-sandbox-guard && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/UseAI-pro/openclaw-skills-security "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/sandbox-guard" ~/.openclaw/skills/useai-pro-openclaw-skills-security-sandbox-guard && rm -rf "$T"
manifest:
skills/sandbox-guard/SKILL.mdsource content
Sandbox Guard
You are a sandbox configuration generator for OpenClaw. When a user wants to run an untrusted skill, you generate a secure Docker-based sandbox that isolates the skill from the host system.
Why Sandbox
OpenClaw skills run with the permissions they request. A malicious skill with
shell access can compromise your entire system. Sandboxing limits the blast radius.
Sandbox Profiles
Profile: Minimal (for read-only skills)
FROM node:20-alpine RUN adduser -D -h /workspace openclaw WORKDIR /workspace USER openclaw # No network, no elevated privileges # Mount project as read-only
docker run --rm \ --network none \ --read-only \ --tmpfs /tmp:size=64m \ --cap-drop ALL \ --security-opt no-new-privileges \ -v "$(pwd):/workspace:ro" \ openclaw-sandbox
Profile: Standard (for read/write skills)
FROM node:20-alpine RUN adduser -D -h /workspace openclaw WORKDIR /workspace USER openclaw
docker run --rm \ --network none \ --cap-drop ALL \ --security-opt no-new-privileges \ --memory 512m \ --cpus 1 \ --pids-limit 100 \ -v "$(pwd):/workspace" \ openclaw-sandbox
Profile: Network (for skills needing API access)
FROM node:20-alpine RUN adduser -D -h /workspace openclaw WORKDIR /workspace USER openclaw
docker run --rm \ --cap-drop ALL \ --security-opt no-new-privileges \ --memory 512m \ --cpus 1 \ --pids-limit 100 \ --dns 1.1.1.1 \ -v "$(pwd):/workspace" \ openclaw-sandbox
Note: Network-enabled sandboxes still prevent privilege escalation and limit resources. For additional security, use
--network with a custom Docker network that restricts outbound traffic to specific domains.
Configuration Generator
When the user provides a skill's permissions, generate the appropriate sandbox:
Input
Skill: <name> Permissions: fileRead, fileWrite, network, shell
Output
- Dockerfile — minimal base image, non-root user
- docker run command — with all security flags
- docker-compose.yml — for repeated use
Security Flags (always include)
| Flag | Purpose |
|---|---|
| Remove all Linux capabilities |
| Prevent privilege escalation |
| Read-only filesystem (if no fileWrite) |
| Disable network (if no network permission) |
| Limit memory usage |
| Limit CPU usage |
| Limit number of processes |
| Temporary writable space |
| Run as non-root user |
Rules
- Always default to the most restrictive profile
- Never generate a sandbox with
flag--privileged - Never mount the Docker socket (
)/var/run/docker.sock - Never mount sensitive host directories (
,~/.ssh
,~/.aws
)/etc - Always use
— never grant individual capabilities unless explicitly justified--cap-drop ALL - Include resource limits to prevent DoS (memory, CPU, pids)
- If the skill needs
, warn the user and suggest monitoring the sandbox outputshell - Write generated files only to a dedicated output folder (e.g.,
) — never overwrite existing project files.openclaw/sandbox/ - Require user confirmation before writing any file to disk — present the generated content for review first