最近安装 claude-notifications-go 这个 Claude Code 通知插件时,一直遇到 Stop Hook 报错。
一开始我以为是插件问题,但查了插件的 issue 和 PR 后发现,作者很早之前就修复过相关 Hook 兼容问题。反复测试后,我怀疑问题可能出在 Claude Code 自身的 Hook 执行逻辑上。
我的环境是 Windows + PowerShell 7 启动 Claude Code,同时启用了 WSL,也安装了 Git Bash。虽然我在 settings.json 里设置了:
{
"env": {
"CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"
}
}
但触发插件内置的 .sh Hook 时,Claude Code 似乎仍然可能调用裸 bash,而不是上面配置的 Git Bash。
我这边执行:
where.exe bash
结果是:
C:\Windows\System32\bash.exe
C:\Program Files\Git\bin\bash.exe
C:\Program Files\Git\usr\bin\bash.exe
也就是说,如果 Claude Code 调用的是裸 bash,就会优先命中 WSL 的 bash,而不是 Git Bash。
最后我禁用了 WSL,再重新测试,claude-notifications-go 的 Stop Hook 就恢复正常了。
所以目前看起来,这更像是 Claude Code 在 Windows 下执行插件 Hook 时,没有稳定遵守 CLAUDE_CODE_GIT_BASH_PATH,导致 .sh Hook 被 WSL bash 接管。
1 个帖子 - 1 位参与者