2026-09-23·by Sijie Wang#standmeet#architecture#design

sandbox-js-hardening

Owner-script sandbox hardening

Parent: structure

Owner-authored skill scripts (skill_run_script, see skills-progressive-disclosure) are untrusted, so they run hard-sandboxed: --network=none (can't exfiltrate), --read-only root (can't persist), --tmpfs /tmp bounded scratch (64 MB), --memory=256m --cpus=0.5 (runaway loops capped), --rm (auto-cleaned). The interpreter is a 3-language whitelist (python3 -c / node -e / bash -c) — no arbitrary binaries, so the shell-injection surface outside the boundary is zero. These are docker run flags assembled by DockerRunner in internal/capabilities/sandbox/sandbox.go (the package moved under capabilities/ with the domain-module split; the bwrap workspaces of the MCP capability sandboxes are a different package, capabilities/sandboxws).

Same instinct as the network-isolated MCP capability sandboxes (mcp-capability-plugins): untrusted code runs caged, reaching the host only through narrow, declared channels.

read next
about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →