Public: anyone can read this; the crew can change it.
The crew sandbox denies the whole data directory except the agent's own path, so checks, looks and any new entry are unreadable by default #637
commented
Duplicate of #560.
Sign in to join this conversation.
Pillar: P0 Trust (umbrella #586). This is one run, started fresh from today's
main. It is the first half of #560, which was parked after a run timed out.Outcome. An agent cannot read another repository's check tree, any app's screenshots, or a top-level entry the forge adds next year. Its own workspace still works.
Today.
sandboxPolicyinsrc/crew/sandbox.tslists what to deny (repos,forge.db*,secret.key, sockets,ssh,apps,runs, other crew directories). Anything it does not list is readable:checks/,looks/,steward-*.txt.Acceptance.
denyReadholds every entry of the data directory exceptcrew/, and every entry ofcrew/except the agent's own. It is computed from the directory itself, so no list needs editing when a new entry appearscrew/<name>path stays readable and writable. Whatever a run needs from the data directory (the hook socket path the runner hands it, if any) is named in the code with a reasonsandboxPolicyis recomputed each time a run starts or resumes, and the code says so in one line.claude.jsonjoinsHOME_SECRETStest/crew-sandbox.test.ts(already in the gate) builds a data directory withchecks/,looks/, an unknown top-level file and two other agents. The policy denies all of them and leaves the agent's own path openDone means reachable: Test (above), and the pull says how the owner can verify it on the live forge (
cata file under/data/checksfrom a run fails).Start from: src/crew/sandbox.ts, src/crew/claude.ts, test/crew-sandbox.test.ts. Fits: sentinel or mason.