Skip to content

Agent Sandbox Image

RIGOR maintains one shared sdlx-agent-base image for ASCEND, Composer, and PRISM Agent sessions. The image gives each isolated container the same known shell, source-control, build, and analysis tools without downloading a new toolchain during every task.

This is an RIGOR compatibility baseline, not a copy of an OpenAI internal image and not a list of Codex hard dependencies. Codex can use any executable exposed by its runtime; RIGOR includes the commands that are repeatedly useful for this repository and its scientific workflows.

Why the image exists

  • Reproducibility: the base image digest, uv, and scientific Python packages are pinned, so equivalent sessions start from an equivalent toolchain.
  • Fast, reliable startup: common tools are already present when network access is slow, restricted, or unavailable.
  • Auditable scope: adding a tool is a reviewed image change rather than an unrecorded per-session installation.
  • Consistent operation: ASCEND, Composer, and PRISM share command conventions while retaining separate containers, workspaces, policies, and audit records.

The image is built from sandbox/agent-base.Containerfile by scripts/build-agent-sandbox.sh.

What is included and why

GroupRepresentative toolsReason
Shell and textBash, Zsh, coreutils, find, rg, fd, sed, awk, jq, yqInspect and transform repositories and structured configuration using common Agent command patterns.
Source and filesGit, Git LFS, diff/patch, archive tools, file, editorsReview and modify source, compare changes, and handle normal repository artifacts.
Diagnosticsps, lsof, ss, DNS utilities, treeDiagnose child processes, ports, DNS, and workspace layout without host access.
Build toolsGCC/G++, Clang, Make, CMake, Ninja, pkg-config, OpenSSL and SQLite headersBuild common native projects and Python packages with native extensions.
Language runtimesNode.js/npm/Corepack and Python/pip/venv with pinned uvCover RIGOR's TypeScript and Python code and respect project lockfiles.
Scientific baselinepinned NumPy, SciPy, and Matplotlib in /opt/sdlx-scienceGive PRISM and other bounded analysis tasks a reproducible numerical and plotting baseline.

fd-find is exposed as fd because that is the common cross-platform command name. apply_patch remains an Agent harness capability; the Linux patch package is included only for conventional source workflows.

Deliberate boundaries

The baseline does not include a Docker socket, sudo, Kubernetes/cloud administration tools, or every language ecosystem. Project-specific Rust, Go, JVM, device SDK, or infrastructure tools should use a reviewed profile or a separate image when a real workload requires them.

Nested bubblewrap is also omitted because RIGOR currently applies isolation at the outer Podman boundary. Runtime code, rather than the image alone, enforces a read-only root filesystem, dropped capabilities, no-new-privileges, bounded tmpfs/cache mounts, resource limits, mount policy, and sandbox cleanup.

The compilers and scientific stack increase image size, but they avoid the more costly and less reproducible alternative of installing them during Agent runs. --no-install-recommends and removal of package indexes limit avoidable growth.

Change rule

Add a baseline tool only when an RIGOR contract, representative repository task, or aggregated missing-command telemetry demonstrates recurring need. Pin tools whose version affects reproducibility, rebuild the image, run the sandbox smoke tests, and review both image-size and permission changes. Keep one-off and high-privilege tools outside the shared baseline.

Build and runtime maintenance procedures are documented in Deployment and Services.

RIGOR product, architecture, operations, and contributor documentation