记录一个 Windows 下 Claude Code 插件 Hook 报错的原因

最近安装 claude-notifications-go 这个 Claude Code 通知插件时,一直遇到 Stop Hook 报错。 一开始我以为是插件问题,但查了插件的 issue 和 PR 后发现,作者很早之前就修复过相关 Hook 兼容问题。反复测试后,我怀疑问题可能出在 Claude C...
记录一个 Windows 下 Claude Code 插件 Hook 报错的原因
记录一个 Windows 下 Claude Code 插件 Hook 报错的原因

最近安装 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-goStop Hook 就恢复正常了。

所以目前看起来,这更像是 Claude Code 在 Windows 下执行插件 Hook 时,没有稳定遵守 CLAUDE_CODE_GIT_BASH_PATH,导致 .sh Hook 被 WSL bash 接管。

1 个帖子 - 1 位参与者

阅读完整话题

来源: linux.do查看原文