Thanks for your interest in improving ai-bwrap. It's a small, single-file
shell tool, so the contribution loop is intentionally lightweight.
- Keep it POSIX-friendly
bashand dependency-free. The only runtime dependency isbwrapitself plus whatever agent you run. - The wrapper should stay readable as one file. New agents belong in user
config (
~/.config/ai-bwrap/config.sh) unless they're broadly useful — see the "Custom agents" section in the README. - English only for code comments, docs, and commit messages.
# Lint (CI runs this on every push/PR):
shellcheck ai-bwrap
# Inspect what a change produces without actually sandboxing:
./ai-bwrap claude --dry-run
./ai-bwrap bash --no-net --dry-run--dry-run prints the exact bwrap command, which makes most behavior
testable without installing every agent.
- Fork and create a branch.
- Make your change; run
shellcheck ai-bwrapand confirm it's clean. - If you touched the CLI surface, update the README and
--helptext together. - If you changed the README screenshots' subject matter, regenerate them with
scripts/screenshots.sh(requiresfreeze). - Open a PR describing the change and why.
Open an issue with your distro, bwrap --version, the agent you ran, and the
output of the command with --dry-run added.