docker/execd/v1.0.22
opensandbox-group/OpenSandboxdocker/execd/v1.0.22Aug 13, 2026by Pangjiping
AI Summary
This release introduces background execution support with JSON handles and read-only PTY viewers, alongside significant security hardening for workload lifecycle and environment variable isolation.
Key Highlights
- Background runs in isolated sessions with polling support
- Read-only PTY viewers allow multiple clients to watch sessions
- Security: Fail-closed workload lifecycle and environment leak fixes
- Attach functionality available in all five SDKs
Breaking Changes
- Private-network sessions fail closed at startup if isolation cannot be verified
New Features
- Background runs with JSON handles and status polling
- Read-only PTY viewers with replay and live output
- Attach(sessionId) in all five SDKs
- UID mode availability probing
- Fail-closed workload lifecycle for security
- CVE dependency bumps (grpc, x/crypto, x/net, postcss)
Full Release Notes
## What's New
### ⚠️ Breaking Changes
- **Private-network sessions fail closed at startup.** Explicit `share_net: false` sessions now require execd to bind-pin the workload NetNS/UserNS and return retryable `503` on failure; shared-network sessions are unchanged. (#1397)
### ✨ Features
- **Background runs in isolated sessions.** `run` accepts `background: true` and returns a JSON handle; new `runs/{runId}` status and `.../logs` endpoints support polling. In-flight runs block idle GC. (#1456)
- **Read-only PTY viewers.** Opt-in `?mode=viewer` lets multiple clients watch a running PTY session alongside the exclusive holder, with replay + live output and backpressure isolation. (#1420)
- **`attach(sessionId)` in all five SDKs.** Rebuilds a fully functional session handle from a bare id, e.g. after a worker restart; `SessionState` now echoes creation params. (#1295)
- **`uid_mode` availability probing.** execd probes `setpriv`/`userns` independently and returns `503 NOT_SUPPORTED` for unavailable modes instead of failing all isolation. (#1320)
### 🐛 Bug Fixes
- **Fail-closed workload lifecycle for isolated sessions (security).** A native gate blocks the sandbox command until execd verifies workload identity; sessions are terminated if lifecycle accounting is lost. (#1388 #1392)
- **execd config env no longer leaks into bwrap sessions (security).** `EXECD_ACCESS_TOKEN`, `JUPYTER_*`, `EXECD_ISOLATION_CONFIG` are always stripped, even if allow-listed. (#1314)
- **Fixed Jupyter execution deadlock under slow consumers** — no more permanent hangs during bursty output. (#1464)
- **Bash → `sh` fallback** for PTY, bash-session, and isolated APIs, including correct dash/ash `export -p` quoting on bash-less images. (#1359 #1361 #1367)
- **Stale mitmproxy CA purge on egress startup** — fixes HTTPS failures after pod-container co-restart. (#1371)
- **SSE stream corruption eliminated** — ping goroutine race and proxy error leak fixed (~64% nightly e2e failure rate). (#1216)
### 📦 Misc
- **CVE dependency bumps**: grpc v1.82.1, x/crypto v0.52.0, x/net v0.55.0, postcss 8.5.11. (#1385 #1250)
- **Apache 2.0 license headers** added to 21 files. (#1313)
## 👥 Contributors
Thanks to these contributors ❤️
- @bcho
- @hittyt
- @khandar-william
- @Pangjiping
- @ruirui6946
---
- Docker Hub: opensandbox/execd:v1.0.22
- Aliyun Registry: sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/execd:v1.0.22
- GHCR: ghcr.io/opensandbox-group/opensandbox/execd:v1.0.22