Sandbox Forking & Snapshot Name Filters
This week improves sandbox provisioning and snapshot workflows with in-place sandbox forking, name-based snapshot lookup, and Docker-compatible template file copying.Sandbox forking
You can now fork a running sandbox to spin up one or more clones from its exact in-memory state. The source is briefly paused, snapshotted, and resumed with its ID and expiration untouched, while each fork is returned independently as a running sandbox or a per-fork error. Usesandbox.fork({ count, timeoutMs }) in JavaScript SDK 2.35.0 or sandbox.fork(count=..., timeout=...) in Python SDK 2.34.0. (#3202, #1554)Snapshot filtering by name
Sandbox.listSnapshots() and Sandbox.list_snapshots() now accept a name filter matching a snapshot name or ID, optionally tag-qualified such as "my-team/my-snapshot:v1". It combines with the existing sandbox ID filter and returns an empty page for unknown names. Available in JavaScript SDK 2.34.0 and Python SDK 2.33.0. (#1523)Docker-compatible template file copies
The templatecopy step now merges into existing destination directories instead of replacing them, matching Docker COPY semantics. Copying src/ into an image that already has files under /app/src/ preserves those entries and only overwrites what the source provides. (#3283)Fixes
- Fixed template builds occasionally reporting a failed command stream as success, so build failures now surface reliably. (#3281)
- Fixed template builds sizing the root filesystem from stale free-space totals, which could leave the resized template short on space after an unclean shutdown. (#3282)
- Fixed copying a template layer when the source snapshot contained only a filesystem image and no memory state. (#3299)
- Fixed resumed sandboxes forwarding stale pre-resume log lines with their old timestamps instead of dropping them. (#3297)
- Fixed the JavaScript SDK
Template.copy()resolving source paths against the SDK’s own directory undertarget: es2022and above. (#1539) - Fixed the Python SDK leaking a proxy connection pool on every volume operation when a proxy was configured, and added connect-level retries via
E2B_CONNECTION_RETRIES. (#1534) - Self-hosted: fixed the Nomad node-pool autoscaler terminating random allocations when downscaling ineligible nodes. (#3301)
- Reliability and security hardening across platform services, including dependency and base image CVE patches.
New features
Per-role storage URLs for self-hosted deploymentsSelf-hosted deployments can now point templates and the build cache at different storage backends by settingTEMPLATE_STORAGE_URL and BUILD_CACHE_STORAGE_URL to full destination URLs, including s3://, gs://, and file:// schemes. Existing bucket and provider environment variables continue to work unchanged. (#3246)Updates
Compressed uploads for AWS storageSelf-hosted deployments backed by AWS S3 can now upload template layers with the same compressed transfer path already used for other providers, cutting bandwidth on large template builds. (#3232)Bug fixes
- Fixed an issue where a resumed sandbox could silently drop outbound traffic until its network cache re-resolved, causing stalled connections right after resume. (#3271)
- Fixed a rare deadlock in sandbox command execution where cancelling a request while a command was starting could leave the call hung. (#3256)
- Fixed template build failures caused by incorrect compressed uploads and cache handling for template layers. (#3231)
- Fixed an issue where creating a template could fail with a stale lock error when a previous build had exited without cleaning up. (#3217)
- Fixed template builds unpacking OCI image layers so that whiteouts and permissions match the behavior of the Docker daemon. (#3215)
- Fixed an issue where a sandbox could remain accounted for after being removed, keeping it in the paused list until the next reconciliation. (#3199)
- Reliability and security hardening across platform services, including dependency and base image CVE patches.