You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
graphify hook status reports "not installed" on husky 9 repos (looks in .husky/_/<hook> wrapper, not .husky/<hook>) #987
With graphify's post-commit/post-checkout hooks correctly installed (markers present in .husky/post-commit and .husky/post-checkout, hooks fire on commit/checkout, rebuild log confirms execution), graphify hook status reports:
post-commit: not installed (hook exists but graphify not found)
post-checkout: not installed (hook exists but graphify not found)
Root cause
Husky 9 sets core.hooksPath = .husky/_. _hooks_dir(root) in graphify/hooks.py correctly returns .husky/_ per the fix from #401. But husky's layout puts the wrapper there:
.husky/_/post-commit → #!/usr/bin/env sh\n. "$(dirname "$0")/h"
.husky/post-commit → actual user hook with `# graphify-hook-start` marker
_check() in hooks.py:296 opens hooks_dir / name = .husky/_/post-commit, which is the two-line husky shim. The marker isn't there, so status reports "not installed" even though the chain .husky/_/post-commit → .husky/_/h → .husky/post-commit is wired up and active.
Reproduction
git init demo &&cd demo
pnpm dlx husky init # or any husky 9 install
graphify hook install
graphify hook status # reports "not installed" despite working hooks
Suggested fix
In _check(), when hooks_dir.name == "_" and hooks_dir.parent.name == ".husky", also check hooks_dir.parent / name for the marker before reporting "not installed".
Related: #401 (partial husky support added in 0.4.19).
Fixed in v8 — added _user_hooks_dir() in hooks.py that redirects from .husky/_ to .husky/ when Husky 9 sets core.hooksPath to the wrapper dir. install, uninstall, and status all use the corrected path now.
Activity
fix Husky 9 hook path, skill.md INPUT_PATH literal, per-worker except…
safishamsi commentedon May 23, 2026
Fixed in v8 — added
_user_hooks_dir()inhooks.pythat redirects from.husky/_to.husky/when Husky 9 setscore.hooksPathto the wrapper dir.install,uninstall, andstatusall use the corrected path now.fix Husky 9 hook path, skill.md INPUT_PATH literal, per-worker except…