Vercel Sandbox is an ephemeral compute primitive designed to safely run untrusted or user-generated code.
by vercelTypeScript
Last 12 weeks · 69 commits
3 of 6 standards met
What (and /), , and all hardcoded as the executable of the interactive session. vercel/api#85167 teaches sandbox-init to resolve the account's shell from its passwd entry when the frame carries no command — but the CLI always names one, so that path never ran. The commands that only ever open a shell now send no command and , so the session spawns : the shell the image's user actually declares, as a login shell, with its profile sourced. Commands the user typed are still sent verbatim. Wire-level, the frame goes from to . in is now the single place that decides what a session spawns, and 's is optional. exposes — the command's handler, with optional — so // can ask for a shell instead of fabricating an argv. Most of that file's diff is de-indentation from moving the handler body into a named function. With the same request becomes (), which is sudo's own version of this feature: the target account's passwd shell, as a login shell. It starts in that account's home directory, so no longer survives the + implicit-shell combination. Explicit commands under are unchanged. Nothing is echoed as for an implicit shell anymore: the sandbox picks the executable, so the CLI would only be printing a guess. api-side coordination No changes to #85167 are needed. Its empty-command path passes through to verbatim, so the client-supplied lands on the resolved shell — verified against and the controller's bridge on , neither of which rejects an empty . The dependency runs one way: this PR should land after #85167 is deployed. Against an older sandbox-init, an empty command reaches and the session fails to start. is spelled out because that is the form bash, zsh, fish and sudo all accept. If we ever need to support a shell that only takes , that translation belongs next to the passwd lookup in sandbox-init, where the shell is actually known — not in the CLI. Testing and in . New coverage: — over the four combinations (implicit/explicit command × sudo), plus sessions driven against a real local WebSocket server asserting the frame that goes over the wire, and that only an explicit command is echoed. — , , and reach with no execution; still carries the command it was given. Verified these fail against the old . 🤖 Generated with Claude Code
Why now accepts (explicit network, explicit opt-out) and applies a project-level Secure Compute default when the field is omitted. The SDK needs to expose that intent. What Adds to params and forwards it through . Omitted means inherit the project default; means create without Secure Compute. Minor changeset for . Validation Client tests assert an explicit string and an explicit are serialized into the request body, and that the key is absent when the option is omitted (so the API can apply the project default).
What changed adds public to Sandbox create and fork forwards explicit network IDs to the API forwards to opt out of a project default documents omitted values as inheriting the project default Validation 279 tests passed package typecheck passed Dependency Release after https://github.com/vercel/api/pull/83259 is deployed.
Summary replace the Node image’s major-only build argument with exact values pin current Node 22, 24, and 26 releases in the Docker Bake matrix publish both major-version and exact-version image tags document the exact releases used by each image tag add a patch changeset for Verification rendered with Docker Buildx Bake asserted Node 22.23.2, 24.19.0, and 26.7.0 args and tags verified each pinned Linux x64 tarball exists upstream Stack Base PR for #280, which adds nightly automatic upgrades. 🤖 Generated with Claude Code
Repository: vercel/sandbox. Description: Vercel Sandbox is an ephemeral compute primitive designed to safely run untrusted or user-generated code. Stars: 174, Forks: 34. Primary language: TypeScript. Languages: TypeScript (99%), Dockerfile (0.8%), HCL (0.2%), JavaScript (0%), Shell (0%). License: Apache-2.0. Homepage: https://vercel.com/docs/vercel-sandbox Latest release: @vercel/sandbox-mock@3.0.0 (3d ago). Open PRs: 17, open issues: 3. Last activity: 1h ago. Community health: 62%. Top contributors: marc-vercel, github-actions[bot], QuiiBz, AndyW22, Schniz, valerian-roche, LukeSheard, TooTallNate, allenzhou101, robherley and others.