NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1912 most downloaded on PyPI
E2B SDK that give agents cloud environments
Last release 2 days ago
16 Sep 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 57 of the last 60 stable releases
180 versions withdrawn
withdrawn after publishing
3 years old
361 releases · first in 2023
One column per quarter.
The --team flag keeps working but is hidden from help and prints a deprecation warning. The project ID can also be set via the new E2B_PROJECT_ID envi…
--team flag to --project on template list, template publish, template unpublish, and template delete. The --team flag keeps working but is hidden from help and prints a deprecation warning. The project ID can also be set via the new E2B_PROJECT_ID environment variable; E2B_TEAM_ID is still supported and is used when E2B_PROJECT_ID is not set.…and switch e2b sandbox pause to call the non-deprecated Sandbox.pause() instead of the deprecated Sandbox.betaPause() alias.
User-Agent header of every request with e2b-cli/<version> and the invoked command as e2b-cli-command/<command> (e.g. e2b-cli-command/sandbox.list) via ConnectionConfig.setIntegratione2b template create --memory-mb help text to reflect the real default of 1024 MB (was incorrectly stated as 512), and switch e2b sandbox pause to call the non-deprecated Sandbox.pause() instead of the deprecated Sandbox.betaPause() alias.Nothing published for this version
49367c8: Switch the build tooling from tsup to tsdown. The published artifacts are unchanged: the SDK still ships dist/index.js (CJS), dist/index.mjs
49367c8: Switch the build tooling from tsup to tsdown. The published artifacts are unchanged: the SDK still ships dist/index.js (CJS), dist/index.mjs (ESM) and dist/index.d.ts/dist/index.d.mts, and the CLI still ships an executable dist/index.js with its dist/templates.
engines.node for both packages is set to >=20.18.1 <21 || >=22 (Node 20.18.1+, or 22 and above — keeping the minimum required by undici while excluding the end-of-life Node 21 line).
Updated dependencies [e6c4e7e]
Updated dependencies [09e12b3]
Updated dependencies [49367c8]
2869feb: Add override options to e2b template migrate: --name/-n to override the generated template name, --cmd/-c for the start command, --ready-cmd
e2b template migrate: --name/-n to override the generated template name, --cmd/-c for the start command, --ready-cmd for the ready command, and --cpu-count / --memory-mb for sandbox resources. Each falls back to the value from the config file (e2b.toml) when not provided. --cpu-count and --memory-mb (on both migrate and create) now reject non-numeric values at parse time instead of silently becoming NaN. Template name validation is now shared across init, migrate and create and matches the server-side rule: names are trimmed and lowercased, must contain only letters, numbers, dashes and underscores, and are capped at 128 characters. init/migrate no longer wrongly reject names with leading/trailing dashes or underscores.e2b template migrate generating Python build scripts that fail to run as instructed. The generated build_dev.py / build_prod.py used a package-relative import (from .template import template) while the command instructs single-file execution (python build_dev.py), causing ImportError: attempted relative import with no known parent package. The scripts now use a runnable absolute import (from template import template).dockerfile-ast dependency from the CLI. The CLI never imported it directly — all Dockerfile parsing goes through the e2b SDK, which keeps its own dockerfile-ast dependency. No behavior change.getTags/get_tags method to list all tags for a templateConfig schema bumped to v1 with nested identity, oauth, and tokens sections. Old flat configs are deprecated and require re-login.
identity, oauth, and tokens sections. Old flat configs are deprecated and require re-login.726ced6: Fix duplicate logo on NPM/PyPI by switching to element.
<picture> element.f3e7f33: Tidy up SDK authentication and deprecate the access token in ConnectionConfig.
f3e7f33: Tidy up SDK authentication and deprecate the access token in ConnectionConfig.
accessToken (JS) / access_token (Python) option on ConnectionConfig. It still works exactly as before — when set (or via E2B_ACCESS_TOKEN), the Authorization: Bearer header is still sent — but you should pass custom auth through apiHeaders instead, e.g. new ConnectionConfig({ apiHeaders: { Authorization: 'Bearer <token>' } }).https://e2b.dev/dashboard?tab=keys). In JS this is controlled by a requireApiKey option (default true) so callers that authenticate differently — like the CLI hitting /teams with an access token — can opt out; in Python the API key is always required.requireAccessToken (JS) and require_access_token (Python). No caller ever set it to a non-default value, so behavior is unchanged./teams endpoint through apiHeaders instead of the deprecated option.ConnectionConfig: EnvdApiClient now owns its own accessToken field and sets the X-Access-Token header itself.0a5d524: Update package logos with theme-aware dark/light variants for GitHub.
Updated dependencies [f3e7f33]
Updated dependencies [0a5d524]
…requiring E2B_ACCESS_TOKEN. E2B_ACCESS_TOKEN is deprecated, so commands whose endpoints accept either credential now use the API key. This also unbloc…
e2b template list and e2b template create now authenticate with E2B_API_KEY instead of requiring E2B_ACCESS_TOKEN. E2B_ACCESS_TOKEN is deprecated, so commands whose endpoints accept either credential now use the API key. This also unblocks API-key-only environments (e.g. CI/CD) that previously could not create or list templates.Template.build() now accepts names in name:tag format (e.g., "my-template:v1.0")Template.assignTags() / Template.assign_tags() to assign tags to existing buildsTemplate.removeTags() / Template.remove_tags() to remove tagsf188891: Fully deprecate e2b template build (v1): command now only shows the deprecation notice and exits. Removed all v1 Docker build/push logic and…
e2b template build (v1): command now only shows the deprecation notice and exits. Removed all v1 Docker build/push logic and deleted buildWithProxy.ts.components['schemas'][...] instead of verbose paths[...] traversal for OpenAPI-generated type references.ensureAccessToken call from e2b template create: the command now relies solely on the API key for authentication.Template.build() now accepts names in name:tag format (e.g., "my-template:v1.0")Template.assignTags() / Template.assign_tags() to assign tags to existing buildsTemplate.removeTags() / Template.remove_tags() to remove tagsab906ad: fix:timestamp conversion for metric endpoints
e2b auth login crashing on headless machines where xdg-open is unavailable. The CLI now spawns the browser opener directly so it can catch the spawn ENOENT synchronously, prints the login URL so the user can open it manually, and suggests setting E2B_API_KEY when interactive login is not possible.31670f4: updates template alias error type
d8ef36d: Support for Template.aliasExists to check if template alias is available
E2B client to the Code Interpreter SDKs that binds the connection configuration explicitly, so the API key and domain no longer have to come from the environment variables: new E2B({ apiKey, domain }).Sandbox.create() in JavaScript and E2B(api_key=..., domain=...).Sandbox.create() in Python. The client exposes the package's own Sandbox (and AsyncSandbox in Python) together with the core Volume, Template and Secret resources, per-call options still take precedence, and multiple clients are isolated from each other and from the env-configured top-level exports.5aa1d24: Fix tmux rendering issues by adding UTF-8 locale environment variables (LANG, LC_ALL) to PTY creation. This fixes garbled Unicode and box-dra
dcaca73: cli supports info command which is the equivilent of the getInfo
b0ab7f7: Add implicit limit for sandbox list query to CLI
bcc6ea8: Add pause and resume commands to manage sandbox state.
pause and resume commands to manage sandbox state.
e2b sandbox pause <sandboxID> - pause a running sandboxe2b sandbox resume <sandboxID> - resume a paused sandboxE2B client to the Code Interpreter SDKs that binds the connection configuration explicitly, so the API key and domain no longer have to come from the environment variables: new E2B({ apiKey, domain }).Sandbox.create() in JavaScript and E2B(api_key=..., domain=...).Sandbox.create() in Python. The client exposes the package's own Sandbox (and AsyncSandbox in Python) together with the core Volume, Template and Secret resources, per-call options still take precedence, and multiple clients are isolated from each other and from the env-configured top-level exports.87ceec2: Implement closeStdin to allow piping commands into the CLI
470de91: fixes default context directory for windows paths
6b74009: add background template build options
23adc93: fix cache invalidation when calling .copy() on updated folder during the template build
e87576f: fix to_dockerfile env output syntax
631522d: Use v2 template update endpoint and display namespaced template name after publishing
### Minor Changes - 4ebabfe: Add exec command
E2B client to the Desktop SDKs that binds the connection configuration explicitly, so the API key and domain no longer have to come from the environment variables: new E2B({ apiKey, domain }).Sandbox.create() in JavaScript and E2B(api_key=..., domain=...).Sandbox.create() in Python. The client exposes the package's own Sandbox together with the core Volume, Template and Secret resources, per-call options still take precedence, and multiple clients are isolated from each other and from the env-configured top-level exports.583c051: patch Fix tmux rendering issues by adding UTF-8 locale env vars to PTY
98d2c8c: Ensure that httpx transport is reused across calls by default
b65f190: add dependency notice to template migrate command
742a9ba: Update connect to only extend timeout
E2B client to the Desktop SDKs that binds the connection configuration explicitly, so the API key and domain no longer have to come from the environment variables: new E2B({ apiKey, domain }).Sandbox.create() in JavaScript and E2B(api_key=..., domain=...).Sandbox.create() in Python. The client exposes the package's own Sandbox together with the core Volume, Template and Secret resources, per-call options still take precedence, and multiple clients are isolated from each other and from the env-configured top-level exports.de2a922: make --no-install-recommends optional in apt_install
d4619f6: fix from ubuntu default variant
12daca8: add custom mcp support
Nothing published for this version
ad194b4: rename e2b.toml and Dockerfile to e2b.toml.old and Dockerfile.old on migrate
1a51777: fix racecondition in mcp gateway
057f902: fixed --config option in e2b tpl publish and e2b tpl delete
c05c8c6: new build system v2 release
### Patch Changes - 7311427: added docstrings - 5943485: Add mcp auth
f122912: set correct Docker user workdir defaults
a01c237: add template build logs pretty output helper
1203ccb: Add experimental MCP functionality to beta
1203ccb: Add experimental MCP functionality to beta
### Patch Changes - f5cfa6d: Update node
b1e2701: fix template build files copy cache invalidation
e142c23: Set stdin to /dev/null for process.run by default
1c34e5d: fix npm install and pip install helpers
9f9e2a8: added step stacktraces
9f9e2a8: added step stacktraces
3d64181: added registry helpers to Template
6fc9760: add ready command to the template SDK
a116679: added --state --metadata filters to kill as well as the ability to pass multiple sandbox ids
AuthenticationError instead of SandboxError for 401 errors.### Patch Changes - cf0bb40: Fix autopause
### Patch Changes - cf0bb40: Fix autopause
74457ff: - Add beta module (pause and resume)
Nothing published for this version
Nothing published for this version
Nothing published for this version
0bace98: Increase default request timeout
c0a4172: URL signing is resolved automatically
f123091: Add possibility to use without internet
e34d695: Expose sandbox metrics
Your coding agent can read these notes before it upgrades. Set up the MCP server →