Releases: e2b-dev/infra
Release list
2026.29
What’s Changed
API
Features
- Add sandbox fork endpoint by @mishushakov in #3202
Improvements
- Simplify local sandbox routing logic by @jakubno in #3253
- Use standard
kidfield for key identification by @djeebus in #3234
Dashboard
Features
- Map Ory SSO organizations to E2B teams by @ben-fornefeld in #3094
Improvements
- Clean up provisioning and identity packages by @ben-fornefeld in #3189
Orchestrator
Features
- Ensure requested free disk space before finalizing template builds by @gm-e2b in #3249
- Add
NetworkAssignHookfor sandbox lifecycle extensions by @rguliyev in #3290 - Add per-role storage URLs and an environment-independent storage library by @dobrac in #3246
Improvements
- Serialize sandbox updates by @jakubno in #3250
- Trace slow disk resize operations during template builds by @gm-e2b in #3298
Bug Fixes
- Pin TAP device host-side MAC address by @rguliyev in #3271
- Measure ext4 free space from block groups by @gm-e2b in #3282
- Implement Docker
COPYmerge semantics in template builds by @mishushakov in #3283
Sandbox Runtime (envd)
Bug Fixes
- Avoid
Startdeadlock after request cancellation by @arkamar in #3256 - Never report failed envd command streams as successful by @arkamar in #3281
Improvements
Full Changelog:
2026.28...2026.29
2026.28
What's Changed
API
Features
- Add per-team sandbox events TTL limits based on tier and addons by @jakubno in #3181
- Discover orchestrators via Nomad services by @wj-e2b in #3176
Improvements
- Add a feature flag to stop accepting E2B access tokens by @tvi in #3240
- Parse multiple SDK user agents during builder checks by @matthewlouisbrockman in #3149
Bug Fixes
- Handle corrupted sandbox stop times by @jakubno in #3203
- Prevent
uint64underflow in node allocated metrics by @jakubno in #3216 - Heal sandboxes missing from the eviction index by @jakubno in #3199
Orchestrator
Features
Improvements
- Add
-force-reboottoresume-buildfor cold-booting memory snapshot builds by @arkamar in #3208 - Introduce a shared compressed upload framework and storage limiter by @dobrac in #3232
Bug Fixes
- Unpack OCI layers in a chroot, matching Docker daemon behavior by @jakubno in #3215
- Fix compressed upload and cache correctness issues by @dobrac in #3231
Storage
Improvements
Bug Fixes
Testing
Sandbox runtime (envd)
Improvements
- Use constant-time comparison for signature validation by @AdaAibaby in #3145
Bug Fixes
- Use
WithoutCancelfor the CA cleanup goroutine context by @arkamar in #3207 - Stop misleading CA installation cancellation errors during rapid
/initcalls by @arkamar in #3206
Full Changelog:
2026.27...2026.28
2026.27
What's Changed
API
Features
- Limit template build names to 128 characters by @mishushakov in #3109
- Gate access token issuance behind a feature flag by @Kraci in #3101
- Soft-delete build layers in the database when a user is deleted by @ValentaTomas in #3121
- Filter snapshots by name by @mishushakov in #3184
- Add per-team TTL support for
sandbox_eventsby @jakubno in #3179
Improvements
Bug Fixes
- Use the correct error variable in
processCustomErrorsby @AdaAibaby in #3135 - Prevent
WrapContextAsUserErrorfrom misclassifying internal timeouts as user cancellations by @AdaAibaby in #3155
Dashboard
Features
- Add a LaunchDarkly-gated ClickHouse read switcher by @rguliyev in #3111
- Flag sandboxes that are past data retention by @huv1k in #3102
Bug Fixes
Orchestrator
Features
- List slot namespaces by @wj-e2b in #3089
- Add startup resource reclaim package by @wj-e2b in #3090
- Tag envd-init metrics with
start_typeby @arkamar in #3125 - Run startup reclaim on boot by @wj-e2b in #3123
- Use a single-instance flock during startup by @wj-e2b in #3143
- Add a soft-delete marker label to the check metric by @ValentaTomas in #3144
- Write layer size metadata (logical, mapped, diff) to object metadata by @ValentaTomas in #3122
- Add a LaunchDarkly-gated ClickHouse write fan-out feature flag by @rguliyev in #3152
- Classify envd-init metrics by exit type by @arkamar in #3139
- Report hugepage metrics to the API by @jakubno in #3182
Improvements
- Share sandbox artifact names across components by @wj-e2b in #3117
- Introduce
StartTypefor sandbox start types by @arkamar in #3124 - Add additional storage logging by @jakubno in #3126
- Add OpenTelemetry instrumentation to the AWS S3 storage client by @dobrac in #3172
Bug Fixes
- Sanitize OCI pull errors by @dobrac in #3096
- Log missing egress proxy during startup reclaim instead of silently defaulting by @wj-e2b in #3116
- Scope rootfs hashes to the provision default by @dobrac in #3129
- Start
envd.serviceaftersystemd-tmpfiles-setupby @dobrac in #3130 - Deschedule a flaky eviction-loop race in tests by @wj-e2b in #3173
- Allow the build-cache threshold flag to exceed its fallback value by @wj-e2b in #3175
- Fix chunk readiness in P2P → compressed transitions by @levb in #3185
- Revert the
legacy-ancestorpending diff header change by @levb in #3141 - Fix upload metadata path races by @dobrac in #3115
- Fix runaway blob
file_typemetric attribute values by @levb in #3150
NFS cleanup
Improvements
Bug Fixes
New Contributors
Full Changelog:
2026.26...2026.27
2026.26
What's Changed
API
Features
Improvements
Bug Fixes
Orchestrator
Features
- Enforce soft-delete consumers for the storage index by @ValentaTomas in #3034
- Track and report the last sandbox status change timestamp by @jakubno in #2980
- Add opt-in DSCP marking for sandbox egress (
SANDBOX_EGRESS_DSCP) by @tomassrnka in #3039 - Enable graceful sandbox drain on shutdown by @wj-e2b in #3069
- Enable graceful template-build drain on shutdown by @wj-e2b in #3079
- Improve read-path telemetry by @levb in #3063
- Harvest resume-prefetch traces during pause by @kalyazin in #3067
- Add
resume-build -gdbsupport for guest kernel debugging by @kalyazin in #3040 - Add
DISABLE_STARTUP_RECLAIMconfiguration flag by @wj-e2b in #3081 - Detect and clean up leaked sandbox cgroups by @wj-e2b in #3086
- Inspect and disconnect connected NBD devices by @wj-e2b in #3087
Improvements
- Always include execution metrics in sandbox webhook events by @AdaAibaby in #2852
- Wire filesystem-only snapshots into the control plane by @bchalios in #3027
- Enable filesystem-only snapshots for auto-pause by @bchalios in #3055
- Make
build-reserved-disk-space-mbdefault to 256 MB by @arkamar in #3065 - Move envd timeout configuration behind a feature flag by @jakubno in #3068
- Fold soft-delete
dataPathinto the source model by @levb in #3046 - Stamp provenance metadata on uploaded objects, including headers by @ValentaTomas in #3033
Bug Fixes
- Require envd 0.6.3 for cgroup freeze support by @arkamar in #3050
- Prevent NBD read-loop stalls on
WRITE_ZEROES(behind a feature flag) by @kalyazin in #3048 - Seed
legacy-ancestorin pending diff headers by @levb in #3075
Client Proxy
Improvements
- Remove the autoresume feature flag by @matthewlouisbrockman in #3078
Dashboard
Features
- Populate Ory identity
external_idduring admin bootstrap by @ben-fornefeld in #3062
Full Changelog:
2026.25...2026.26
2026.25
What's Changed
API
Bug Fixes
Orchestrator
Features
- Collapse envd's heap into 2 MiB hugepages before pause to reduce cold-resume page faults by @kalyazin in #2997
- Use memfd and background copy by default by @bchalios in #3011
- Introduce filesystem-only snapshots by @bchalios in #2995
- Split hugepage collapse statistics into real migrations vs. already-huge pages by @kalyazin in #3021
- Speed up guest cold boot by @bchalios in #3020
- Use
FIFREEZEbefore creating filesystem snapshots by @bchalios in #3019
Improvements
- Improve diagnostics for node placement failures by @djeebus in #3031
- Consolidate I/O reader wrappers by @levb in #2570
Bug Fixes
- Resolve remaining P2P, compression, and V5 issues by @levb in #3015
- Tolerate missing headers for legacy templates by @levb in #3026
- Fix main build by @levb in #3029
- Start
envd.serviceafterlocal-fs.targetby @levb in #3043
Template Builder
Improvements
Bug Fixes
- Verify that CAs added during build are included in the boot certificate archive by @bchalios in #3025
Full Changelog:
2026.24...2026.25
2026.24
Deprecation Notice: Legacy Verifier
Warning
The Legacy Verifier component (backed by the Supabase Legacy JWT secret) is deprecated and scheduled for removal. If you currently rely on legacy HS256 authentication, plan your migration to OIDC-backed auth now to avoid disruption.
What's Changing
The Legacy Verifier authenticates requests using HS256 (HMAC with SHA-256), where JWT signatures are produced from a single shared secret. Because every party that can verify a token must also hold the secret capable of minting one, this model is difficult to scale securely and increases the blast radius if the secret is ever leaked.
To improve security across the product, we are moving away from Legacy HS256 toward OIDC-backed authentication, which uses asymmetric signing and standardized identity flows.
Why
- Shared-secret risk — HS256 relies on a shared secret for both signing and verification, so a single leak compromises both issuing and verifying tokens.
- Stronger, standards-based security — OIDC uses asymmetric keys and well-established discovery/rotation mechanisms, reducing the risk of secret sprawl.
- A clearer long-term path — Consolidating on OIDC lets us invest in a single, well-supported auth surface for all users.
Recommended Path Forward
Many current auth features are not part of the OIDC spec. While we are actively investigating raw OIDC support, we recommend the following at this time:
- JWTs issued by Ory Hydra — an OAuth 2.0 and OpenID Connect provider for issuing tokens.
- User identities maintained by Ory Kratos — an identity and user management system.
We believe this open-source auth toolkit provides the best path forward for supporting better authentication for all users, bridging the gap between legacy features and a fully OIDC-based future.
What’s Changed
API
Features
Improvements
Bug Fixes
Dashboard API
Features
- Include build resources in
/buildsresponse by @drankou in #3009 - Improve templates list sorting by @drankou in #2983
- Add internal admin route for deleting a user by @devin-ai-integration[bot] in #2986
- Add template tags handlers by @drankou in #2885
Improvements
- Resolve billing creator context via profile providers and deprecate dual user profile provider by @ben-fornefeld in #2967
Bug Fixes
- Avoid repeated Ory bootstrap provisioning by @ben-fornefeld in #2940
- Pass signup metadata to billing provisioning by @ben-fornefeld in #2978
Authentication & Identity
Features
- Support admin token team auth by @ben-fornefeld in #2934
Improvements
Orchestrator
Features
- Add allocated resource metrics for sandboxes by @jakubno in #2943
- Add per-start UFFD startup working-set metric by @kalyazin in #2960
- Add snapshot fragmentation metrics by @kalyazin in #2931
- Track sandbox lifecycles by @wj-e2b in #2998
Performance
- Add memfile dedup density threshold by @ValentaTomas in #2862
- Avoid V3-ancestor header refresh by @levb in #2999
Bug Fixes
- Split scheduling base build ID per artifact by @ValentaTomas in #2920
- Export dirty-page stall counter from process start by @ValentaTomas in #2992
- Keep dedup empty-pages telemetry scan-only by @ValentaTomas in #2991
- Read V3 ancestors as uncompressed instead of failing by @ValentaTomas in #2994
- Harden Firecracker process shutdown by @wj-e2b in #2996
- Harden shutdown network cleanup by @wj-e2b in #3000
- Retain pause uploads across retries by @jakubno in #2993
- Discard poisoned nftables connection on firewall errors by @arkamar in #3008
Storage & Build Artifacts
Features
- Validate template upload hashes by @matthewlouisbrockman in #2952
- Add raw exec artifact SHA aliases by @dobrac in #2971
- Support V4/V5 headers and compression in
inspect-buildCLI by @levb in #2985
Improvements
- Simplify template validation by @matthewlouisbrockman in #2961
- Split
FrameTableandFullFrameTableby @levb in #2975
Bug Fixes
- Use 512-byte units for
stat.BlocksinFileSizeby @levb in #2949 - Fix upload header synchronization for P2P compression by @levb in #2919
- Adapt
inspect-build validateto new Chunker upstream API by @ValentaTomas in #2989
Sandbox Runtime (envd)
Features
- Support user-defined file metadata via xattrs by @mishushakov in #2732
- Add optional
EntryInfoto watchFilesystemEventby @mishushakov in #2930 - Allow opting into watching network mounts by @mishushakov in #2982
Improvements
- Trim unused server dependencies by @ValentaTomas in #2937
Bug Fixes
- Tolerate busy tmpfs cleanup in tests by @ValentaTomas in #2938
- Pin
create-next-appto stable inTestCommandKillNextAppby @mishushakov in #2964 - Stop freezing socat cgroup across pause/resume by @arkamar in #2923
Infrastructure & IaC
Features
ClickHouse & Events
Features
Full Changelog:
2026.23...2026.24
2026.23
What’s Changed
API
Improvements
- Extract inlined request body schemas by @mishushakov in #2837
Bug Fixes
- Stop evicting the local node during sync by @ValentaTomas in #2881
- Raise canary
min_healthy_timeto bridge GCP LB heal-in by @jakubno in #2895 - Check template alias tags in exists endpoint by @drankou in #2916
Dashboard API
Features
- Add Ory user profile provider and auth middleware fix by @ben-fornefeld in #2840
- Add OIDC admin user bootstrap endpoint by @ben-fornefeld in #2841
- Add templates list pagination by @drankou in #2904
Improvements
- Read Ory project API key from external secret by @ben-fornefeld in #2922
Database
Improvements
Orchestrator
Features
- Expose internal scheduling metadata by @ValentaTomas in #2873
- Export UFFD stats as Mimir metrics by @kalyazin in #2901
Performance
Improvements
- Add useful info to traces by @djeebus in #2860
- Add cross-generation CPU compatibility (N2 -> N4) by @ValentaTomas in #2928
Bug Fixes
- Denormalize upload metric file type by @ValentaTomas in #2865
- Dedupe deferred page faults by @ValentaTomas in #2864
Storage & Build Artifacts
Features
- Write through compressed templates to NFS on upload by @ValentaTomas in #2827
Performance
- Pack cached
Header.Mappinginto a compact form by @ValentaTomas in #2844 - Add V5 columnar varint header format by @ValentaTomas in #2847
- Parallelize fragmented backing reads by @ValentaTomas in #2872
- Reduce multipart upload copying by @ValentaTomas in #2863
Bug Fixes
- Resolve compression suffix for build data files by @arkamar in #2859
- Only merge same-build mappings when storage is contiguous by @ValentaTomas in #2848
- Size V5 header mapping columns exactly on deserialize by @ValentaTomas in #2880
Infrastructure & IaC
Features
- Add
argocd-appsGCS bucket by @tvi in #2888 - Enable Nomad memory oversubscription by @sitole in #2917
- Support extra API instance groups on Nomad LB backend by @tvi in #2909
Performance
- Increase client dirty page limits by @ValentaTomas in #2861
Improvements
- Make pprof port configurable via
PPROF_PORTby @tvi in #2879 - Remove
no_cgroupsflag deprecated in Nomad 1.8+ by @sitole in #2883 - Support configuring Nomad, Consul, and EBI versions by @djeebus in #2868
- Update cluster to Nomad 1.8 and Consul 1.17 by @sitole in #2896
- Remove
disable-bots-log-collectorsecurity policy by @jakubno in #2898 - Lift API env vars by @dobrac in #2890
- Lift client-proxy env vars by @dobrac in #2892
- Lift Dashboard API env vars by @dobrac in #2906
- Lift orchestrator env vars by @dobrac in #2913
- Lift template-manager env vars by @dobrac in #2911
- Lift docker proxy env vars by @dobrac in #2914
- Lift filestore cleanup env vars by @dobrac in #2915
- Remove unused Nomad Redis inputs by @dobrac in #2918
- Migrate Terraform jobs by @wj-e2b in #2924
Dependencies
Bug Fixes
- Revert removal of
no_cgroupsflag deprecated in Nomad 1.8+ by @sitole in #2887 - Migrate moved Terraform resources by @dobrac in #2891
Full Changelog:
2026.22...2026.23
2026.22
What’s Changed
API
Performance
Improvements
- Add
kill_reasontosandbox.lifecycle.killedobservability events by @rguliyev in #2833 - Enforce blocked teams through allowlist-based flow by @drankou in #2757
Dashboard API
Improvements
- Use auth metadata for default team names by @ben-fornefeld in #2775
- Remove Supabase auth sync migrations and billing enable flag by @ben-fornefeld in #2784
Authentication & Identity
Improvements
Orchestrator
Performance
- Deduplicate dirty pages between memory diff and base layer by @bchalios in #2590
- Run dedup page writes asynchronously by @ValentaTomas in #2814
- Run dedup compare asynchronously by @ValentaTomas in #2818
- Allocate
NormalizeMappingsresult slices at exact size by @ValentaTomas in #2822
Improvements
- Improve compression handling by @ValentaTomas in #2803
Bug Fixes
- Remove unnecessary empty
Content-Typeheader from envdPostInithandler by @AdaAibaby in #2800 - Resolve UFFD prefault/close race condition by @kalyazin in #2830
Sandbox Runtime
Features
- Freeze user cgroups across pause/resume to keep envd
/initresponsive by @ValentaTomas in #2688
New Contributors
- @AdaAibaby made their first contribution in #2800
- @rguliyev made their first contribution in #2833
Full Changelog:
2026.21...2026.22
2026.21
What’s Changed
API
Features
- Add template manager status logging by @tvi in #2647
- Distinguish joined vs regular requests in metrics by @jakubno in #2699
Improvements
- Replace per-release goroutines with shared publish worker by @jakubno in #2668
- Add configurable max concurrent evictions via feature flag by @jakubno in #2727
- Enforce one default team per user via unique partial index by @jakubno in #2621
Bug Fixes
Auth
Features
- Add OIDC auth provider support for API and Dashboard API by @tvi in #2673
- Allow unconfigured
AUTH_PROVIDER_CONFIGby @tvi in #2716
Improvements
- Move dashboard member emails to auth profiles by @ben-fornefeld in #2721
- Expose auth profile admin routes in Dashboard API by @ben-fornefeld in #2743
Orchestrator
Features
Improvements
- Add self-reported status gauge with version label by @jakubno in #2667
- Add
v4HeaderForUncompressedfeature-flag bit by @levb in #2669 - Drain virtio-balloon free-page-hinting before pause by @ValentaTomas in #2552
- Add team-target free-page-hinting at template creation by @ValentaTomas in #2677
- Record envd init duration histograms on failures by @arkamar in #2749
- Record upload compression metrics by @ValentaTomas in #2761
- Avoid serializing upload headers twice by @ValentaTomas in #2762
- Pin UFFD copy source buffers by @ValentaTomas in #2745
Bug Fixes
- Stop health-loop leaks in
Checksby @levb in #2739 - Report real V4 header compression ratio by @ValentaTomas in #2771
- Stop cloning
MappinginCloneForUploadby @levb in #2733
Template Manager
Improvements
Bug Fixes
- Preserve full ENV values across stdout chunks by @ValentaTomas in #2740
Sandbox Runtime (envd)
Improvements
- Give envd realtime I/O priority and reset priority for user processes by @ValentaTomas in #2681
- Minimize binary size with build flag tweaks by @ValentaTomas in #2664
- Extract
run()to ensure defers execute on server errors by @arkamar in #2666 - Stop logging streamed payload content by @kalyazin in #2755
Bug Fixes
- Suppress repeat MMDS poll failures by @ValentaTomas in #2678
- Bound the in-memory logs queue by @ValentaTomas in #2676
- Include suppressed counts in exporter error logs by @ValentaTomas in #2680
- Fall back to lazy unmount when forced NFS unmount fails by @ValentaTomas in #2683
- Make CA install lock context-aware by @ValentaTomas in #2690
- Make
/initlock context-aware to prevent retry pile-up by @ValentaTomas in #2702 - Replace env vars in
/initinstead of merging by @ValentaTomas in #2706 - Self-heal MMDS routing on
/initlookup failure by @ValentaTomas in #2701 - Ignore closed PTY read errors by @ValentaTomas in #2769
Infrastructure & IaC
Features
- Support custom VPC and subnet configuration for cluster image builds by @sitole in #2633
- Support new Traefik
internalentrypoint by @djeebus in #2714
Improvements
Tooling & Developer Experience
Dependencies
New Contributors
- @drankou made their first contribution in #2659
- @sarimrmalik made their first contribution in #2741
- @kalyazin made their first contribution in #2755
Full Changelog:
2026.20...2026.21
2026.20
What’s Changed
API
Features
- Add singleflight per sandbox with concurrency cap and in-flight gauge by @jakubno in #2625
- Add Kubernetes service discovery for orchestrator and temp services by @tvi in #2602
Improvements
- Add admin endpoint cluster ID filter for node listing by @sitole in #2641
- Introduce pluggable service-discovery interface by @tvi in #2601
- Clean up stale Redis indexes while on memory backend by @jakubno in #2619 + #2640
- Log terminal template build failures by @tvi in #2646
Bug Fixes
- Re-register
api-grpcConsul service as alias ofapi-internal-grpcby @jakubno in #2631 - Reduce Redis lock polling by @dobrac in #2594
- Downgrade team-limit build errors to warnings and dedupe logs by @jakubno in #2635
- Use uncancelable context for sandbox removal completion by @jakubno in #2655
Orchestrator
Features
- Add pre-pause guest reclaim via envd by @ValentaTomas in #2551
- Wire balloon free-page-reporting into UFFD and Firecracker by @ValentaTomas in #2541
Improvements
- Add per-snapshot dirty/empty/total byte metrics at creation time by @ValentaTomas in #2649
- Make
startingSandboxeslimit configurable via feature flag by @jakubno in #2622 - Implement
zapcore.Coredirectly in buildlogger by @tvi in #2614
Bug Fixes
- Resolve base path per-call from live
FrameTablein peerclient by @levb in #2585 - Fix recovery bug in
pkg/nfsproxy/recoveryby @tvi in #2606 - Increase storage gRPC connections to 8 for compression workloads by @levb in #2644
- Use exponential buckets for snapshot byte histograms by @ValentaTomas in #2651
Sandbox Runtime (envd)
Bug Fixes
- Wait for stream sender goroutine to prevent nil-pointer panic on disconnect by @arkamar in #2596
- Fix fan-out data race when subscriber disconnects mid-iteration by @arkamar in #2643
- Discard output when no subscriber is connected by @arkamar in #2639
- Make envd build and tests pass on macOS by @tvi in #2605
Infrastructure
Features
Full Changelog:
2026.19...2026.20