#!/bin/sh # Copy the hooks in .githooks/ into git's own hooks directory. They are copied rather than # enabled with core.hooksPath on purpose: Claude Code's sandbox can't write inside .git/, so # a sandboxed command can't rewrite the installed hooks, even though git commit and git push # (and so their hooks) run outside the sandbox. Re-run after changing anything in .githooks/. set -e cd "$(dirname "$0")/.." # Use the repo's own hooks directory, not `git rev-parse --git-path hooks`: that follows a # (possibly global) core.hooksPath and would install these hooks for every repo. if ! common=$(git rev-parse --git-common-dir 2>/dev/null); then echo "install-hooks: not a git checkout; skipping." >&2 exit 0 fi hooks="$common/hooks" mkdir -p "$hooks" for hook in .githooks/*; do cp "$hook" "$hooks/" chmod +x "$hooks/$(basename "$hook")" done echo "install-hooks: installed $(ls .githooks | tr '\n' ' ')into $hooks"