What's New
✨ Features
- Retrying pool acquire policies — Go sandbox pools now support
AcquirePolicyRetryNextIdleandAcquirePolicyRetryNextIdleThenCreate, allowingAcquireto skip stale idle candidates before failing or falling back to direct create. Existing policies keep their current behavior;MaxAcquireRetriesdefaults to 3. #1347 - Sandbox create metrics —
Sandbox.Createnow reports fire-and-forgetsandbox.createlatency events to the lifecycle server. Reporting ignores old-server version skew and can be disabled withOPENSANDBOX_DISABLE_METRICS=1. #1307 - Client IP header — the SDK now best-effort detects the host intranet IPv4 and sends it as
OPEN-SANDBOX-CLIENT-IPon outbound requests. User-provided headers are never overwritten. #1326 - Attach to isolated sessions — the SDK can now attach to an existing isolated session by session ID, allowing stateless workers to recover a functional handle while the execd in-memory session remains alive. #1295
- UID mode availability — isolated session responses now expose per-mode
setpriv/usernsavailability, and unavailable requested modes fail with503 NOT_SUPPORTED. #1320 - Exact snapshot name filtering — snapshot listing now supports an exact
namefilter. #1301 - Isolated session bind mounts and listing — isolated sessions can now receive explicit bind mounts, and the SDK exposes isolated session listing so callers can inspect active sessions. #1264 #1269
- Credential Vault placeholder substitutions — request matching now supports opt-in placeholders for path, query, header, and body surfaces, including passthrough auth bindings. #1251
🐛 Bug Fixes
- Streaming and stale connection hardening — long-lived SSE command streams no longer use the normal total request timeout, so command output is not cut off by
RequestTimeout. IdempotentGET/HEADrequests retry once on a fresh connection after timeout, reset, or EOF errors. #1316
📦 Misc
- Bumped the Go SDK version constant and default User-Agent string for this release. #1384