Releases: e2b-dev/E2B
e2b@2.29.0
Minor Changes
-
961ffba: feat(sdks): expose user-defined file metadata on
sandbox.filesAdds a
metadataoption to file uploads (write/writeFiles/write_files) and surfaces persisted metadata on everyEntryInfo/WriteInforeturned bygetInfo,list,rename, and write responses. On upload, metadata is sent asX-Metadata-<key>: <value>request headers; envd persists the values as extended attributes in theuser.e2b.xattr namespace and returns them on subsequent filesystem reads (includinguser.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 raisesInvalidArgumentError/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_entryoption to filesystem directory watching. When enabled, eachFilesystemEventcarries the affected entry'sEntryInfo(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_stdinandCommandHandle.send_stdinnow acceptbytesin addition tostr, and the handle'ssend_stdin/close_stdinnow accept arequest_timeout.git.resetnow accepts a typedGitResetModeand its validation error matches the JS SDK wording/ordering.GitResetModeis now exported.sandbox_urlis now propagated throughget_api_params.Template.from_image()now raises when only one ofusername/passwordis provided.get_info()no longer carries the envd access token on the returnedSandboxInfo(the_envd_access_tokenfield was unused), matching the JS SDK which strips it fromgetInfo.get_metrics()now raisesTemplateException(wasSandboxException) with the same message as the JS SDK when the sandbox is too old.
JS SDK:
Sandbox.getInfo()now includessandboxDomain, matching the Python SDK's singleget_info.getFullInfois deprecated and now just wrapsgetInfo(it no longer returns the envd access token).Sandbox.getMetrics()now returns[]in debug mode, matching the Python SDK. The debug short-circuit forgetMetrics/killis implemented on both the instance and static methods, so it applies consistently whether called asSandbox.kill(sandboxId)orsandbox.kill().Template.fromImage()now requires bothusernameandpasswordwhen registry credentials are provided.Template.getBuildStatus()now defaultslogsOffsetto0.requestTimeoutMs: 0now explicitly disables the request timeout.getMetrics()now throwsTemplateError(wasSandboxError) when the sandbox is too old to support metrics.
@e2b/python-sdk@2.28.0
Minor Changes
-
961ffba: feat(sdks): expose user-defined file metadata on
sandbox.filesAdds a
metadataoption to file uploads (write/writeFiles/write_files) and surfaces persisted metadata on everyEntryInfo/WriteInforeturned bygetInfo,list,rename, and write responses. On upload, metadata is sent asX-Metadata-<key>: <value>request headers; envd persists the values as extended attributes in theuser.e2b.xattr namespace and returns them on subsequent filesystem reads (includinguser.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 raisesInvalidArgumentError/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_entryoption to filesystem directory watching. When enabled, eachFilesystemEventcarries the affected entry'sEntryInfo(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_stdinandCommandHandle.send_stdinnow acceptbytesin addition tostr, and the handle'ssend_stdin/close_stdinnow accept arequest_timeout.git.resetnow accepts a typedGitResetModeand its validation error matches the JS SDK wording/ordering.GitResetModeis now exported.sandbox_urlis now propagated throughget_api_params.Template.from_image()now raises when only one ofusername/passwordis provided.get_info()no longer carries the envd access token on the returnedSandboxInfo(the_envd_access_tokenfield was unused), matching the JS SDK which strips it fromgetInfo.get_metrics()now raisesTemplateException(wasSandboxException) with the same message as the JS SDK when the sandbox is too old.
JS SDK:
Sandbox.getInfo()now includessandboxDomain, matching the Python SDK's singleget_info.getFullInfois deprecated and now just wrapsgetInfo(it no longer returns the envd access token).Sandbox.getMetrics()now returns[]in debug mode, matching the Python SDK. The debug short-circuit forgetMetrics/killis implemented on both the instance and static methods, so it applies consistently whether called asSandbox.kill(sandboxId)orsandbox.kill().Template.fromImage()now requires bothusernameandpasswordwhen registry credentials are provided.Template.getBuildStatus()now defaultslogsOffsetto0.requestTimeoutMs: 0now explicitly disables the request timeout.getMetrics()now throwsTemplateError(wasSandboxError) when the sandbox is too old to support metrics.
@e2b/cli@2.11.1
Patch Changes
-
f90f35d: Add
--lifecycle.ontimeout,--lifecycle.autoresume, and--timeoutsupport toe2b sandbox create. -
7dc861f: fix: align behavior between the JS and Python SDKs
Python SDK:
commands.send_stdinandCommandHandle.send_stdinnow acceptbytesin addition tostr, and the handle'ssend_stdin/close_stdinnow accept arequest_timeout.git.resetnow accepts a typedGitResetModeand its validation error matches the JS SDK wording/ordering.GitResetModeis now exported.sandbox_urlis now propagated throughget_api_params.Template.from_image()now raises when only one ofusername/passwordis provided.get_info()no longer carries the envd access token on the returnedSandboxInfo(the_envd_access_tokenfield was unused), matching the JS SDK which strips it fromgetInfo.get_metrics()now raisesTemplateException(wasSandboxException) with the same message as the JS SDK when the sandbox is too old.
JS SDK:
Sandbox.getInfo()now includessandboxDomain, matching the Python SDK's singleget_info.getFullInfois deprecated and now just wrapsgetInfo(it no longer returns the envd access token).Sandbox.getMetrics()now returns[]in debug mode, matching the Python SDK. The debug short-circuit forgetMetrics/killis implemented on both the instance and static methods, so it applies consistently whether called asSandbox.kill(sandboxId)orsandbox.kill().Template.fromImage()now requires bothusernameandpasswordwhen registry credentials are provided.Template.getBuildStatus()now defaultslogsOffsetto0.requestTimeoutMs: 0now explicitly disables the request timeout.getMetrics()now throwsTemplateError(wasSandboxError) 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
Patch Changes
- 4e16cff: Add
proxyconnection 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
proxynot being applied to volume content requests.Volume.create/Volume.connectnow store theproxyon the returned instance, so instance methods (list,readFile,writeFile,makeDir,getInfo,updateMetadata,remove, …) route through it without having to passproxyon every call. A per-callproxystill takes precedence.
e2b@2.28.1
Patch Changes
-
08012ee: feat: add
sendStdin/send_stdinandcloseStdin/close_stdintoCommandHandleYou can now send and close stdin directly on a background command handle instead of going through
sandbox.commandswith the command's PID. -
ca18220: Use
components['schemas'][...]instead of verbosepaths[...]traversal for OpenAPI-generated type references.
@e2b/python-sdk@2.27.1
Patch Changes
- 4e16cff: Fix
proxynot being applied to volume content requests.Volume.create/Volume.connectnow store theproxyon the returned instance, so instance methods (list,readFile,writeFile,makeDir,getInfo,updateMetadata,remove, …) route through it without having to passproxyon every call. A per-callproxystill takes precedence.
@e2b/python-sdk@2.27.0
Minor Changes
-
d86368a: Align the sync and async Python SDK implementations: consistent parameter ordering (
_create,Commands._start), matching docstrings, keyword arguments inFilesystem.write, and a consistent bareExceptionfor the internal "Body of the request is None" guard (matching the volume client).Sandbox.pause()/AsyncSandbox.pause()(andbeta_pause) now return abool—Trueif the sandbox got paused,Falseif it was already paused — matching the JS SDK. Previously the instance method returnedNoneand the class-method form returned the sandbox ID.
Patch Changes
-
08012ee: feat: add
sendStdin/send_stdinandcloseStdin/close_stdintoCommandHandleYou can now send and close stdin directly on a background command handle instead of going through
sandbox.commandswith the command's PID. -
7296b2c: fix(python-sdk): stop sending
E2b-Sandbox-Id/E2b-Sandbox-Portheaders on the control-planeconnectrequestSandbox.connectwas attaching the envd data-plane headers (E2b-Sandbox-Id,E2b-Sandbox-Port) to thePOST /sandboxes/{id}/connectAPI 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.typedmarkers to thee2bande2b_connectpackages so type checkers like mypy and Pyright honor the inline annotations onSandbox,AsyncSandbox, and other public APIs instead of treating imports asAny. -
6c04e31: Use thread-local sync HTTP transports to avoid sharing HTTP/2 connection state across Python threads.
@e2b/cli@2.11.0
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 verbosepaths[...]traversal for OpenAPI-generated type references. - f1516d5: Remove
ensureAccessTokencall frome2b 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
Minor Changes
- 073661a: Add API-only custom header options for the JavaScript and Python SDKs.
Patch Changes
- e7a82ea: Remove unused internal code:
waithelper (js-sdk),asSandboxTemplate/asHeadline/selectOption/basicDockerfile(cli), andformat_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
Minor Changes
- 073661a: Add API-only custom header options for the JavaScript and Python SDKs.
Patch Changes
- e7a82ea: Remove unused internal code:
waithelper (js-sdk),asSandboxTemplate/asHeadline/selectOption/basicDockerfile(cli), andformat_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.