Local-install managed .sh hooks under Claude Code on Windows were wrapped with the absolute Git Bash path; Claude runs the hook string inside Git Bash, so bash tried to exec bash (cannot execute binary file). Centralizes the win32+claude+.sh guard (shellHookOmitsBashRunner) and adds an exported, testable buildLocalShellHookCommand so the local path matches the global path. Closes the #166/#377 regression in the local-install branch. Adds a Windows-covered regression test. Fixes #580
642 B
642 B
type, pr
| type | pr |
|---|---|
| Fixed | 583 |
Local-install .sh hooks no longer fail on Claude Code/Windows — on a local install, managed .sh hooks (gsd-session-state.sh, gsd-validate-commit.sh, gsd-graphify-update.sh, gsd-phase-boundary.sh) were emitted wrapped with the absolute Git Bash path. Because Claude Code runs the hook command string inside Git Bash, the explicit bash.exe became the binary bash tried to exec → cannot execute binary file on every hook event. The local path now drops the bash.exe wrapper and emits the $CLAUDE_PROJECT_DIR-anchored script path, matching the global install path's #166/#377 guard. (#580)