packages/plugins/sandbox-providers/SANDBOX-REQUIREMENTS.md
This document states the sandbox environment as a contract. The sandbox owner must meet this contract. The Paperclip runtime does not build the environment at exec time. The environment is a requirement, not a build step.
This document states requirements. It does not state build steps.
A sandbox provider can wrap a command with an advisory bubblewrap (bwrap)
wrapper. The wrapper is advisory, best-effort, and automatic. It adds no
security. The ephemeral sandbox model stays the only security posture. A missing
prerequisite degrades to the plain command. It never fails the lease. Daytona is
the current provider with bwrap support.
The wrapper needs three run-time prerequisites. Each prerequisite is a fact of the image or snapshot, not a fact of the runtime code. The runtime does not build the image or snapshot. The runtime only probes for the capability and degrades when the capability is absent. So each prerequisite is an owner responsibility under the requirement-not-build contract above:
bubblewrap package is installed, and the bwrap binary is on the PATH
(normally /usr/bin/bwrap).sudo rule lets the sandbox user run bwrap as root.The owner supplies these prerequisites through the image or snapshot. The provider README states the distro-specific install commands, the exact sudoers rule, the user-namespace setting, and the verification command. The install and the sudoers change are environment provisioning at the image or snapshot layer. Route them to DevOps through the board. Do not add a provisioning script to the repository.
node must be installed and on the PATH.claude, codex, gemini, and similar CLIs.The sandbox execution and synchronization paths need more than node and the
agent CLIs. The owner must also supply these:
sh, normally /bin/sh. The runtime runs each command with
sh -c <script>. The runtime uses bash only when the adapter sets the shell
to bash.tar. The synchronization path extracts and creates archives with tar. A
sandbox without tar cannot receive or return workspace files.Paperclip probes each CLI before launch. Paperclip uses the same detection pattern that the runtime Dockerfiles use:
command -v <cmd> || exit 1
Paperclip probes each CLI with command -v <cmd>. Paperclip fails loudly when
the CLI is absent and no install command is configured for the CLI.
An adapter can configure an install command for a CLI. When an install command is configured, the runtime obeys this flow:
command -v <cmd>.An owner who relies on a configured install command must also supply the network access, the filesystem write access, and the package tooling that the install command needs. When no install command is configured, the runtime does not install the CLI. The owner must supply the CLI on the PATH.
nvm on the exec path.node and each
used agent CLI without any action from the runtime, except for a configured
install command.