学到这里,你已经会把经验放到不同层:

  • 当前提示词:管这一次任务。
  • AGENTS.md:管项目长期规则。
  • config.toml:管 Codex 运行配置。
  • MCP:连接外部工具和资料。
  • Skills:沉淀可复用工作流程。

Hooks 是另一种更“硬”的能力。

> 前置教程:第一次做一个 instruction-only Skill

> 如果你还不清楚 Skill 是什么,先看前置教程。很多时候先用 Skill 提醒流程即可,不一定需要 Hooks。

``

Hooks 是 Codex 在关键生命周期事件发生前后自动触发的检查或动作。

`

比如:

  • Codex 准备调用工具前。
  • Codex 请求权限时。
  • Codex 调用工具后。
  • Codex 准备压缩上下文前。

这比提示词更接近“自动化约束”。

所以它也更需要谨慎。

你在 AGENTS.md 里写:

`

不要把 API Key 写进仓库。

`

这是提醒。

你在 Skill 里写:

`

提交前检查是否包含 API Key、Token、密码。

`

这是流程。

你用 Hook 在文件修改后自动运行一个敏感信息扫描脚本。

这是自动检查。

三者力度不同:

`

提示词/AGENTS.md/Skill:告诉 Codex 应该怎么做。

Hooks:在关键动作前后插入自动检查或动作。

`

Hooks 适合处理:

  • 每次工具调用前都要检查的规则。
  • 每次权限请求时都要审查的规则。
  • 每次文件修改后都要跑的检查。
  • 某些高风险命令需要额外拦截或记录。
  • 团队希望稳定执行的安全或合规检查。

比如:

  • 检查命令是否包含危险删除。
  • 检查是否试图读取敏感路径。
  • 检查修改后是否引入密钥。
  • 在权限请求时输出更清楚的提示。

不要用 Hooks 解决这些:

| 需求 | 更合适的方式 |

| -------------- | ----------- |

| 当前任务只改一个页面 | 当前提示词 |

| 项目写作规则 | AGENTS.md |

| 修 Bug 的标准步骤 | Skill |

| 查询外部文档 | MCP |

| 默认模型配置 | config.toml |

| 只是想让 Codex 更认真 | 好任务描述和验收标准 |

如果只是提醒 Codex 怎么做,用提示词、AGENTS.md 或 Skill 就够。

Hooks 适合“必须自动检查”的地方。

官方手册里,Codex 可以从活动配置层旁边加载 Hooks。

常见形式有两种:

`

hooks.json

`

或者 config.toml 里的:

`

[hooks]

`

常见位置包括:

| 位置 | 作用 |

| ------------------------ | ----------- |

| \~/.codex/hooks.json | 用户级 Hooks |

| 项目里的 .codex/hooks.json | 项目级 Hooks |

| config.toml 里的 \[hooks\] | 内联 Hooks 配置 |

新手不要一上来写项目级 Hooks。

先学会查看、理解、审查。

项目级 Hooks 只在项目 .codex/ 层受信任时加载。

这很重要。

因为 Hooks 核心是可能会运行命令。

如果一个陌生项目里藏着恶意 Hook,而 Codex 不做信任边界,就可能带来风险。

所以你要记住:

`

陌生项目里的 Hooks 不要随便信任。

`

非托管命令 Hooks 在运行前需要你审查并信任。

当 Hook 发生变化后,Codex 会把它当作新的定义,需要重新审查。

这很合理。

因为 Hook 改一行命令,风险就可能完全不同。

不用现在背。

先认识几个名字:

| 事件 | 大概含义 |

| ----------------- | ----------- |

| PreToolUse | 工具调用前 |

| PostToolUse | 工具调用后 |

| PermissionRequest | Codex 请求权限时 |

| PreCompact | 上下文压缩前 |

后面实操会先从“查看 Hooks”开始,不会一上来让你写执行脚本。

审批策略回答:

`

Codex 什么时候需要问你能不能做?

`

Hooks 回答:

`

在某个生命周期事件发生时,要不要自动运行额外检查或动作?

`

它们可以配合,但不是同一个东西。

建议按这个顺序:

  1. 先理解 Hooks 是生命周期自动化。
  2. 2. 先学会判断什么时候不需要 Hooks。

    3. 先用 /hooks 查看当前有没有 Hooks。

    4. 学会审查 Hook 来源、命令和触发事件。

    5. 再做只读或低风险 Hook。

    6. 最后才考虑项目级团队 Hooks。

    读完后你应该能说清楚:

    1. Hooks 是在什么时机触发的。
    2. 2. Hooks 和 AGENTS.md`、Skills 的区别。

      3. 为什么陌生项目里的 Hooks 不能随便信任。

      4. 为什么新手应该先查看和审查,而不是直接写 Hook。

      下一篇看:什么时候应该用 Hooks,什么时候不要用