[Bug] Stop hooks fail with "node: command not found" and missing plugin directories

Resolved 💬 1 comment Opened May 30, 2026 by scalinity Closed Jul 3, 2026

Bug Description
❯ What am I doing wrong in this command flow?
zsh: command not found: z
danny@MacBook-Pro-M5-Pro ~ % .fseventsd FORGE claude-opus-4-7 HIGH
zsh: command not found: .fseventsd
danny@MacBook-Pro-M5-Pro ~ % cat .fseventsd FORGE claude-opus-4-7 HIGH
cat: .fseventsd: No such file or directory
danny@MacBook-Pro-M5-Pro ~ % .fseven
Async hook SessionStart completed
h non-blocking status code: /bin/sh:node: command not found

A few things are going wrong:

  1. z isn't installed. z is a directory-jumper (zoxide or the original z.sh). It's not a built-in. Install one:
  • brew install zoxide then add eval "$(zoxide init zsh)" to ~/.zshrc (and optionally alias z=__zoxide_z — modern zoxide uses z
  • Or brew install z for the classic version, then source $(brew --prefix)/etc/profile.d/z.sh in ~/.zshrc.
  1. .fseventsd isn't a command — it's a macOS system directory at /.fseventsd (filesystem events log). Typing it at the prompt asks zsh to fseventsd in your home directory,which is why cat .fseventsd failed.
  2. Even with zoxide installed, z onl already cd'd into. A fresh installhas an empty database — z weird glitches won't find anything until you've visited that folder at least

once.

Also: the FORGE claude-opus-4-7 HIGHlooks like a right-side prompt(RPROMPT) from your zsh theme bleeding into the command line on paste/wrap. Cosmetic, not the cause of
the errors.

Quickest path forward: brew install ~/.zshrc, source ~/.zshrc, then cdinto the "Weird Glitches" folder once so zoxide learns it.

⏺ Ran 3 stop hooks
⎿  bash "${CLAUDE_PLUGIN_ROOT}/hooks
⎿  bash "${CLAUDE_PLUGIN_ROOT}/hooks/sg-python.sh"
"${CLAUDE_PLUGIN_ROOT}/hooks/securit
⎿  export PATH="$($SHELL -lc 'echo $PATH' 2>/dev/null):$PATH";
_C="${CLAUDE_CONFIG_DIR:-$HOME/.clauT:-${PLUGIN_ROOT:-}}"; _P=$({ [ -n "$_E" ] && printf '%s\n' "$_E"; ls -dt "$_C/plugins/cache/thedotmack/claude-mem"/[0-9]*/
2>/dev/null; printf '%s\n' "$_C/pluglugin"; } | while IFS= read-r _R; do _R="${_R%/}"; [ -d "$_R/plugin/scripts" ] && _Q="$_R/plugin" || _Q="$_R"; [ -f
"$_Q/scripts/bun-runner.js" ] && [ -.cjs" ] && { printf '%s\n'"$_Q"; break; }; done); [ -n "$_P" ] || { echo "claude-mem: plugin scripts not found" >&2;
exit 1; }; command -v cygpath >/dev/w "$_P" 2>/dev/null); [ -n"$_W" ] && _P="$_W"; }; node "$_P/scripts/bun-runner.js" "$_P/scripts/worker-service.cjs" hook
claude-code summarize
⎿  Stop hook error: Failed with non-blocking status code: /bin/sh: node: command not found

✻ Cooked for 14s

❯ your stop hook, cut u off
h non-blocking status code: /bin/sh:node: command not found

Short version:

  1. z isn't installed — brew install zoxide, then add eval "$(zoxide init zsh)" to ~/.zshrc and source

~/.zshrc.

  1. .fseventsd is a macOS system dir at /.fseventsd, not a command and not in ~.
  2. zoxide only jumps to dirs you've ird Glitches" once first.
  3. The FORGE claude-opus-4-7 HIGH trailing text is your RPROMPT wrapping into the command line —

cosmetic.

⏺ Ran 3 stop hooks
⎿  bash "${CLAUDE_PLUGIN_ROOT}/hooks/stop-hook.sh"
⎿  bash "${CLAUDE_PLUGIN_ROOT}/hooks"${CLAUDE_PLUGIN_ROOT}/hooks/security_reminder_hook.py"
⎿  export PATH="$($SHELL -lc 'echo $_C="${CLAUDE_CONFIG_DIR:-$HOME/.claude}"; _E="${CLAUDE_PLUGIN_ROOT:-${PLUGIN_ROOT:-}}"; _P=[ -n "$_E" ] && printf '%s\n' "$_E";edotmack/claude-mem"/[0-9]*/ 2>/dev/null; printf '%s\n' "$_C/plugins/marketplaces/thedotmack/plugin"; } | while IFS= rea-r _R; do _R="${_R%/}"; [ -d "$_R/plugin" || _Q="$_R"; [ -f"$_Q/scripts/bun-runner.js" ] && [ -f "$_Q/scripts/worker-service.cjs" ] && { printf '%s\n'"$_Q"; break; }; done); [ -n "$_P" ]n scripts not found" >&2;exit 1; }; command -v cygpath >/dev/null 2>&1 && { _W=$(cygpath -w "$_P" 2>/dev/null); [ -n"$_W" ] && _P="$_W"; }; node "$_P/scipts/worker-service.cjs" hook claude-code summarize ⎿  Stop hook error: Failed with non-: node: command not found

Note: Content was truncated.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗