# Vercel Sandbox changelog > Ephemeral microVMs for running untrusted code, as the SDK and CLI. - Vendor: Vercel - Category: Infrastructure & DevOps - Official site: https://vercel.com/docs/vercel-sandbox - Tracked by: What's New (https://whatsnew.fyi/product/vercel-sandbox) - Harvested from: GitHub (vercel/sandbox) - Entries below: 25 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### 3.1.0-beta.0 - Date: 2026-08-10 - Version: 3.1.0-beta.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%403.1.0-beta.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/3.1.0-beta.0 - Labels: Pre-release - **added** — Add support for drives via a new Drive class and CLI commands ###### Minor Changes - Add support for drives via a new `Drive` class and CLI commands. ([#196](https://github.com/vercel/sandbox/pull/196)) ### 3.0.0 - Date: 2026-08-07 - Version: 3.0.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%403.0.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/3.0.0 - **added** — Add support for Vercel Managed Images in the SDK and CLI - **deprecated** — Deprecate the runtime option in the SDK and CLI - **changed** — Change default sandbox image from node24 runtime on Amazon Linux 2023 to vercel/sandbox/universal based on Ubuntu with Node.js 24, Bun, Python 3.14, coding agents, and development tools - **changed** — Passing both runtime and image parameters is now an error ###### Major Changes - Add support for Vercel Managed Images and deprecate the `runtime` option in the SDK and CLI. Runtime-based creation remains supported through the legacy v2 API; image-based and default creation use the v3 API. Passing both `runtime` and `image` is an error. ([#276](https://github.com/vercel/sandbox/pull/276)) Sandboxes that do not specify an image now use `vercel/sandbox/universal`. The previous default was the `node24` runtime on Amazon Linux 2023. The new default is based on Ubuntu and includes Node.js 24, Bun, Python 3.14, coding agents, and common development and debugging tools. Existing `runtime` calls continue to work, it's recommended to migrate to Vercel managed images when possible: - Not using `runtime`: omit `image` to use the new Universal image, or set `image: "vercel/sandbox/node:24"` for an Ubuntu-based Node.js equivalent to the previous default. - Using `runtime: "node22"`: use `image: "vercel/sandbox/node:22"` for an Ubuntu-based equivalent. - Using `runtime: "node24"`: use `image: "vercel/sandbox/node:24"` for an Ubuntu-based equivalent. - Using `runtime: "node26"`: use `image: "vercel/sandbox/node:26"` for an Ubuntu-based equivalent. - Using `runtime: "python3.13"`: use `image: "vercel/sandbox/python:3.14"` for an Ubuntu-based equivalent, and note the Python version upgrade. ### 2.10.0-beta.0 - Date: 2026-08-04 - Version: 2.10.0-beta.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.10.0-beta.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.10.0-beta.0 - Labels: Pre-release - **added** — Add support for drives via a new Drive class and CLI commands ###### Minor Changes - Add support for drives via a new `Drive` class and CLI commands. ([#196](https://github.com/vercel/sandbox/pull/196)) ### 2.9.2 - Date: 2026-07-30 - Version: 2.9.2 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.9.2 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.9.2 - **changed** — Respect Retry-After header when the value is up to 20 seconds, and throw back the response to the client for values greater than 20 seconds ###### Patch Changes - Respect `Retry-After` when the value is up to 20 seconds. `Retry-After` values greater than 20 seconds will throw back the response to the client. ([#270](https://github.com/vercel/sandbox/pull/270)) ### 2.9.1 - Date: 2026-07-30 - Version: 2.9.1 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.9.1 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.9.1 - **added** — Add support for shared VCR images ###### Patch Changes - Add support for shared VCR images ([#265](https://github.com/vercel/sandbox/pull/265)) ### 2.9.0 - Date: 2026-07-24 - Version: 2.9.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.9.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.9.0 - **changed** — Sandbox.fork() now calls the POST /v2/sandboxes/:name/fork endpoint to copy the source sandbox's env and image server-side instead of implementing fork on the client-side ###### Minor Changes - Support the sandbox fork API. Instead of implementing fork on the client-side, `Sandbox.fork()` now calls the `POST /v2/sandboxes/:name/fork` endpoint, which copies the source sandbox's env (and image) server-side. ([#259](https://github.com/vercel/sandbox/pull/259)) ### 2.8.0 - Date: 2026-07-20 - Version: 2.8.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.8.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.8.0 - **added** — Add @vercel/sandbox-mock, a drop-in mock for @vercel/sandbox backed by just-bash that runs the real @vercel/sandbox classes against an in-memory implementation of the /v2/sandboxes HTTP API - **changed** — Snapshot.get now forwards a custom fetch via WithFetchOptions, matching Snapshot.list and Snapshot.tree behavior ###### Patch Changes - Add `@vercel/sandbox-mock`, a drop-in mock for `@vercel/sandbox` backed by `just-bash`. Rather than reimplementing the SDK surface, it runs the real `@vercel/sandbox` classes against an in-memory implementation of the `/v2/sandboxes` HTTP API injected through the SDK's `fetch` seam — so command execution, filesystem, multi-user/group management, snapshots, and forking all exercise the real SDK code. Commands run locally via `just-bash` against an in-memory filesystem, and `command()`/`setupSandbox()` let tests stub the output of commands `just-bash` can't run. ([#245](https://github.com/vercel/sandbox/pull/245)) As part of this, `Snapshot.get` now forwards a custom `fetch` (via `WithFetchOptions`), matching `Snapshot.list` and `Snapshot.tree`. Previously it always used the global `fetch`, so an injected client — such as the mock — could not intercept the request. ### 2.7.1 - Date: 2026-07-18 - Version: 2.7.1 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.7.1 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.7.1 - **changed** — Reduce default API call retries ###### Patch Changes - Reduce default API call retries ([#254](https://github.com/vercel/sandbox/pull/254)) ### 2.7.0 - Date: 2026-07-16 - Version: 2.7.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.7.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.7.0 - **added** — Expose the source image of a sandbox as a property on Sandbox, populated when the sandbox was created from a container image - **changed** — Clarify that network policies can only contain one of transform or forwardURL ###### Minor Changes - Expose the source `image` of a sandbox as a property on `Sandbox`, populated when the sandbox was created from a container image ([#253](https://github.com/vercel/sandbox/pull/253)) ###### Patch Changes - Clarify that network policies can only contain one of `transform` or `forwardURL` ([#251](https://github.com/vercel/sandbox/pull/251)) ### 2.6.1 - Date: 2026-07-15 - Version: 2.6.1 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.6.1 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.6.1 - **added** — Expose a typed error when creating a sandbox user whose username already exists ###### Patch Changes - Expose a typed error when creating a sandbox user whose username already exists. ([#250](https://github.com/vercel/sandbox/pull/250)) ### 2.6.0 - Date: 2026-07-13 - Version: 2.6.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.6.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.6.0 - **added** — Add createUser, asUser, createGroup, addUserToGroup, and removeUserFromGroup methods on the Sandbox class for multi-user and group management - **added** — Add SandboxUser class that scopes command and file operations to a specific user's context ###### Minor Changes - Add multi-user and group management: `createUser`, `asUser`, `createGroup`, `addUserToGroup`, and `removeUserFromGroup` on the `Sandbox` class, plus a `SandboxUser` class that scopes command and file operations to a specific user's context ([#116](https://github.com/vercel/sandbox/pull/116)) ### 2.6.0-beta.0 - Date: 2026-07-07 - Version: 2.6.0-beta.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.6.0-beta.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.6.0-beta.0 - Labels: Pre-release - **added** — Add support for drives via a new Drive class and CLI commands ###### Minor Changes - Add support for drives via a new `Drive` class and CLI commands. ([#196](https://github.com/vercel/sandbox/pull/196)) ### 2.5.0 - Date: 2026-07-07 - Version: 2.5.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.5.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.5.0 - **added** — Commands now surface how long they took to execute with the durationMs field ###### Minor Changes - Commands now surface how long they took to execute with the `durationMs` field ([#243](https://github.com/vercel/sandbox/pull/243)) ### 2.4.0 - Date: 2026-07-03 - Version: 2.4.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.4.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.4.0 - **added** — Expose `expiresAt` field in `Sandbox.list` and `Sandbox.get` to report the live timeout deadline of running sandboxes - **added** — Display `TIMEOUT` column in `sandbox list` command showing the current session's deadline including any timeout extensions - **changed** — `Sandbox.update({ timeout })` and `sandbox config timeout` now extend the currently running session so timeout changes take effect immediately instead of only applying to future sessions ###### Minor Changes - Report the live timeout deadline of running sandboxes. `Sandbox.list` and `Sandbox.get` now expose `expiresAt`, reflecting the current session's deadline including any timeout extensions, and `sandbox list` renders it in the `TIMEOUT` column. `Sandbox.update({ timeout })` (and `sandbox config timeout`) now also extends the currently running session so an increased timeout takes effect immediately instead of only applying to future sessions. ([#239](https://github.com/vercel/sandbox/pull/239)) ### 2.3.0 - Date: 2026-06-30 - Version: 2.3.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.3.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.3.0 - **added** — Support creating a sandbox from a custom image via the new image option on Sandbox.create and the --image flag on sandbox create and sandbox run - **changed** — Single API call to run, wait and get logs of command ###### Minor Changes - Support creating a sandbox from a custom image via the new `image` option on `Sandbox.create` and the `--image` flag on `sandbox create` / `sandbox run`. ([#232](https://github.com/vercel/sandbox/pull/232)) ###### Patch Changes - Single API call to run, wait and get logs of command ([#223](https://github.com/vercel/sandbox/pull/223)) ### 2.2.1 - Date: 2026-06-12 - Version: 2.2.1 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.2.1 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.2.1 - **fixed** — Fix scope inference failing with a raw Zod validation error by keeping teams missing updatedAt and skipping malformed team entries - **fixed** — Prevent CLI from leaking raw validation details when scope cannot be determined, showing a friendly hint instead - **fixed** — Mask OAuth response parse failures with friendly messaging instead of exposing raw validation details ###### Patch Changes - Fix scope inference failing with a raw Zod validation error. Teams missing `updatedAt` are now kept and malformed team entries are skipped. The CLI also no longer leaks raw validation details when scope can't be determined, showing a friendly hint instead. OAuth response parse failures are masked the same way. ([#225](https://github.com/vercel/sandbox/pull/225)) ### 2.2.0 - Date: 2026-06-10 - Version: 2.2.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.2.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.2.0 - **changed** — Move the interactive shell server out of the sandbox and into the sandbox-controller, with sandbox connect/ssh (CLI) and Sandbox.openInteractive() (SDK) now requesting a WebSocket URL and token from the API to connect to the controller-hosted PTY instead of installing and bootstrapping the vc-interactive-server binary inside the sandbox - **removed** — Remove the bundled vc-interactive-server binary along with @vercel/pty-tunnel and @vercel/pty-tunnel-server packages - **changed** — Upgrade Zod to v4 and update validators for Zod 4 compatibility ###### Minor Changes - Move the interactive shell server out of the sandbox and into the sandbox-controller. `sandbox connect`/`ssh` (CLI) and the new `Sandbox.openInteractive()` (SDK) now request a WebSocket URL and token from the API and connect to the controller-hosted PTY, instead of installing and bootstrapping the `vc-interactive-server` binary inside the sandbox at connect time. This removes the bundled server binary along with the `@vercel/pty-tunnel` and `@vercel/pty-tunnel-server` packages. ([#222](https://github.com/vercel/sandbox/pull/222)) ###### Patch Changes - Upgrade Zod to v4 and update validators for Zod 4 compatibility. ([#219](https://github.com/vercel/sandbox/pull/219)) ### 2.2.0-beta.0 - Date: 2026-06-05 - Version: 2.2.0-beta.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.2.0-beta.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.2.0-beta.0 - Labels: Pre-release - **added** — Add support for drives via a new Drive class and CLI commands ###### Minor Changes - Add support for drives via a new `Drive` class and CLI commands. ([#196](https://github.com/vercel/sandbox/pull/196)) ### 2.1.1 - Date: 2026-06-04 - Version: 2.1.1 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.1.1 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.1.1 - **fixed** — Update Undici version to fix incompatibility with Node.js 26 ###### Patch Changes - Update Undici version to fix incompatibility with Node.js 26 ([#220](https://github.com/vercel/sandbox/pull/220)) ### 2.1.0 - Date: 2026-06-01 - Version: 2.1.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.1.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.1.0 - **added** — Add timeoutMs parameter to runCommand in SDK and --timeout flag to sandbox exec in CLI ###### Minor Changes - Add `timeoutMs` to `runCommand` (SDK) and a `--timeout ` flag to `sandbox exec` (CLI). ([#212](https://github.com/vercel/sandbox/pull/212)) ### 2.0.2 - Date: 2026-05-29 - Version: 2.0.2 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.0.2 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.0.2 - **changed** — Show the current snapshot's siblings in snapshots tree, which now reads the API's anchor node so snapshots sharing the current snapshot's parent are listed, and siblings are rendered by snapshot ID instead of source session ID ###### Patch Changes - Show the current snapshot's siblings in `snapshots tree`. The tree now reads the API's `anchor` node so snapshots sharing the current snapshot's parent are listed, and siblings are rendered by snapshot ID instead of source session ID. ([#211](https://github.com/vercel/sandbox/pull/211)) ### 2.0.1 - Date: 2026-05-27 - Version: 2.0.1 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.0.1 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.0.1 - **added** — Add updatedAt getter to the Snapshot class ###### Patch Changes - Add `updatedAt` getter to the `Snapshot` class ([#208](https://github.com/vercel/sandbox/pull/208)) ### 2.0.0 - Date: 2026-05-22 - Version: 2.0.0 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.0.0 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.0.0 - **added** — Introduce named and long-lived sandboxes - **added** — Add L7 request matchers and forward URLs support to network policy rules - **added** — Support pagination (CLI and SDK) when listing sandboxes, snapshots, sessions - **added** — Add `defineSandboxProxy` helper in `@vercel/sandbox/proxy` to easily implement network policies forwarding rules - **added** — Support keepLastSnapshots feature for CLI and SDK - **added** — Add sandbox port replacement support through `update` - **added** — Support default snapshot expiration for persistent sandboxes - **added** — Support a new method: Sandbox.getOrCreate() - **added** — Move to cursor pagination with new sortBy parameter for lists and new statusUpdatedAt filter - **added** — Add `Sandbox.fork(...)` to the SDK and `sandbox fork ` to the CLI for forking an existing sandbox into a new one - **added** — Support new onResume parameter in Sandbox.create and Sandbox.get - **added** — Support snapshot tree pagination - **added** — Add support for tags - **added** — Add Node 26 support - **added** — Add support for patch + delete v2 endpoints for named sandboxes - **changed** — Rename sandbox to session, namedSandbox to sandbox - **changed** — Refactor the sandbox update and deprecate old network-policy update - **changed** — Rename snapshotOnShutdown to persistent - **changed** — Automatically scale memory to vcpu when updating - **changed** — Remove support for blocking parameter in .stop() and default to always blocking - **changed** — Lists now unwrap the json and return the items and pagination fields directly - **fixed** — Fix an 422 error when trying to resume a sandbox after snapshotting - **fixed** — Fix `readFile` writing the API error JSON into the destination when the file response is not an octet-stream - **fixed** — Fix bug where the first ssh connection hang - **fixed** — Fix JsDocs, messages and double-error message bug - **changed** — Support updating current-snapshot-id of an existing sandbox ###### Major Changes - Introduce named and long-lived sandboxes ([#177](https://github.com/vercel/sandbox/pull/177)) ###### Minor Changes - Add L7 request matchers and forward URLs support to network policy rules. ([#177](https://github.com/vercel/sandbox/pull/177)) - Support pagination (CLI and SDK) when listing sandboxes, snapshots, sessions ([#177](https://github.com/vercel/sandbox/pull/177)) - Add `defineSandboxProxy` helper in `@vercel/sandbox/proxy` to easily implement network policies forwarding rules ([#188](https://github.com/vercel/sandbox/pull/188)) - Rename sandbox to session, namedSandbox to sandbox ([#177](https://github.com/vercel/sandbox/pull/177)) - Support keepLastSnapshots feature for CLI and SDK ([#193](https://github.com/vercel/sandbox/pull/193)) - Add sandbox port replacement support through `update`. ([#177](https://github.com/vercel/sandbox/pull/177)) - Support default snapshot expiration for persistent sandboxes ([#177](https://github.com/vercel/sandbox/pull/177)) - Refactor the sandbox update and deprecate old network-policy update ([#177](https://github.com/vercel/sandbox/pull/177)) - Support a new method: Sandbox.getOrCreate() ([#177](https://github.com/vercel/sandbox/pull/177)) - Rename snapshotOnShutdown to persistent ([#177](https://github.com/vercel/sandbox/pull/177)) - Automatically scale memory to vcpu when updating ([#177](https://github.com/vercel/sandbox/pull/177)) - Move to cursor pagination. Support new sortyBy parameter for lists. Support new statusUpdatedAt filter ([#177](https://github.com/vercel/sandbox/pull/177)) - Add `Sandbox.fork(...)` to the SDK and `sandbox fork ` to the CLI for forking an existing sandbox into a new one. ([#205](https://github.com/vercel/sandbox/pull/205)) - Remove support for blocking parameter in .stop() and default to always blocking. Improve CLI output when stopping a sandbox. ([#177](https://github.com/vercel/sandbox/pull/177)) - Lists now unwrap the json and return the items and pagination fields directly ([#177](https://github.com/vercel/sandbox/pull/177)) - Support new onResume parameter in Sandbox.create and Sandbox.get ([#177](https://github.com/vercel/sandbox/pull/177)) - Support snapshot tree pagination ([#191](https://github.com/vercel/sandbox/pull/191)) ###### Patch Changes - Add support for tags ([#177](https://github.com/vercel/sandbox/pull/177)) - Fix an 422 error when trying to resume a sandbox after snapshotting ([#177](https://github.com/vercel/sandbox/pull/177)) - Add Node 26 support. ([#177](https://github.com/vercel/sandbox/pull/177)) - Add support for patch + delete v2 endpoints for named sandboxes. ([#177](https://github.com/vercel/sandbox/pull/177)) - Fix `readFile` writing the API error JSON into the destination when the file response is not an octet-stream. The SDK now rejects any non-`application/octet-stream` response (including 2xx with a JSON error body) instead of piping it verbatim to the caller's stream. ([#202](https://github.com/vercel/sandbox/pull/202)) - Fix bug where the first ssh connection hang ([#177](https://github.com/vercel/sandbox/pull/177)) - Support updading current-snapshot-id of an existing sandbox ([#177](https://github.com/vercel/sandbox/pull/177)) - Fix JsDocs, messages and double-error message bug ([#177](https://github.com/vercel/sandbox/pull/177)) ### 2.0.0-beta.24 - Date: 2026-05-22 - Version: 2.0.0-beta.24 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.0.0-beta.24 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.0.0-beta.24 - Labels: Pre-release - **added** — Add Sandbox.fork(...) to the SDK and sandbox fork to the CLI for forking an existing sandbox into a new one - **added** — Fork copies config parameters resources (vcpus), timeout, networkPolicy, tags, ports, persistent, snapshotExpiration, keepLastSnapshots and allows the caller to override any of them - **removed** — Remove sandbox create --sandbox-snapshot and Snapshot.fromSandbox(name), use sandbox fork / Sandbox.fork({ sourceSandbox: name }) instead - **changed** — Raw snapshot IDs are now supported via sandbox create --snapshot and Sandbox.create({ source: { type: "snapshot", snapshotId } }) ###### Minor Changes - Add `Sandbox.fork(...)` to the SDK and `sandbox fork ` to the CLI for forking an existing sandbox into a new one. The fork copies as many config parameters as the server exposes — `resources` (vcpus), `timeout`, `networkPolicy`, `tags`, `ports`, `persistent`, `snapshotExpiration`, `keepLastSnapshots` — and lets the caller override any of them. Environment variables are not copied (encrypted server-side) and must be re-supplied via `env` / `--env`. ([#205](https://github.com/vercel/sandbox/pull/205)) **Breaking**: removed `sandbox create --sandbox-snapshot ` and `Snapshot.fromSandbox(name)`. Use `sandbox fork ` / `Sandbox.fork({ sourceSandbox: name })` instead. Raw snapshot IDs are still supported via `sandbox create --snapshot ` and `Sandbox.create({ source: { type: "snapshot", snapshotId } })`. ### 2.0.0-beta.23 - Date: 2026-05-22 - Version: 2.0.0-beta.23 - Original notes: https://github.com/vercel/sandbox/releases/tag/%40vercel/sandbox%402.0.0-beta.23 - Permalink: https://whatsnew.fyi/product/vercel-sandbox/releases/2.0.0-beta.23 - Labels: Pre-release - **fixed** — Fix readFile writing the API error JSON into the destination when the file response is not an octet-stream by rejecting any non-application/octet-stream response instead of piping it verbatim to the caller's stream ###### Patch Changes - Fix `readFile` writing the API error JSON into the destination when the file response is not an octet-stream. The SDK now rejects any non-`application/octet-stream` response (including 2xx with a JSON error body) instead of piping it verbatim to the caller's stream. ([#202](https://github.com/vercel/sandbox/pull/202))