Chopi ๐ถ
A macOS-native filesystem and network sandbox to unleash
your agents.
No VM, no container: the agent runs with your real tools.
Agent Safehouse base
- ?Workspaceread/write
The root of the git worktree the session runs in. Chopi refuses to run anywhere else, so its git protections always apply.
- ?Paths you grantread/write or read-only
sandbox.shCaches, build outputs, other apps: add them with safehouse's--add-dirsand--add-dirs-ro, or enable presets such asxcode.
Added by chopi
- ?Git internalsconfig & hooks read-only
Only git's data (objects, refs, the index) is writable, so nothing the agent writes can later run unsandboxed during a git operation. A rebase or cherry-pick left in progress is aborted when the session ends.
- ?Other worktreeshidden
A session sees only its own worktree's files, so the agent can't pick up context from another task.
chopi --worktree NAMEstarts a session in a new worktree on its own branch. - ?Safe write targetsedits become patches
sandbox.shFiles you want to read before they change, like shared guidelines or a CLAUDE.md. The agent can read them, and queues a patch instead of writing. - ?Networkchopi-proxy only
Seatbelt can filter by IP and port but not by hostname, so it allows only the local proxies. A tool that ignores
HTTP_PROXYgets no network at all.
macOS enforces the policy
claude, codex, or any command
you approve each change before it lands
chopi-review runs it any time.outside the sandbox, shared by all sessions
โ allowed hosts only proxy-rules.yaml
โ GitHub, per allowlisted repo github-allowlist
Get started
Two terminals: one for the proxy, one for the agent.
1Install
$ git clone https://github.com/danra/chopi $ cd chopi && ./install.sh
Then review the configuration: allowed hosts in
config/proxy-rules.yaml, pushable repos in
config/github-allowlist, and sandbox policy in
config/sandbox.sh.
2Start the proxy
$ chopi-proxy # leave it running; all sessions share it
It runs in the foreground so refused connections are always visible.
3Run your agent
$ cd ~/path/to/your/repo $ chopi claude # or codex, or any command $ chopi --worktree fix-123 claude # or in a fresh worktree + branch
Running claude? Chopi teaches it about the sandbox via the
system prompt, so the agent explains denials and guides you to the right
one-line config fix instead of fighting the fence.