github akitaonrails/ai-jail v1.19.1

7 hours ago

Fixed

  • NixOS installs work again. v1.19.0 refused the bwrap it was pointed at
    and failed 78 tests during the build:

    BWRAP_BIN is set to /nix/store/…-bubblewrap-…/bin/bwrap but it is not a
    trusted executable
    

    The store check had been extended to ask the kernel whether the process can
    write /nix/store. A standard multi-user store is root:nixbld mode 1775
    and Nix builds run as a nixbld member, so that question answers "yes" for
    exactly the legitimate layout. Being able to add a store path is not being
    able to replace one — the sticky bit separates them, and the binary itself
    must still carry no write bits — so the check is back to ownership and mode
    only. Thanks to @wtf9880 (#114).

  • ai-jail --init no longer copies your global config into the repository.
    It persisted the fully merged configuration, so a populated ~/.ai-jail
    landed in the project's .ai-jail: personal absolute paths, claude_dir,
    and capability flags a project file cannot act on anyway. --init now saves
    the project layer only, so --init --no-network writes exactly
    network = false. Thanks to @zinga666 (#110).

  • mise never blocks the launch. The wrapper chained your command onto mise
    activation with &&, so a mise that is not reachable inside the sandbox —
    the binary under ~/.local/bin, which private home does not mount — aborted
    the whole launch and the agent never started. Activation is now best-effort
    and the command always runs. Thanks to @jschaeff (#109).

  • mise activation is skipped when it has nothing to activate against.
    Under the default private home, neither ~/.config/mise nor
    ~/.local/share/mise is mounted. Running activation there made mise resolve
    every declared tool over the network — a multi-second timeout each before the
    agent started — and then fail on shims that could not resolve. Reported with
    unusually good detail by @Augusto2803 (#113).

Documentation

  • env_pass is documented. It already worked from the global config and its
    [commands.<name>] tables — it is only skipped when writing, because
    NAME=VALUE entries can carry secrets — but nothing said so, and it read as
    CLI-only. Entries in a project .ai-jail are ignored, since a repository
    must not pull variables out of your shell. Thanks to @zinga666 (#111).
  • The README no longer promises mise integration that the default private home
    cannot deliver, and gives the ro_maps recipe for making it real.

Packaging

  • packaging/aur/publish.sh assembles and validates both AUR packages, and
    refuses to publish a version mismatch, a missing upstream tag, a checksum
    that does not match the published artifact, or a .SRCINFO that disagrees
    with its PKGBUILD.

Checksums (SHA256)

d91f16445ca1e367e36f405c5139a69d8232f503a54d484a1c97464aaba5b079  ai-jail-linux-x86_64.tar.gz
584ffa99f0ada40e732e8fa63c7fa803df581cd4a529684d00e209d5868c77ab  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

Don't miss a new ai-jail release

NewReleases is sending notifications on new releases.