Agentic Sandbox v2026.7.7
Agentic Sandbox v2026.7.7
Released: 2026-07-12 Tag: `v2026.7.7` Previous: `v2026.7.6` Compare: `v2026.7.6...v2026.7.7`
What this release is
v2026.7.7 is a VM-runtime reliability release with a supply-chain change to how releases are signed.
Two UAT-found VM control-channel defects are fixed: idle connections that silently dropped after ~30 minutes, and pre-existing sessions that were killed whenever the transport reconnected. Same-host VMs now use vsock for the control channel by default, deleting the libvirt NAT hop that those failures crossed.
Separately, release signing moves into OpenBao: the GPG release key is fetched from the vault at CI time via a least-privilege AppRole instead of living as a stored CI secret. The signing identity is unchanged for anyone verifying releases.
Highlights
- VM control channel no longer drops when idle (#633): the agent gRPC
client now sets HTTP/2 keepalive (10s interval / 20s timeout, ping-while-idle) and OS-level TCP keepalive on every transport. A flow torn down by a stateful middlebox now surfaces as a fast transport error and trips the existing reconnect/backoff, instead of leaving a zombie connection until the next write.
- Reconnect is state-preserving; sessions survive it (#634): the agent no
longer SIGTERMs tracked workloads on stream loss. `running_commands` and their child processes persist across a reconnect, the output channel survives (output produced while disconnected buffers and flushes), and server-side reconcile is the sole kill authority. Previously only detached-tmux sessions traversed a reconnect; now non-tmux sessions do too.
- vsock control transport by default for same-host VMs (#633): when the
host exposes `/dev/vhost-vsock`, the management server serves the vsock gRPC listener and provisioning selects it, so guest↔host control traffic bypasses the libvirt NAT/ufw boundary entirely. Opt out with `AGENTIC_GRPC_VSOCK_PORT=0`; hosts without vsock keep the mTLS-TCP path. Loadout-provisioned VMs also get a static IP now (no in-guest DHCP), removing the ~30-minute lease-renewal event from otherwise-idle guests.
- Release signing sourced from OpenBao: the `sign-and-sbom` job logs into
OpenBao with a least-privilege AppRole (its role-id/secret-id are the only stored CI secret), reads the release GPG key ephemerally, asserts the pinned fingerprint, signs the tarballs, and scrubs the keyring — nothing sensitive persists on the runner. Replaces the `GPG_PRIVATE_KEY`/`GPG_PASSPHRASE` CI secrets. cosign image signing is unchanged.
Upgrade by audience
| Audience | Action |
|---|---|
| VM-runtime operators | Redeploy VM agent binaries (`./scripts/deploy-agent.sh <vm>`), and restart the management server to pick up the default-on vsock listener. New provisions get vsock + static IP; existing VMs keep their current config until reprovisioned. |
| Release verifiers | No change. Signatures are produced by the same key (fingerprint `FE9272F0BC5781E1DE77FAAA719AB63879E84CE8`); verify as before. |
| Container/host-runtime users | No action — these fixes are VM-runtime-specific. |
Verification
# Container image runs
docker pull ghcr.io/jmagly/agentic-sandbox-mgmt:v2026.7.7
docker run --rm --entrypoint /bin/sh ghcr.io/jmagly/agentic-sandbox-mgmt:v2026.7.7 \
-lc 'command -v agentic-mgmt >/dev/null && test -x "$(command -v agentic-mgmt)"'
# Tarball signature (expected key fingerprint FE9272F0BC5781E1DE77FAAA719AB63879E84CE8)
gpg --verify agentic-sandbox-2026.7.7-x86_64-linux-gnu.tar.gz.asc \
agentic-sandbox-2026.7.7-x86_64-linux-gnu.tar.gz
Full notes: `CHANGELOG.md` `[2026.7.7]`.