Update dependency e2b to v2.46.0 - #254
Closed
renovate[bot] wants to merge 1 commit into
Closed
Conversation
Contributor
Author
Renovate Ignore NotificationBecause you closed this PR without merging, Renovate will ignore this update ( If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2.39.1→2.46.0Release Notes
e2b-dev/e2b (e2b)
v2.46.0Minor Changes
9d1c90d: Remove client-side API key format validation. The SDK no longer checks that the API key matches thee2b_hex format — only that a key is present. ThevalidateApiKey/validate_api_keyoption is deprecated and has no effect, and theE2B_VALIDATE_API_KEYenvironment variable is no longer read. The server remains the source of truth for key validity.Patch Changes
67c06e0: Point the two Code Interpreter README links atcode-interpreting/analyze-data-with-aiinstead of thecode-interpretingsection index. The index has no landing page and 307s to that article, dropping the query string on the way, so the UTM parameters were lost before the reader arrived. Linking at the resolved path keeps them.182b498: Point the README documentation links atdocs.e2b.devinstead ofe2b.dev/docs. The docs site moved to its own subdomain and has no/docspath prefix there, soe2b.dev/docsserves a 308 todocs.e2b.dev/ande2b.dev/docs/code-interpretingmaps todocs.e2b.dev/code-interpreting. The UTM parameters are unchanged and survived the redirect, so this removes a redirect hop rather than fixing broken attribution.b802997: Fix twonetwork.egressProxy/network["egress_proxy"]cases an untyped caller reaches.The JS SDK had no shape guard:
buildEgressProxyBodyrebuilds the body from the known fields, so anaddressthat was missing or not a string vanished and the caller got an API error about a config they never wrote ({"egressProxy":{}}). It now raisesInvalidArgumentErrornaming the option, the way the Python SDK already did:A
null/Noneusername or password is now treated as absent instead of being serialized as a JSON null the API rejects — reading a credential out of an unset environment variable is how a caller lands there, and it means the proxy takes no credentials:v2.45.1Patch Changes
b17b726: Stop the shared retrying transports from mirroring streamed request bodies inmemory. pyqwest's retry middleware keeps a non-
bytesbody replayable bycopying it as it is sent, so a streamed
files.writeof a file-like object orvolume.write_filegrew a full in-RAM mirror and peak memory scaled with filesize. The transports now declare pyqwest's
RetryMode.UNBUFFERED: a streamedbody is replayed only while nothing has been read from it, which is all the
SDK's connect-only retry policy needs — a
ConnectionErroris raised onlybefore the request was written. Connect retries are unchanged, and
bytesbodies (unary RPC payloads, in-memory writes) were already replayable without
a copy.
v2.45.0Compare Source
Minor Changes
8787dfe: Add sorting and new filters toSandbox.list. Theorderoption ('asc'/'desc', default'desc') sorts sandboxes by start time across the whole paginated dataset, and the query now supportsstartedAfter/started_after(inclusive lower bound on start time) andtemplate(exact template ID or alias) filters, all applied server-side before pagination. The CLIe2b sandbox listcommand exposes these via--order,--started-after, and--template.v2.44.0Compare Source
Minor Changes
5759f17: Add anE2Bclient that binds a connection config once and exposes the resource surfaces off it, so a single process can talk to several API keys, domains or deployments. The classes it exposes are per-client subclasses of the realSandbox/Volume/Template/Secretclasses, so they behave exactly like the top-level ones — per-call options still win over the client's options, which win over the environment variables. The named top-level exports are unchanged and keep reading the environment.Nothing existing changes:
Templateis now theTemplateBaseclass made callable as a factory, soTemplate(...), the statics andinstanceofkeep working, and the default export is stillSandbox.v2.43.0Compare Source
Minor Changes
f89f8c3: Add Secrets Management to the SDK. TheSecretclass (andAsyncSecretin Python) now manages E2B secrets:createandupdatestore secret values (write-only — no read surface returns them),getInfo/get_infoand the paginatedlistread metadata,existsanddestroyare idempotent existence and lifecycle helpers, andfillformats the${e2b.secrets.name}placeholder that the runtime resolves to the secret's current value.Patch Changes
2be6c12: Internal refactor: the template API operations resolve their connection config through a class-level hook, so aTemplateBasesubclass can carry bound connection options. No behavior change —Template/AsyncTemplatekeep reading config from per-call options and environment variables. In the Python SDK the terminal template operations (build,build_in_background,get_build_status,exists,alias_exists,assign_tags,remove_tags,get_tags) becameclassmethods, with signatures unchanged for callers.05aa03c: Add typed not-found errors for volumes:VolumeNotFoundError/VolumeNotFoundException(thrown when a volume is not found) andVolumePathNotFoundError/VolumePathNotFoundException(thrown when a path inside a volume is not found). All subclass the existingNotFoundError/NotFoundException, so existing catches keep working.v2.42.0Compare Source
Minor Changes
7af41e9: Refresh the MCP server types from the current MCP gateway catalog: 49 servers are new (n8n,neo4j,okta,temporal,proxmox,zscaler, the AWS Labs family, ...), 61 titles and 10 descriptions were rewritten, and 4 servers changed their options (awsDiagram,context7,neo4jCypher,onlyofficeDocspace).Six servers the catalog no longer publishes are gone from
McpServer:postgres,root,tembo,flexprice,triplewhale,cdataConnectcloud.awsDiagramandcontext7now require an option (outputDirandapiKey), soawsDiagram: {}andcontext7: {}stop type-checking, andonlyofficeDocspaceis down tobaseUrlanddocspaceApiKey. The removals also narrowMcpServerName, soTemplate().addMcpServer('postgres')stops compiling. The config is still passed to the gateway as written, so a dropped server can be kept by casting past the type — whether it starts is up to the gateway.Patch Changes
15bd48b: OmitautoPausefrom the create-sandbox request when no timeout lifecycle is configured, and omitautoPauseMemoryunlesskeepMemory/keep_memorywas chosen. Sending the SDK's local defaults for those fields was indistinguishable from an explicit choice, so the API could not tell "no preference" from a client choice and own its defaults. Explicit values are still always sent:5367693: OmitautoResumefrom thePOST /sandboxesrequest whenlifecycle.autoResume/lifecycle["auto_resume"]is not configured, instead of sending the SDK's local default as{ "autoResume": { "enabled": false } }. The API can now tell an unset preference from an explicit opt-out and own the default itself. Explicit values are unchanged on the wire.666241d: Run every persistent HTTP stack in the SDK on one shared pyqwest connection poolinstead of four: the control-plane REST API, the envd HTTP API, the envd RPC
clients, and the volume content API now all draw from
e2b.api.client_sync/client_async, keyed on the three knobs that are fixedwhen a pyqwest transport is built — proxy, idle read bound, and HTTP version.
reqwest pools per host internally, so one pool serves the API host and every
per-sandbox host without interference — and since envd RPC and the envd HTTP API
hit the same host, an active sandbox now needs a single HTTP/2 connection instead
of one per stack. Streamed downloads keep a pool of their own, the only one
carrying the idle
read_timeout: reqwest's read timer runs during body send andTTFB, so on a shared pool it would cut off long uploads. No signature changes —
get_transportandget_envd_transportkeep thehttp2parameter restored in2.39.1, and the two are now the same pool per key rather than two.
2daced6: Tag the package homepage and README links with UTM parameters (utm_source=npm/pypi) so registry traffic to e2b.dev is attributed correctly. No functional change.v2.41.0Compare Source
Minor Changes
6824cdf: Addnetwork.egressProxy/network["egress_proxy"]for routing a sandbox's outbound TCP through a SOCKS5 proxy you operate ("bring your own proxy"). Tunneling happens on the host after theallowOut/denyOutlists are evaluated, so nothing runs inside the sandbox and code running there can neither see the proxy nor route around it. UDP-based traffic — DNS and QUIC/HTTP3 — is not tunneled.It combines with the rest of the network configuration — here everything except
api.example.comis denied, and the traffic that is allowed goes through your proxy:updateNetwork/update_networksets or replaces the proxy on a sandbox that is already running, with no restart. The update replaces the whole configuration instead of merging into it, so an update that leaves the proxy out stops tunneling — repeat it in every update that should keep it.getInfo/get_inforeports the proxy the sandbox's egress is currently tunneled through. The password is never returned, so the returnedSandboxEgressProxyInfodoes not have the field at all:Egress fails closed: when the proxy is unreachable or does not speak SOCKS5, outbound connections fail rather than falling back to a direct connection. The address is validated server-side when the sandbox is created — a rejected create leaves nothing behind. Available on E2B Cloud and in BYOC deployments; a sandbox that names a proxy on a deployment built from the open source
e2b-dev/infrarepository is rejected as unsupported.Patch Changes
02ba746: Raise theh2floor to>=4.4.1so it can no longer resolve to a version affected by CVE-2026-71554, where a duplicateHostheader is forwarded to the consuming application and becomes a request smuggling primitive once HTTP/2 is downgraded to HTTP/1.1.e2eebd5: Fix URL encoding of namespaced template names and aliases in the Python SDK.The endpoints that take a template ID also accept a template name, and names may
be namespaced (e.g.
namespace/name). The SDK interpolated them into the requestpath without encoding, so a call like
Template.exists("namespace/name")hit/templates/aliases/namespace/nameinstead of/templates/aliases/namespace%2Fname— the slash split the route rather thanstaying inside one path segment. Every method that takes a template ID or name,
an alias, or a snapshot ID in the path —
Template.exists/alias_exists,get_tags, the build/upload/status calls, andSandbox.delete_snapshot(whosesnapshot IDs are
namespace/name:tag) — now percent-encodes the value, matchingthe JavaScript SDK (which already encodes path parameters via
encodeURIComponent).v2.40.0Minor Changes
6248b12: Remove the deprecatedaccessToken/access_tokenoption and itsE2B_ACCESS_TOKENenvironment fallback. E2B access tokens are no longer accepted for API authentication, so the SDKs no longer resolve one or send it as anAuthorization: Bearerheader — requests authenticate with the API key alone.If you were relying on the option to send a bearer token to a custom deployment, pass the header directly, which is what the deprecation notice already pointed to:
Note that
Sandbox.envd_access_token/traffic_access_tokenare unrelated per-sandbox tokens and are unaffected.Configuration
📅 Schedule: (in timezone UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.