v1.22.0
Added
- Launch-time warnings when a known agent is missing a capability it
needs (issue #131). Since v1.18.0 made capabilities opt-in, an
older~/.ai-jailcould fail four different ways — none of which
mentioned the config. ai-jail now warns at launch when a known API
client (claude,codex,gemini,opencode,crush,grok,
jcode,pi,aider,soulforge,omp,kimi*) runs with
networkoragent_stateoff, pointing at the exact config key or
flag and atai-jail status. Warning only — the launch is never
blocked, unknown commands stay silent, and the network warning is
suppressed under--lockdown(which blocks network by design).
Fixed
-
macOS: fork-pool test runners can stop their own workers (PR #132,
thanks @zanlucathiago). The default seatbelt profile had no
signalrule at all, sokill(2)inside the sandbox returned EPERM
and vitest/jest/pytest-xdist hung at teardown. The default profile
now allows(allow signal (target same-sandbox))— the same split
Apple ships and this file already used forprocess-info*: children
can signal each other, nothing outside the sandbox is reachable. The
broad(allow signal)stays behind--macos-host-ipc. -
macOS:
/bin/shshell selection works again (issue #131). Since
Catalina,/bin/shreads/var/select/shto pick bash vs zsh; the
default profile allowed no such read, so every hook the agent ran
died with a non-blocking EPERM before it started. The profile now
grantsfile-read-metadataon/private/var/selectandfile-read*
on/private/var/select/sh. -
macOS: Claude Code's
/tmpcwd marker is granted (issue #131).
Claude Code writes/tmp/claude-<random-hex>-cwdloose in/tmpon
every Bash call (anthropics/claude-code#8856); the existing
/private/tmp/claude-<uid>grants could never match it, so every
command ended with "operation not permitted" and heredocs broke. The
claude-specific block now covers it with a hex-scoped regex. The
write half lives only in the write section, so--lockdownkeeps its
no-host-file-write invariant.
Chore
- Reformatted markdown tables in
README.mdanddocs/SECURITY.mdto
satisfy the prettier pre-commit check that had left thenixCI job
red, and updated the macOS default-profile description in
docs/SECURITY.mdfor the changes above.
Checksums (SHA256)
776d8182ea07740392767b1889d2760c11887a3c7f6ecafbe0b7c093aa542149 ai-jail-linux-x86_64.tar.gz
dff0dc232070ec0daa1044a83d3665f165e00a2a224424f2486bc47c327d0407 ai-jail-macos-aarch64.tar.gz
Install
brew tap akitaonrails/tap && brew install ai-jail
yay -S ai-jail-bin
cargo install --locked ai-jail