Skip to content

2026.30

Latest

Choose a tag to compare

@jakubno jakubno released this 10 Sep 09:26
· 103 commits to main since this release

What's Changed

API

Compatibility Notes

  • Remove deprecated E2B access-token authentication, its management endpoints, and the access_tokens table. Clients must use API keys or supported JWT authentication — by @tvi in 4580311, 110fa5b
  • Remove database read-replica support — by @jakubno in 23ada3e

Features

  • Add sandbox-list sorting by start time, a startedAfter filter, and filtering by template ID or alias — by @drankou in e6de33c
  • Add sandbox workload identity configuration through iam.tokens, with token definitions preserved across pause, resume, and fork. Admission is feature-gated — by @gm-e2b in 13ddb3d
  • Add feature-gated /secrets create, list, get, update, and delete operations backed by a configured secrets-store service. Responses return metadata, not secret values — by @gm-e2b in d42174c, 3b56826
  • Add dynamic log routing with primary and shadow destinations, plus ClickHouse-backed sandbox and build log reads. Support LOGS_READ_CONFIG as a fallback for deployments without LaunchDarkly and make LOKI_URL optional — by @rguliyev and @svalleru in 1b19a3b, 8006b78
  • Add explicit filesystem-only resume through memory: false on resume/connect, behind fs-only-resume-api. This cold-boots from disk without deleting the stored memory snapshot; disk recovery has crash-recovery semantics — by @bchalios in 8614ec4, 8a3f69d
  • Add optional CPU-model restrictions for filesystem-only snapshots and orchestrator-release filtering for sandbox placement — by @jakubno in 744a2b0, 631be3d
  • Add cluster registration, stable registration IDs, project assignment lookup, replay-safe assignment/detachment, and authenticated cluster management operations — by @matthewlouisbrockman in 65d37cd, 54693ff, 7378b89, b0a9d73
  • Add guarded cluster cleanup and teardown-readiness checks. Release soft-deleted references during cluster deletion while preserving template/build history — by @matthewlouisbrockman in 7c417f4, a8bd47a
  • Add administrative passthrough for remote-cluster node-pool management — by @sitole in 8fda5b9
  • Expose team running-sandbox counts and outstanding node work through administrative APIs — by @dobrac and @jakubno in fcc2edb, 6cd3e5f

Improvements

  • Add machine-readable error_code values and differentiated HTTP statuses for placement failures, surface detailed failure reasons, and include template/build IDs in create errors — by @tomassrnka and @e2b-harness[bot] in c426430, 063aa20, 1bbdd06
  • Share batched sandbox-store scanning and bound store/reconciliation Redis MGET commands to 256 keys — by @jakubno and @wj-e2b in 2d3e4f9, 5e0480d, a23fe66
  • Add user-agent and SDK integration attribution, flat team_id properties, and egress-proxy usage to product analytics — by @mishushakov, @beran-t, and @arkamar in d83be18, 97ea2bd, 1fe4959
  • Support explicit analytics-collector ports and configurable TLS — by @tvi in 6d41cb5
  • Unify service discovery behind shared backend interfaces and support combined orchestrator discovery across schedulers — by @dobrac in 455db4a, 8a1c824, 9cb80f4
  • Track node reachability independently of node status and narrow running-sandbox synchronization payloads — by @jakubno in 315e1bf, cbcb146

Bug Fixes

  • Reject non-positive timeouts on sandbox create, resume, and fork — by @chill-czar in 5a4b631
  • Expose pagination, sandbox-count, and rate-limit response headers through CORS — by @mishushakov in e832b1e
  • Discover local orchestrators as template builders when they provide the template-manager service — by @tvi in 9ea005a
  • Finish snapshot builds and record terminal template-build status after client disconnects; mark snapshot builds failed when pause is rejected — by @arkamar and @jakubno in 0159f8c, 8586a66, 42f6997
  • Pin sandbox removal to the intended execution and make routing-catalog deletion an atomic compare-and-delete — by @jakubno and @tomassrnka in c29ee26, 2a0c0af
  • Stop retrying pause on already-killing sandboxes and stagger Redis lock-release retries — by @dobrac and @wj-e2b in eef64c7, c7241e3
  • Rebuild template aliases on the team's current cluster — by @matthewlouisbrockman in b74dbb6
  • Deregister nodes whose gRPC connections have shut down — by @jakubno in a3200fe
  • Retain ineligible Nomad nodes during node-pool downscaling — by @wj-e2b in 4f8269a

Dashboard and Project Management

Features

Improvements

  • Use project naming for generated default names and provisioning messages, and migrate existing generated default team names — by @Kraci in 214364e, 7b3d30a
  • Add disable-legacy-team-mutations to reject legacy lifecycle writes with HTTP 412 while retaining reads and management projection writes — by @ben-fornefeld in 42bdf4a

Bug Fixes


Authentication

Features

  • Add service JWT authentication to API and dashboard administrative routes through ADMIN_AUTH_PROVIDER_CONFIG — by @ben-fornefeld in 9071aac
  • Expose JWKS, OIDC, and linked OIDC verification through the public auth facade, with a reusable authenticator constructor and self-contained internal package layout — by @ben-fornefeld in cda31bf, f68e713, 7685796
  • Allow issuers to omit audience configuration when no audience-match policy is set. Issuer, signature, and temporal-claim verification still apply — by @ben-fornefeld in 6886572
  • Add shared authentication context for authorized deployment operators — by @matthewlouisbrockman in 2c58ffe

Bug Fixes


Sandbox Runtime (envd)

Features

  • Add opt-in live envd upgrades during resume, preserving process and filesystem-watcher handover state. Add a separate offline rootfs-swap upgrade path for quiesced filesystem-only snapshots — by @kalyazin in 47a7cc8, b8bba83

Improvements

  • Cache the host envd binary across resumes and preserve the sandbox's default user through live upgrades — by @kalyazin in eb4fc37, 972e9d3
  • Add filesystem freezing through the exec API for older envd versions, behind fsfreeze-via-exec — by @bchalios in 3b2c7d9

Bug Fixes

  • Stop the port scanner promptly during shutdown and unblock broadcasts when the scanner exits — by @AdaAibaby and @jakubno in 002fd9f, 1b65106
  • Wait for workload freeze before snapshot capture, freeze workload-owned cgroups, and stop counting vanished cgroups as freeze/thaw failures — by @kalyazin in b4dd80f, f06e9bc, 27eefde
  • Flush logs before pause snapshots — by @wj-e2b in e915d32
  • Report process-start resource exhaustion as resource_exhausted — by @tomassrnka in f733a71
  • Remove raw filesystem-tool output from offline envd upgrade errors — by @bchalios in 41917bc
  • Prevent lost wakeups when cancelling semaphore acquisition — by @jakubno in a586d1e

Orchestrator

Features

  • Allow same-node warm resumes to read memory while deduplication runs, behind memfd-dedup-inflight-serve — by @kalyazin in 77f25a0
  • Add in-place checkpoints that resume the same Firecracker process after snapshot capture, plus background copy-on-write memory export. These are opt-in paths requiring synchronous write protection; the in-place path requires an E2B Firecracker release of at least 0.2.0 — by @bchalios in eb00811, 2b48f7c, 49eaa7a
  • Add synchronous userfaultfd write-protection handling and an optional page-tracker source for pause-time dirty memory — by @bchalios in 456db74, 90bf3a8
  • Move rootfs snapshot export off the pause critical path behind defer-rootfs-export — by @bchalios in b5b9e18
  • Add last-cycle memory prefetch and configurable prefetch coalescing on resume — by @kalyazin in ea94196
  • Add flag-gated pre-boot filesystem journal recovery for cold-boot resumes of snapshots whose filesystems were not quiesced — by @bchalios in e8dd020
  • Add snapshot-admission preflight checks and flag-gated restoration of a retryably refused pause to running. Auto-pause retries have a configurable budget before falling back to a filesystem-only snapshot, whose next resume cold-boots. For remote clusters, enabling pause-refusal-restore requires cluster-edge support for restoring routes after refusals — by @bchalios in 2a4a64d, 1d4e9e3

Improvements

  • Add a shutting-down state and track/report outstanding node work — by @jakubno in c13dc2d, ee35600, fd9602b
  • Evaluate feature flags with instance-group context and support per-team guest kernel command-line parameters — by @arkamar and @kalyazin in 8bc99ed, 1584004
  • Persist whether filesystem-only snapshots were captured with a quiesced filesystem — by @kalyazin in c60ffc7

Bug Fixes


Template Builds

Features

  • Add distro-aware provisioning for Debian/Ubuntu, RHEL-family images, Arch, and Alpine, plus support for premade NixOS base images — by @tomassrnka in 1abece1, 4bd42d2
  • Separate build-time disk growth from final free-space targets. Add minFreeDiskMb to template build requests: omission uses the team's default, zero requests no minimum growth, and growth is best effort without shrinking existing filesystems. Expansion is controlled by build-ensure-free-disk-space. The intermediate freeDiskSpaceMB field is ignored and removed from the schema — by @gm-e2b in 8c8d8d7, fa6f8c2, 339dbbf, debf6be
  • Select build-time envd through build-envd-version or DEFAULT_ENVD_VERSION, including release-versioned staged binaries — by @charlie-e2b in 18e47dd
  • Add an opt-in ext4 directory index for newly built root filesystems — by @arkamar in e187eb4

Improvements

  • Add guest console output, Firecracker version overrides, and improved GDB support to resume-build and copy-build. Validate GDB destination buckets before copying snapshots — by @bchalios and @kalyazin in f83f7c1, 5385594, 9be382f
  • Install ss in template builds and the NixOS base image, and provision findutils for minimal RPM-family images — by @tomassrnka and @charlie-e2b in 5071683, 12ee9b1

Bug Fixes

  • Support filesystem-only snapshots in copy-build; reuse source metadata for SQL output and reject legacy metadata without required version information — by @arkamar in 62add04, e0f0528
  • Create trailing-slash COPY destinations before moving files — by @tomasvarga in a19b99b
  • Fall back to ID_LIKE for compatible distro derivatives, select chrony's time source at boot, and fix Alpine PHC compatibility — by @tomassrnka in 73399b3, 7fa567c, dfa9764
  • Restore package-owned certificate paths before building the CA bundle and copy skeleton files without depending on a shell cd command — by @tomassrnka in 6f17229, af874ef

Networking and Proxy

Features

  • Add an nftables-based sandbox network path behind NETWORK_VERSION=2 — by @tomassrnka in 761381a
  • Support HTTPS services inside sandboxes through network.httpsPorts — by @jakubno in d69867b, b5f419a
  • Support wildcard domains in outbound HTTPS transform rules, with exact-match precedence and configurable domain limits — by @gm-e2b in 9072e15, d843e3f, 5d13e27
  • Add shared secret-marker parsing and bound the number of distinct secrets referenced by a transform domain — by @gm-e2b in f7de418, 5b8a468
  • Add orchestrator-published sandbox routing records behind separate publish/read flags. Enable publishing for one maximum sandbox lifetime before prioritizing those records in client-proxy — by @sitole in fc9bc5b

Improvements

  • Remove the unimplemented marker from the SOCKS5 egress-proxy schema and correct the ordering of proxy configuration and firewall updates — by @arkamar in 0716edb, 7faa59e
  • Separate egress DSCP marking for template builds and regular sandboxes — by @tomassrnka in 41c38cb

Bug Fixes


Storage and Volumes

Features

  • Add Azure Blob storage through azblob:// URLs, Azure Container Registry providers, and Azure-aware public-build copy tooling — by @michalsuba-e2b in 21fed5f, 7d9f66a, 6dde189, f8fb541
  • Add region-specific volume-type defaults derived from node regions, deferred volume-type selection for remote clusters, and cluster-specific domains in volume responses — by @rguliyev and @djeebus in 1bded44, 8858ff6, bb04d1f

Bug Fixes

  • Paginate S3 prefix deletions to remove every matching object and reject empty prefixes — by @tomassrnka in d4fc040
  • Abort failed GCS multipart uploads instead of leaving orphaned parts — by @tomassrnka in 9e1caea
  • Handle compression correctly for V4+ snapshot ancestor gaps — by @arkamar in f828d12
  • Return appropriate volume-operation errors for missing paths, existing files, and non-directory path components — by @djeebus in ac26e15
  • Stop S3FS from caching missing Firecracker, kernel, and envd artifacts — by @tomassrnka in 19ad718

Docker reverse proxy

Compatibility Notes

  • Remove the deprecated Docker reverse-proxy service — by @jakubno in d153bbe

Database

Features


IaC

Compatibility Notes

  • Retire the repository's Nomad-based deployment configuration and associated pipelines; deployment documentation now describes the Kubernetes-based distribution — by @tvi in 8a1c488, e7b3cca

Observability

Improvements

Bug Fixes

  • Stop flushing Firecracker metrics after the VM exits and derive sandbox log identity from runtime metadata — by @tomassrnka and @arkamar in 50c64be, e26e9c1
  • Flush pending shared telemetry metrics before shutting down the exporter — by @jakubno in 9a6c71d

Full Changelog:
2026.29...2026.30