Skip to content

0.9.0 — 2026-05-31

Choose a tag to compare

@github-actions github-actions released this 31 May 04:45
12448d2

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. Running git-prism hooks install without --path-shim prints 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.md for rationale. (#326)

Added

  • git-prism shim subcommand (first-class PATH shim management). git-prism shim install, git-prism shim uninstall, and git-prism shim status are now first-class top-level subcommands, replacing the --path-shim flag under git-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-shim deprecated alias. The flag still works with a warning (warning: --path-shim is deprecated; use \git-prism shim install` instead). Use git-prism shim install` for new installs. (#324)
  • gh pr diff interception. With a gh symlink pointing at git-prism ahead of the real gh on PATH, the shim recognizes argv[0] == "gh" and routes gh pr diff <number> through git-prism's structured manifest pipeline — resolving the PR's base..head range via gh pr view and returning the same JSON the MCP tools produce. Every other gh subcommand passes through to the real gh unchanged. (#323)
  • Auto-PATH setup during git-prism shim install. When the shim directory is not already on PATH, install prompts for consent and, if accepted, idempotently appends the export PATH line to your shell rc (.zshrc or .bashrc, chosen from $SHELL) and reminds you to restart Claude Code so its frozen shell snapshot picks up the new PATH (see docs/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. The windows-latest CI job exercises it. The PATH-shim install remains Unix-only. (#322)
  • PATH shim (Unix-only install). Installed as a git binary ahead of the real git on PATH, 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 to src/shim/classify.rs, argv[0]-aware dispatch in main (#287), the shim core of classify/real_git/handlers (#286), and a git-prism hooks install --path-shim flag (plus matching uninstall/status) that creates the ~/.local/share/git-prism/bin/git symlink and prints the Created symlink: line and PATH-export instructions (#288, #302). Agent detection reuses the env-var logic from #280. GIT_PRISM_INSIDE_SHIM=1 forces passthrough and is set in child processes to break recursion through nested git calls. GIT_PRISM_DEBUG_RESOLVER=1 prints the resolved real-git path to stderr (#299). (#284)
  • Shim telemetry counters. shim_invocations_total and shim_classification_total record how often the shim runs and how each command is classified (intercept vs passthrough). (#289)
  • git-prism agent-detect subcommand. Prints a JSON object indicating whether the current process is running on behalf of an AI coding agent, detected via environment variables only. Detection checks AI_AGENT (Vercel cross-tool convention), AGENT with 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=true is 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 126 if the resolved binary exists but is not executable, and 127 if no git binary is found on PATH, 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 and hooks install --path-shim bails 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 | sh

Install 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-prism

Download 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