Skip to content

Releases: e2b-dev/E2B

e2b@2.29.0

10 Jun 17:33
da85b1e

Choose a tag to compare

Minor Changes

  • 961ffba: feat(sdks): expose user-defined file metadata on sandbox.files

    Adds a metadata option to file uploads (write / writeFiles / write_files) and surfaces persisted metadata on every EntryInfo / WriteInfo returned by getInfo, list, rename, and write responses. On upload, metadata is sent as X-Metadata-<key>: <value> request headers; envd persists the values as extended attributes in the user.e2b. xattr namespace and returns them on subsequent filesystem reads (including user.e2b.* xattrs set out-of-band). Keys are sent as HTTP header names and are lowercased by the sandbox; metadata is validated client-side (keys must be valid HTTP header tokens, values must be printable US-ASCII) and invalid input raises InvalidArgumentError / InvalidArgumentException. The same metadata map is applied to every file in a multi-file upload. Requires envd 0.6.2 or later.

  • da85b1e: Add an includeEntry/include_entry option to filesystem directory watching. When enabled, each FilesystemEvent carries the affected entry's EntryInfo (best-effort; left unset for events where the path no longer exists, such as remove/rename-away). Requires envd 0.6.3 or later; watching with this option against an older sandbox raises a template error.

Patch Changes

  • 7dc861f: fix: align behavior between the JS and Python SDKs

    Python SDK:

    • commands.send_stdin and CommandHandle.send_stdin now accept bytes in addition to str, and the handle's send_stdin / close_stdin now accept a request_timeout.
    • git.reset now accepts a typed GitResetMode and its validation error matches the JS SDK wording/ordering. GitResetMode is now exported.
    • sandbox_url is now propagated through get_api_params.
    • Template.from_image() now raises when only one of username / password is provided.
    • get_info() no longer carries the envd access token on the returned SandboxInfo (the _envd_access_token field was unused), matching the JS SDK which strips it from getInfo.
    • get_metrics() now raises TemplateException (was SandboxException) with the same message as the JS SDK when the sandbox is too old.

    JS SDK:

    • Sandbox.getInfo() now includes sandboxDomain, matching the Python SDK's single get_info. getFullInfo is deprecated and now just wraps getInfo (it no longer returns the envd access token).
    • Sandbox.getMetrics() now returns [] in debug mode, matching the Python SDK. The debug short-circuit for getMetrics / kill is implemented on both the instance and static methods, so it applies consistently whether called as Sandbox.kill(sandboxId) or sandbox.kill().
    • Template.fromImage() now requires both username and password when registry credentials are provided.
    • Template.getBuildStatus() now defaults logsOffset to 0.
    • requestTimeoutMs: 0 now explicitly disables the request timeout.
    • getMetrics() now throws TemplateError (was SandboxError) when the sandbox is too old to support metrics.

@e2b/python-sdk@2.28.0

10 Jun 17:33
da85b1e

Choose a tag to compare

Minor Changes

  • 961ffba: feat(sdks): expose user-defined file metadata on sandbox.files

    Adds a metadata option to file uploads (write / writeFiles / write_files) and surfaces persisted metadata on every EntryInfo / WriteInfo returned by getInfo, list, rename, and write responses. On upload, metadata is sent as X-Metadata-<key>: <value> request headers; envd persists the values as extended attributes in the user.e2b. xattr namespace and returns them on subsequent filesystem reads (including user.e2b.* xattrs set out-of-band). Keys are sent as HTTP header names and are lowercased by the sandbox; metadata is validated client-side (keys must be valid HTTP header tokens, values must be printable US-ASCII) and invalid input raises InvalidArgumentError / InvalidArgumentException. The same metadata map is applied to every file in a multi-file upload. Requires envd 0.6.2 or later.

  • da85b1e: Add an includeEntry/include_entry option to filesystem directory watching. When enabled, each FilesystemEvent carries the affected entry's EntryInfo (best-effort; left unset for events where the path no longer exists, such as remove/rename-away). Requires envd 0.6.3 or later; watching with this option against an older sandbox raises a template error.

Patch Changes

  • 7dc861f: fix: align behavior between the JS and Python SDKs

    Python SDK:

    • commands.send_stdin and CommandHandle.send_stdin now accept bytes in addition to str, and the handle's send_stdin / close_stdin now accept a request_timeout.
    • git.reset now accepts a typed GitResetMode and its validation error matches the JS SDK wording/ordering. GitResetMode is now exported.
    • sandbox_url is now propagated through get_api_params.
    • Template.from_image() now raises when only one of username / password is provided.
    • get_info() no longer carries the envd access token on the returned SandboxInfo (the _envd_access_token field was unused), matching the JS SDK which strips it from getInfo.
    • get_metrics() now raises TemplateException (was SandboxException) with the same message as the JS SDK when the sandbox is too old.

    JS SDK:

    • Sandbox.getInfo() now includes sandboxDomain, matching the Python SDK's single get_info. getFullInfo is deprecated and now just wraps getInfo (it no longer returns the envd access token).
    • Sandbox.getMetrics() now returns [] in debug mode, matching the Python SDK. The debug short-circuit for getMetrics / kill is implemented on both the instance and static methods, so it applies consistently whether called as Sandbox.kill(sandboxId) or sandbox.kill().
    • Template.fromImage() now requires both username and password when registry credentials are provided.
    • Template.getBuildStatus() now defaults logsOffset to 0.
    • requestTimeoutMs: 0 now explicitly disables the request timeout.
    • getMetrics() now throws TemplateError (was SandboxError) when the sandbox is too old to support metrics.

@e2b/cli@2.11.1

10 Jun 17:33
da85b1e

Choose a tag to compare

Patch Changes

  • f90f35d: Add --lifecycle.ontimeout, --lifecycle.autoresume, and --timeout support to e2b sandbox create.

  • 7dc861f: fix: align behavior between the JS and Python SDKs

    Python SDK:

    • commands.send_stdin and CommandHandle.send_stdin now accept bytes in addition to str, and the handle's send_stdin / close_stdin now accept a request_timeout.
    • git.reset now accepts a typed GitResetMode and its validation error matches the JS SDK wording/ordering. GitResetMode is now exported.
    • sandbox_url is now propagated through get_api_params.
    • Template.from_image() now raises when only one of username / password is provided.
    • get_info() no longer carries the envd access token on the returned SandboxInfo (the _envd_access_token field was unused), matching the JS SDK which strips it from getInfo.
    • get_metrics() now raises TemplateException (was SandboxException) with the same message as the JS SDK when the sandbox is too old.

    JS SDK:

    • Sandbox.getInfo() now includes sandboxDomain, matching the Python SDK's single get_info. getFullInfo is deprecated and now just wraps getInfo (it no longer returns the envd access token).
    • Sandbox.getMetrics() now returns [] in debug mode, matching the Python SDK. The debug short-circuit for getMetrics / kill is implemented on both the instance and static methods, so it applies consistently whether called as Sandbox.kill(sandboxId) or sandbox.kill().
    • Template.fromImage() now requires both username and password when registry credentials are provided.
    • Template.getBuildStatus() now defaults logsOffset to 0.
    • requestTimeoutMs: 0 now explicitly disables the request timeout.
    • getMetrics() now throws TemplateError (was SandboxError) when the sandbox is too old to support metrics.
  • Updated dependencies [961ffba]

  • Updated dependencies [7dc861f]

  • Updated dependencies [da85b1e]

    • e2b@2.29.0

e2b@2.28.2

09 Jun 17:26
4e16cff

Choose a tag to compare

Patch Changes

  • 4e16cff: Add proxy connection parameter to route SDK requests through an HTTP proxy, matching the Python SDK. When set, it applies to API requests, all requests made to the returned sandbox, and volume requests.
  • 4e16cff: Fix proxy not being applied to volume content requests. Volume.create/Volume.connect now store the proxy on the returned instance, so instance methods (list, readFile, writeFile, makeDir, getInfo, updateMetadata, remove, …) route through it without having to pass proxy on every call. A per-call proxy still takes precedence.

e2b@2.28.1

09 Jun 12:34
d86368a

Choose a tag to compare

Patch Changes

  • 08012ee: feat: add sendStdin/send_stdin and closeStdin/close_stdin to CommandHandle

    You can now send and close stdin directly on a background command handle instead of going through sandbox.commands with the command's PID.

  • ca18220: Use components['schemas'][...] instead of verbose paths[...] traversal for OpenAPI-generated type references.

@e2b/python-sdk@2.27.1

09 Jun 17:26
4e16cff

Choose a tag to compare

Patch Changes

  • 4e16cff: Fix proxy not being applied to volume content requests. Volume.create/Volume.connect now store the proxy on the returned instance, so instance methods (list, readFile, writeFile, makeDir, getInfo, updateMetadata, remove, …) route through it without having to pass proxy on every call. A per-call proxy still takes precedence.

@e2b/python-sdk@2.27.0

09 Jun 12:34
d86368a

Choose a tag to compare

Minor Changes

  • d86368a: Align the sync and async Python SDK implementations: consistent parameter ordering (_create, Commands._start), matching docstrings, keyword arguments in Filesystem.write, and a consistent bare Exception for the internal "Body of the request is None" guard (matching the volume client).

    Sandbox.pause() / AsyncSandbox.pause() (and beta_pause) now return a boolTrue if the sandbox got paused, False if it was already paused — matching the JS SDK. Previously the instance method returned None and the class-method form returned the sandbox ID.

Patch Changes

  • 08012ee: feat: add sendStdin/send_stdin and closeStdin/close_stdin to CommandHandle

    You can now send and close stdin directly on a background command handle instead of going through sandbox.commands with the command's PID.

  • 7296b2c: fix(python-sdk): stop sending E2b-Sandbox-Id/E2b-Sandbox-Port headers on the control-plane connect request

    Sandbox.connect was attaching the envd data-plane headers (E2b-Sandbox-Id, E2b-Sandbox-Port) to the POST /sandboxes/{id}/connect API call. These headers belong only on data-plane (filesystem/commands/pty) requests, matching the JS SDK behavior.

  • f2550fa: Mark the Python SDK as typed (PEP 561). Added py.typed markers to the e2b and e2b_connect packages so type checkers like mypy and Pyright honor the inline annotations on Sandbox, AsyncSandbox, and other public APIs instead of treating imports as Any.

  • 6c04e31: Use thread-local sync HTTP transports to avoid sharing HTTP/2 connection state across Python threads.

@e2b/cli@2.11.0

09 Jun 12:34
d86368a

Choose a tag to compare

Minor Changes

  • f188891: Fully deprecate e2b template build (v1): command now only shows the deprecation notice and exits. Removed all v1 Docker build/push logic and deleted buildWithProxy.ts.

Patch Changes

  • ca18220: Use components['schemas'][...] instead of verbose paths[...] traversal for OpenAPI-generated type references.
  • f1516d5: Remove ensureAccessToken call from e2b template create: the command now relies solely on the API key for authentication.
  • Updated dependencies [08012ee]
  • Updated dependencies [ca18220]
    • e2b@2.28.1

e2b@2.28.0

06 Jun 06:44
073661a

Choose a tag to compare

Minor Changes

  • 073661a: Add API-only custom header options for the JavaScript and Python SDKs.

Patch Changes

  • e7a82ea: Remove unused internal code: wait helper (js-sdk), asSandboxTemplate/asHeadline/selectOption/basicDockerfile (cli), and format_execution_timeout_error (python-sdk). No public API changes.
  • 5b2bb94: Return a dedicated rate limit error for HTTP 429 responses from the envd API. Previously these were surfaced as a generic sandbox error, unlike the main API client which already raised RateLimitError (JS) / RateLimitException (Python). Rate limit errors are now consistent across all SDK request paths.

@e2b/python-sdk@2.26.0

06 Jun 06:44
073661a

Choose a tag to compare

Minor Changes

  • 073661a: Add API-only custom header options for the JavaScript and Python SDKs.

Patch Changes

  • e7a82ea: Remove unused internal code: wait helper (js-sdk), asSandboxTemplate/asHeadline/selectOption/basicDockerfile (cli), and format_execution_timeout_error (python-sdk). No public API changes.
  • 5b2bb94: Return a dedicated rate limit error for HTTP 429 responses from the envd API. Previously these were surfaced as a generic sandbox error, unlike the main API client which already raised RateLimitError (JS) / RateLimitException (Python). Rate limit errors are now consistent across all SDK request paths.