Codex hooks 拿不到退出码?stalegreen 用 PreToolUse 重写命令,拦下 26% 的假通过

SmiLePLSSS · reddit · 2026-09-03

作者在给 Codex 加支持时发现:Codex 的 PostToolUse hook 对 shell 命令只返回原始输出,退出码 3 和 0 看起来一模一样,Agent 无法判断验证命令是否真的通过。

解决思路:PreToolUse hook 重写验证命令(pytest、pnpm test、tsc、eslint、cargo test、next build 等约 80 种 runner),让它们自己打印退出码并把完整输出写入日志;仅对验证命令给 allow 决策。工具随后把每次运行记录为「回执」,当 Agent 以「all tests pass」结束回合,但该结果早于其自身编辑、或失败、或被隐藏时,就把 stop 转为一次 continuation prompt 要求重跑。

在作者自己的 Claude Code 历史中,26% 的「全绿」宣称是过时结果,98% 的验证运行隐藏了退出码。安装只需 npx stalegreen install --codex,写入 /.codex/hooks.;也可作为 Claude Code 插件和 DeepSeek Harness 插件使用。开源地址:github.com/pavangupta352/stalegreen。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →