0.9.0 — 2026-05-31
Release Notes
Breaking Changes
-
git-prism hooks install(without--path-shim) now exits non-zero. The bundled redirect hook (bash_redirect_hook.py/git-prism-redirect.sh) was removed. Runninggit-prism hooks installwithout--path-shimprints a migration message to stderr and exits 1.Migration: use the PATH shim instead:
# Remove any previously installed redirect hook entry first: git-prism hooks uninstall --scope user # or --scope project / local # Install the PATH shim: git-prism shim install
The PATH shim intercepts git at the PATH layer and is a strict superset of the redirect hook's coverage. See
docs/decisions/0011-redirect-hook-removal.mdfor rationale. (#326)
Added
git-prism shimsubcommand (first-class PATH shim management).git-prism shim install,git-prism shim uninstall, andgit-prism shim statusare now first-class top-level subcommands, replacing the--path-shimflag undergit-prism hooks. The shim install logic is unchanged — the symlink goes to~/.local/share/git-prism/bin/git— but the entry point is now semantically correct: the shim is a PATH-layer interceptor, not a Claude Code hook. (#324)git-prism hooks install --path-shimdeprecated alias. The flag still works with a warning (warning: --path-shim is deprecated; use \git-prism shim install` instead). Usegit-prism shim install` for new installs. (#324)gh pr diffinterception. With aghsymlink pointing at git-prism ahead of the realghonPATH, the shim recognizesargv[0] == "gh"and routesgh pr diff <number>through git-prism's structured manifest pipeline — resolving the PR's base..head range viagh pr viewand returning the same JSON the MCP tools produce. Every otherghsubcommand passes through to the realghunchanged. (#323)- Auto-PATH setup during
git-prism shim install. When the shim directory is not already onPATH, install prompts for consent and, if accepted, idempotently appends theexport PATHline to your shell rc (.zshrcor.bashrc, chosen from$SHELL) and reminds you to restart Claude Code so its frozen shell snapshot picks up the newPATH(seedocs/decisions/0010-shim-direct-call-interception.md). Declining prints manual instructions and modifies no files. The append is line-wise idempotent (re-running install does not duplicate the export). (#325) - Windows shim passthrough. On non-Unix platforms the shim now passes git through via spawn-and-wait (forwarding the exit code, inheriting stdio) instead of the Unix
execvp, so the shim functions on Windows rather than bailing. Thewindows-latestCI job exercises it. The PATH-shim install remains Unix-only. (#322) - PATH shim (Unix-only install). Installed as a
gitbinary ahead of the real git onPATH, git-prism intercepts watch-list subcommands (diff/log/show/blame/pickaxe) that carry a ref range when an AI agent is detected, routing them to structured JSON; humans, CI, non-agents, and ref-range-less commands pass through to vanilla git untouched. Ships the Python classifier ported tosrc/shim/classify.rs,argv[0]-aware dispatch inmain(#287), the shim core ofclassify/real_git/handlers (#286), and agit-prism hooks install --path-shimflag (plus matchinguninstall/status) that creates the~/.local/share/git-prism/bin/gitsymlink and prints theCreated symlink:line and PATH-export instructions (#288, #302). Agent detection reuses the env-var logic from #280.GIT_PRISM_INSIDE_SHIM=1forces passthrough and is set in child processes to break recursion through nested git calls.GIT_PRISM_DEBUG_RESOLVER=1prints the resolved real-git path to stderr (#299). (#284) - Shim telemetry counters.
shim_invocations_totalandshim_classification_totalrecord how often the shim runs and how each command is classified (intercept vs passthrough). (#289) git-prism agent-detectsubcommand. Prints a JSON object indicating whether the current process is running on behalf of an AI coding agent, detected via environment variables only. Detection checksAI_AGENT(Vercel cross-tool convention),AGENTwith an allowlisted value (goose,amp), and eight tool-specific markers (CLAUDECODE,CURSOR_AGENT,GEMINI_CLI,CODEX_SANDBOX,CLINE_ACTIVE,AUGMENT_AGENT,OPENCODE_CLIENT,TRAE_AI_SHELL_ID).CI=trueis a hard override that always returns{"agent": null, "signal": null}. Not exposed as an MCP tool — diagnostics/ops use only. (#278)
Fixed
- Shim passthrough distinguishes exit 126 from 127. When delegating to the real git, the shim now returns
126if the resolved binary exists but is not executable, and127if no git binary is found onPATH, matching POSIX shell conventions instead of collapsing both into one code. (#296) - Windows builds compile cleanly. The shim's
execvp-based exec path is now gated behind#[cfg(unix)], so the crate compiles as a no-op on Windows andhooks install --path-shimbails with "not supported on non-Unix platforms" rather than failing the build. (#314)
Install git-prism 0.9.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mikelane/git-prism/releases/download/v0.9.0/git-prism-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/mikelane/git-prism/releases/download/v0.9.0/git-prism-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install mikelane/tap/git-prismDownload git-prism 0.9.0
| File | Platform | Checksum |
|---|---|---|
| git-prism-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| git-prism-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| git-prism-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| git-prism-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| git-prism-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |