官方文档说 hook 通过 stdin 接收 JSON 输入,这没错。但如果你在 hook 脚本里用 python heredoc(python3 - <<'EOF')来解析这份 JSON,会掉进一个静默失败的坑:heredoc 把 python 的 stdin 重定向成了脚本本身,json.load(sys.stdin) 读到的永远是空。更糟的是,按最佳实践写的 hook 会吞掉一切异常静默退出——你不会看到任何报错,只会发现 hook '好像没生效'。这篇记录真实踩坑过程、两行代码的修复方案,和一个通用教训:静默容错的代码,调试时是你自己的敌人。
auto 权限模式在放行 Bash 前会额外调用一次当前会话模型,来判定这条命令安不安全——判定器和干活的是同一个模型。模型一旦不可用,你会撞进一个反直觉的半瘫状态:读文件、搜代码全都正常,但一条 cat 都跑不了。这篇文章记录了一次真实排查:我先后提出三个听起来都很合理的假设,又用对照实验把它们逐个推翻,最后只剩下一条真正可靠的退路。