feat(devel): add Docker Sandboxes environment for Chainloop-traced Claude Code
Adds a declarative Docker Sandboxes environment that runs Claude Code with chainloop trace already wired in, so a session working on this repo is recorded as an AI coding session and attested to Chainloop without any per-developer setup.
What is added
sbxenv.yaml declares the environment. It selects the kit, passes the Chainloop API token as a kit argument and pins persistent trace mode, so the attestation is pushed by the managed pre-push hook using the identity already committed in .chainloop.yml (org and project are not duplicated here).
devel/sandbox-kit/ vendors the chainloop-trace-claude kit, a fork of the built-in claude agent. It installs the Chainloop CLI, wires the trace hooks, and keeps Chainloop hosts off the egress proxy's intercepted path, which serves HTTP/1.1 only and would otherwise break the gRPC client. Vendoring it keeps the environment self-contained; the README documents how to re-sync it with its upstream source.
Both files are heavily commented with the design rationale and the constraints behind each choice.
Also ignores .claude/settings.local.json across the repo, since those files hold per-developer permission allowlists and are not meant to be shared.
Requirements
The kit requires an sbx@nightly build rather than the v0.39.0 stable release: it relies on extends: claude, and additive setup: merge (docker/sbx-releases#415) regressed in that release. On an affected build the sandbox still starts but attests nothing, with no error. The README and spec.yaml document the check for this, along with the build versions verified so far. This constraint is expected to age as upstream releases catch up.
AI disclosure: this contribution was produced with the assistance of Claude Code. Commits carry an Assisted-by: Claude Code trailer.