feat(image): ship bubblewrap and socat #48
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/bubblewrap"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Tools inside an azkaban client container, such as Claude Code's own
sandbox or a script that wraps a command, had no way to isolate
folders: the images ship no
bwrap, and Claude Code's sandbox alsoneeds
socat. User namespaces already work in the containers, so onlythe tools were missing.
What changed
bubblewrapandsocat,installed in the base stage. Inside a container on Linux, a tool can
bind folders read-only or writable, hide others, and unshare the
network and process namespaces with
bwrap.launcher runs it: a bwrap jail with the container's
/procbound inmust let a write to its scratch folder land and refuse a write to the
home folder, and
socatmust run.refused fresh
/procmount, thesandbox.enableWeakerNestedSandboxsetting Claude Code's sandbox needs here, and the limit set by the
unfixed CVE-2026-87766 in Ubuntu 26.04's
bwrap.docs/adding-a-client.mdlists the new per-image check.Non-goals: the launcher's container flags stay as they are, Codex's
sandbox stays off under its entrypoint, and macOS is unverified.
How to verify
make smoke-imageson a host with real rootless Podman: each imagepasses the new bwrap probe and the run ends with "all three image
targets passed".
bwrap --ro-bind / / --dev-bind /dev /dev --bind /proc /proc --bind "$PWD" "$PWD" --unshare-all -- touch "$HOME/x"fails, while touching a file under$PWDworks.make lint && .agents/hooks/shellcheck.sh repo && make testpasses.Each new or extended test fails on master's code. Not run:
make smoke-images, since no real rootless Podman was available.Considerations
The bwrap probe has not yet run against a real image, so the smoke gate
on real Podman is the first proof that bwrap works under the launcher's
flags on your hosts.
85855d47c9toddbe99d89c