The whole terminal runs inside the sandbox, so the agent, its file tools, MCP servers and hooks are all held to the task's worktree. The rest of your machine is out of reach.
A default per project, with an override for any one lifecycle hook, script or terminal. Sandbox the agent. Keep the dev server and the push on the host, where the credentials are.
The ouijit command works inside, on a token scoped to the project. When the agent needs the host, for a push or a signed build, it asks. You see the exact command and press Run or Decline. How much of Ouijit it may drive is a project setting: read only, its own task, or everything.
A Custom launcher runs every sandboxed command through a script your team maintains. The script owns the boundary. Ouijit passes it the worktree, git directories and ports as hints.
$ ~/.local/bin/team-sandbox -- zsh
OUIJIT_SANDBOX_WORKTREE=~/Ouijit/worktrees/horizon/T-119
OUIJIT_SANDBOX_GIT_DIR=~/Code/horizon/.git
OUIJIT_SANDBOX_HOOK_PORT=52341 Set the project's default to Sandbox in Project settings, and every task terminal, hook and script runs inside it. Or sandbox one command from any terminal:
ouijit sandbox -- claude --dangerously-skip-permissions Kernel-enforcedSeatbelt on macOS, Landlock on Linux, applied by nono, an open-source sandbox runner that ships inside Ouijit. The limits are an OS policy on the process, not a prompt or a classifier.
In placeThe agent runs in the real worktree as a normal process, with your tools on PATH and its own login intact. No VM, no file sync, no second environment.
Policy outside the repositoryEach project's profile lives in your config directory, and .git hooks and config are read-only inside. The agent can't grant itself access or plant a hook that runs on the host. Edit the profile to grant folders or change the network rules.
It covers more. Claude Code's sandbox wraps the shell commands it runs, and its file tools, MCP servers and hooks run outside it. Ouijit's wraps the whole terminal. The two can run together.
Any command. Claude Code, Codex, Pi and OpenCode sign in and run with nothing to configure. Anything else needs its paths granted in the project's profile.
By default, yes. Block it or allow specific ports in the project's profile. Ouijit's own status port stays reachable, so the card still shows what the agent is doing.
No. There is nothing to boot and nothing to sync. A sandboxed terminal opens as fast as any other.
macOS, or Linux with kernel 5.13 or newer. Nothing to install.