v2.7.0
Two contributed fixes land this release: --github now works when your gh
token lives in the system keyring, and the private-home command exemption no
longer breaks symlink-following launchers.
Backward compatible: every pre-2.7.0 .ai-jail keeps working.
Added
--githubforwards a keyring-stored gh token (#153).--githubalready
mounts~/.config/ghread-only, butgh auth loginstores the token in the
system keyring by default, so a jailedghfound the account but no
credential. With--github, ai-jail now runsgh auth token --hostname github.comon the host (no shell, 5s timeout, validated output) and forwards
the result asGH_TOKENfor that launch only. The value rides the #147
--argsmemfd, so it never touches argv, disk, or a saved.ai-jail;
--dry-runnever fetches it; an explicit/hostGH_TOKEN/GITHUB_TOKEN
short-circuits the lookup; and the capability stays opt-in, monotonic (a
project.ai-jailcannot enable or steer it), and disabled under
--lockdown. No keyring or D-Bus access from inside the jail. Thanks
@miguins.prime-agentis recognized for agent-state (#152). Its auth/session
state under~/.prime/agentis mounted (bwrap + seatbelt), never the whole
~/.prime— the siblingconfig.jsonholding the prime CLI's API key stays
hidden.
Fixed
- Private-home command exemption preserves symlink chains (#152). The
exemption bound the launcher's path with--ro-bind, which flattened symlink
hops, so a symlink-following launcher (e.g. bun's app-root heuristic, which
looks forpackage.jsonin the dirname of the resolved executable) crashed
with ENOENT. Each symlink hop is now recreated inside the sandbox with
--symlinkusing the verbatim host target text; only the terminal real path
is bind-mounted read-only. Relative hops are lexically normalized so no
collected mount path carries... The #138 dedup (skip paths under an
already-bound dir) is preserved. Thanks @jadsongmatos.
Checksums (SHA256)
b8b5ef75027d0d6bd9d2d2f2cfc20e83a4f0916e7237604fea3b81f85eaee067 ai-jail-linux-x86_64.tar.gz
3c6a4cc41212f337ba72e1895b11dd10ae620b5bb86d384919a7e29aeb8ff0ba 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