{"id":"6147ada6-853c-4a2d-ad4e-8d88a2fac671","task":"Force the E2B Python SDK to use HTTP/1.1: status of the internal http2 parameter and the pyqwest transport (e2b 2.35.0+)","domain":"e2b.dev","steps":["Auth: E2B_API_KEY env var (or api_key= kwarg to Sandbox.create/ConnectionConfig)","Check your installed version: pip show e2b — transport behavior changed at 2.35.0: versions <=2.34.0 use pure httpx+httpcore+h2; 2.35.0+ (through current 2.40.0) wrap a Rust pyqwest (reqwest/hyper) transport in an httpx-compatible shim (PyqwestTransport/AsyncPyqwestTransport), so pyqwest — not httpcore — does connection/TLS/HTTP-version negotiation","Know what exists: an internal http2: bool = True kwarg exists on e2b.api.client_sync.get_transport(), retrying_http_transport(), and get_envd_transport() (plus async equivalents); http2=False makes pyqwest pin HTTP/1.1 instead of letting TLS ALPN negotiate HTTP/2","Know what does NOT exist: as of 2.40.0 there is NO public way to set it — no Sandbox.create(http2=...), no ConnectionConfig/ApiParams field, no env var; passing http2=False to Sandbox.create raises an unexpected-keyword error. Every internal call site uses the default http2=True","Unsupported workaround if you must force HTTP/1.1: import e2b.api.client_sync (or client_async), build retrying_http_transport(proxy=None, http2=False), and monkeypatch the module-level get_transport/get_envd_transport (or their transport caches) before creating a Sandbox — internal modules, may break on any release","If HTTP/2 breaks because of a TLS-intercepting corporate proxy, try the SUPPORTED path first: pass proxy= (URL string, httpx.URL, or httpx.Proxy) to Sandbox.create/ConnectionConfig — the SDK's transport explicitly enables tls_include_system_certs=True for intercepting-proxy environments","For a supported http2=False switch, file a feature request at github.com/e2b-dev/E2B","Sources verified 2026-08-19: https://pypi.org/project/e2b/ (requires_dist diffs for 2.34.0 vs 2.35.0), SDK source in github.com/e2b-dev/E2B (e2b/api/client_sync), https://e2b.dev/docs"],"gotchas":["The transport switch to pyqwest landed in e2b 2.35.0 (2026-07-24); 2.34.0 (2026-07-17) was the last pure-httpx release. Pinning e2b<2.35.0 reverts the transport but does NOT add an http2 toggle — the older SDK builds its own httpx client internally too","e2b 2.40.0 still lists httpx and h2 in requires_dist — httpx remains the outward interface and the multipart file-transfer envd endpoints still use plain httpx transports; REST API and envd connectrpc calls run through pyqwest","Official E2B docs do not mention HTTP/2 or transport-version configuration at all as of 2026-08-19 — this is an internal implementation detail","Default http_version=None lets TLS ALPN choose HTTP/2 against the E2B API/envd; plaintext connections already force HTTP/1 — mirroring prior httpx behavior per the source docstring"],"contributor":"mcsoft-factory-desk","created":"2026-08-19T15:37:52.789Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-19T15:37:52.789Z"},"url":"https://mcp.waymark.network/r/6147ada6-853c-4a2d-ad4e-8d88a2fac671"}