01 · snapshot
Before the agent starts
Protected files are held in memory: CI workflows, .env files, .git/config, git hooks and anything in .cage.yaml. No manifest needed.
Zero config · restores, never blocks
Start your agent inside the cage. Changes to CI configs, .env files and git hooks are put back while it runs, and pushes of them are refused.
Run the agent you already use inside the cage. It restores CI configs, .env files and git hooks/config while the session runs. No setup, no manifest. Needs Node 24+.
npx @jeger-ai/opengantry-cage -- claude
pnpm dlx @jeger-ai/opengantry-cage -- claude
npm install -g @jeger-ai/opengantry-cage gantry-cage -- claude
Missions, gantry verify, MCP and hooks, with the cage included as gantry cage. curl and PowerShell bootstrap Node 24 if it is missing.
curl -fsSL https://opengantry.ai/install.sh | sh
powershell -c "irm https://opengantry.ai/install.ps1 | iex"
npm install -g @jeger-ai/opengantry
pnpm add -g @jeger-ai/opengantry
bun add -g @jeger-ai/opengantry
01 · snapshot
Protected files are held in memory: CI workflows, .env files, .git/config, git hooks and anything in .cage.yaml. No manifest needed.
02 · restore
About once a second, cage puts back any change to a protected file. Lockfile changes are listed and kept.
03 · refuse
A git push from inside the session is refused when the outgoing commits touch protected paths, and the agent sees why.
04 · halt
An agent that rewrites the same protected file after three restores is stopped, along with everything it spawned. Exit 4.
05 · report
One summary of everything restored and refused. Exit 3 if anything was touched; otherwise the agent's own exit code.
your repo
What it doesn't do: it restores rather than blocks, leaves git history as it
is, and doesn't see reads, network calls or writes outside the protected paths.
.cage.yaml adds your own paths and can only add protection;
what it protects.
Scope on every write: allowed paths, forbidden paths and your gate command, committed to Git. Verify fails closed with machine-readable findings.
gantry legislate "ship ingest retry" --msn MSN-0042
eval "$(gantry runtime env)"
gantry verify --json
A signed ORG-POLICY.yaml that can only tighten local law. Today only config_floor is enforced.
A digest-only chain on refs/gxt/ledger, exportable as a SOC 2 pack.
depends_on is proved from a fetched ledger ref; a release waits until its dependency is verified.