news 2026/7/10 4:51:05

【Bug已解决】Claude hooks not executing / Pre-post hooks skipped — Claude Hooks 不执行解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Bug已解决】Claude hooks not executing / Pre-post hooks skipped — Claude Hooks 不执行解决方案

【Bug已解决】Claude: "hooks not executing" / Pre/post hooks skipped — Claude Hooks 不执行解决方案

1. 问题描述

Claude Code 配置的 hooks(钩子)未执行或被跳过:

# Hooks 不执行 $ cat .claude/settings.json { "hooks": { "PreToolUse": "npm run lint", "PostToolUse": "npm run format" } } $ claude --auto-approve "修改 src/index.js" # lint 和 format 没有执行 # 或 hook 命令失败 $ claude "task" Error: Hook 'PreToolUse' failed npm run lint exited with code 1. # 或 hook 超时 $ claude "task" Error: Hook timeout PreToolUse hook exceeded 30000ms. # 或 hook 配置不识别 $ claude Error: Unknown hook event: 'pre_tool_use' # 配置名称错误

这个问题在以下场景中特别常见:

  • hook 配置格式错误
  • hook 事件名称错误
  • hook 命令不存在
  • hook 命令超时
  • 配置文件不被加载
  • 版本不支持 hooks

2. 原因分析

原因分类表

原因分类具体表现占比
配置格式错误JSON约 30%
事件名错误pre_tool_use约 25%
命令不存在EACCES约 20%
超时30s约 10%
配置不加载位置约 10%
版本不支持旧版约 5%

3. 解决方案

方案一:检查 hook 配置格式(最推荐)

# 步骤 1:检查配置 python3 -m json.tool .claude/settings.json # 步骤 2:正确格式 cat > .claude/settings.json << 'EOF' { "hooks": { "PreToolUse": ["npm run lint"], "PostToolUse": ["npm run format"] } } EOF # 步骤 3:验证 JSON python3 -m json.tool .claude/settings.json # 步骤 4:测试 claude --auto-approve "修改 src/index.js"

方案二:使用正确的事件名

# 步骤 1:查看支持的事件名 claude --help | grep -i hook # 步骤 2:正确的事件名 # PreToolUse(不是 pre_tool_use) # PostToolUse(不是 post_tool_use) # Notification # Stop # 步骤 3:更新配置 cat > .claude/settings.json << 'EOF' { "hooks": { "PreToolUse": ["npm run lint"], "PostToolUse": ["npm run format"], "Stop": ["echo 'Done'"] } } EOF # 步骤 4:验证 claude --debug 2>&1 | grep -i hook

方案三:检查 hook 命令

# 步骤 1:手动测试 hook 命令 npm run lint # 如果报错,修复 lint # 步骤 2:检查命令是否存在 which npm which eslint # 步骤 3:使用绝对路径 cat > .claude/settings.json << 'EOF' { "hooks": { "PreToolUse": ["/usr/local/bin/npm run lint"] } } EOF # 步骤 4:验证 claude --auto-approve "修改 src/index.js"

方案四:增加 hook 超时

# 步骤 1:设置 hook 超时 cat > .claude/settings.json << 'EOF' { "hooks": { "PreToolUse": ["npm run lint"], "hookTimeout": 60000 } } EOF # 步骤 2:或环境变量 export CLAUDE_HOOK_TIMEOUT=60000 # 步骤 3:永久设置 echo 'export CLAUDE_HOOK_TIMEOUT=60000' >> ~/.zshrc source ~/.zshrc # 步骤 4:验证 claude --auto-approve "task"

方案五:在根目录创建配置

# 步骤 1:确保在项目根目录 cd /project ls .claude/settings.json # 步骤 2:如果不存在,创建 mkdir -p .claude cat > .claude/settings.json << 'EOF' { "hooks": { "PreToolUse": ["npm run lint"], "PostToolUse": ["npm run format"] } } EOF # 步骤 3:验证加载 claude --debug 2>&1 | grep -i "hook\|settings" # 步骤 4:测试 claude --auto-approve "修改 src/index.js"

方案六:更新版本

# 步骤 1:检查版本 claude --version # 步骤 2:更新 npm update -g @anthropic-ai/claude-code # 步骤 3:验证 hooks 支持 claude --help | grep -i hook # 步骤 4:测试 claude --auto-approve "task" claude --debug 2>&1 | grep -i hook

4. 各方案对比总结

方案适用场景推荐指数难度
方案一:配置格式格式⭐⭐⭐⭐⭐
方案二:事件名名称⭐⭐⭐⭐⭐
方案三:检查命令命令⭐⭐⭐⭐⭐
方案四:超时超时⭐⭐⭐⭐
方案五:根目录位置⭐⭐⭐⭐⭐
方案六:更新版本⭐⭐⭐

5. 常见问题 FAQ

5.1 Hooks 是什么

Claude Code 的钩子机制,在工具调用前后自动执行命令。

5.2 支持哪些 hook 事件

  • PreToolUse: 工具调用前
  • PostToolUse: 工具调用后
  • Notification: 通知时
  • Stop: 会话结束时

5.3 hooks 配置在哪里

.claude/settings.json中的hooks字段。

5.4 如何验证 hooks 执行

claude --debug 2>&1 | grep -i hook

5.5 hook 命令失败怎么办

检查命令是否存在,手动运行测试,使用绝对路径。

5.6 hook 超时多少

默认 30 秒。通过hookTimeoutCLAUDE_HOOK_TIMEOUT调整。

5.7 配置不被加载

确保在项目根目录,检查 JSON 格式,使用claude --debug | grep settings

5.8 hooks 值是数组还是字符串

应该是数组:["npm run lint"],不是字符串"npm run lint"

5.9 可以配置多个 hook 吗

是的。["npm run lint", "npm run typecheck"]

5.10 排查清单速查表

□ 1. python3 -m json.tool 验证 JSON □ 2. 事件名: PreToolUse/PostToolUse(大写) □ 3. hooks 值是数组: ["command"] □ 4. 手动测试 hook 命令 □ 5. which npm 检查命令存在 □ 6. 使用绝对路径 □ 7. hookTimeout: 60000 增加超时 □ 8. CLAUDE_HOOK_TIMEOUT=60000 环境变量 □ 9. 在根目录创建 .claude/settings.json □ 10. claude --debug | grep hook 验证

6. 总结

  1. 根本原因:Hooks 不执行最常见原因是配置格式错误(30%)和事件名错误(25%)
  2. 最佳实践:使用python3 -m json.tool验证配置,使用正确的事件名(PreToolUse/PostToolUse
  3. 命令检查:手动运行 hook 命令,使用绝对路径,增加hookTimeout
  4. 配置位置:在项目根目录.claude/settings.json中配置
  5. 最佳实践建议:使用claude --debug 2>&1 | grep -i hook验证 hooks 执行

故障排查流程图

flowchart TD A[Hooks 不执行] --> B[python3 -m json.tool 验证] B --> C{JSON 有效?} C -->|否| D[修复 JSON 格式] C -->|是| E[检查事件名] D --> F[重新创建 settings.json] F --> G[claude --debug | grep hook] E --> H{名称正确?} H -->|否| I[改为 PreToolUse/PostToolUse] H -->|是| j[检查命令] I --> G j --> K[手动运行 hook 命令] K --> L{命令成功?} L -->|否| M[修复命令或使用绝对路径] L -->|是| N[检查超时] M --> G N --> O{hook 超时?} O -->|是| P[hookTimeout: 60000] O -->|否| Q[检查配置位置] P --> G Q --> R{在根目录?} R -->|否| S[移到 /project/.claude/] R -->|是| T[更新版本] S --> G T --> U[npm update -g claude-code] U --> G G --> V{hooks 执行?} V -->|是| W[✅ 问题解决] V -->|否| X[检查 hooks 值格式] X --> Y[改为数组: ["command"]] Y --> G W --> Z[长期: 正确格式 + 事件名 + 命令] Z --> AA[✅ 长期方案]
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 4:49:15

分期迭代搭建智慧招采体系,合力信招投标平台实战案例

北京合力信&#xff0c;2010年&#xff0c;北京合力信工程投资咨询有限公司是以新奥能源工程造价审计中心为班底&#xff0c;经住建部批准成立的拥有工程造价甲级咨询资质的专业公司。 一、项目历程&#xff1a;六年合作&#xff0c;迭代落地 为加速招采业务数字化转型、全面…

作者头像 李华
网站建设 2026/7/10 4:48:24

Python 3.12 实现永续合约多空双开策略:胜率96%背后的3个关键参数与回测

Python 3.12 实现永续合约多空双开策略&#xff1a;胜率96%背后的3个关键参数与回测永续合约交易中&#xff0c;多空双开策略因其独特的风险对冲特性备受量化交易者关注。本文将深入解析一个实测胜率达96%的多空双开策略&#xff0c;从Python代码实现到参数调优&#xff0c;完整…

作者头像 李华
网站建设 2026/7/10 4:47:19

MiniMax M3发布引定价风波,从Mini到Max的成长阵痛与技术追求

【MiniMax M3发布与定价风波】 编辑部消息&#xff0c;刚刚过去的六月&#xff0c;有机会进入大模型公司MiniMax内部&#xff0c;全程围观了M3模型的发布。M3是中国模型里少有的强化了编程和agent能力的原生多模态模型&#xff0c;被寄予厚望。6月1日一早&#xff0c;M3正式发布…

作者头像 李华
网站建设 2026/7/10 4:44:44

收到芯片停产通知不用人工核对替代型号,专业工具几秒匹配完成

“这颗料EOL了&#xff0c;请帮忙找一个Pin-to-Pin替代&#xff0c;最好有两家以上货源。” 干硬件的看到这句话&#xff0c;血压大概能瞬间上蹿十个百分点。接下来的流程谁都熟悉——去几家目录分销商网站按参数筛一遍&#xff0c;把候选料号的数据手册一个一个下载下来&…

作者头像 李华