Codex 通知:在它完成或等待批准时收到提醒
Codex 可以在一轮对话完成时和需要你批准时通知你。问题在于:配置文件中的两种机制覆盖的事件不同,而且在大多数终端中,“桌面通知”会悄悄变成一声响铃。
简短回答
使用 [tui] 部分:notifications = ["agent-turn-complete", "approval-requested"];如果希望终端处于焦点时也收到提醒,再加上 notification_condition = "always"。Codex 只在 Ghostty、iTerm2、Kitty、Warp 和 WezTerm 中发送桌面通知(OSC 9)。在其他所有终端中,包括 Windows Terminal,它只会响铃。顶层的 notify 设置会运行你自己的程序,但只针对 agent-turn-complete,从不针对批准请求。
两项不同的设置
| [tui] notifications | notify | |
|---|---|---|
| 作用 | Codex CLI 发出的终端提醒 | 运行你指定的程序 |
| 轮次完成 | 支持(agent-turn-complete) | 支持(agent-turn-complete) |
| 请求批准 | 支持(approval-requested) | 不支持 |
| 计划 / 提问提示 | 支持(plan-mode-prompt、async-question) | 不支持 |
| 默认 | 开启 | 关闭 |
如果你想知道 Codex 何时在等你,单靠 notify 永远做不到。这种情况请使用 TUI 通知。
TUI 通知
以下是 OpenAI 示例配置中的相关部分:
notifications:true、false或事件列表。approval-requested涵盖命令、文件编辑和 MCP 的批准请求。notification_condition:默认情况下,只有终端不在焦点时才会触发提醒。如果你把终端放在另一台显示器上一直可见,请设为always。notification_method:auto、osc9或bel。
消息内容类似“Approval requested: <command>”(请求批准)、“Codex wants to edit <file>”(Codex 想要编辑文件)和“Agent turn complete”(智能体轮次完成)。
为什么你只听到一声响铃(Windows Terminal 等)
在 auto 模式下,Codex 只有识别出 Ghostty、iTerm2、Kitty、Warp 或 WezTerm 时才会发送桌面通知(OSC 9 转义序列)。其他所有终端(Windows Terminal、VS Code 终端、Apple 终端)都只会收到终端响铃。这一点来自 Codex 的源代码(tui/src/notifications/mod.rs);文档中只说 auto “prefers OSC 9”(优先使用 OSC 9)。
在 Windows Terminal 中,你可以让响铃更醒目:在配置文件设置中将 bellStyle 设为 all,即可播放声音并让任务栏图标闪烁(默认值为 audible)。
你也可以强制设置 notification_method = "osc9";终端是否会将其转为系统通知,取决于终端本身。
用 notify 运行你自己的程序
notify 会在一轮对话完成时运行外部程序,并传入一个 JSON 参数,其中包含 type、thread-id、turn-id、cwd、input-messages 和 last-assistant-message。因此它很适合用于手机推送、webhook 或日志,也就是终端之外的一切用途。它是顶层键,所以要放在所有 [section] 之前:
一个最简脚本,参照 OpenAI 文档中的示例:
- 项目的
.codex/config.toml不能设置notify。它必须放在你的用户配置中。 - Codex 源代码将
notify标记为旧版功能,并计划用 hook 取代它。目前它仍然可用;请留意更新日志。
那 hook 呢?
Codex 也有 hook。它们默认开启,包含 PermissionRequest 和 Stop 事件,在 ~/.codex/hooks.json 或 [hooks] 表中配置,并且每个非托管 hook 在运行之前都必须通过 /hooks 审核并设为受信任。没有 Notification 事件,OpenAI 的文档中也没有展示通知 hook。要接收提醒,文档给出的做法就是上面的 TUI 设置。
Codex 应用和 IDE 扩展
Codex 桌面应用有自己的控件:轮次完成提醒可以设为从不、仅在应用处于后台时或始终,另有单独的开关用于开启或关闭权限和提问通知。IDE 扩展没有自己的通知设置,OpenAI 的文档建议改用 notify。
如果你通过 ChatGPT 应用在手机上批准,issue #39346 报告了一种情况:手机显示“approval waiting”(等待批准),却没有可供回应的卡片。
看得见,也能直接回应
响铃只能告诉你某个终端里发生了什么事。Pet Island 会在屏幕顶部的小岛上显示 Codex 的状态(工作中、等待中或已完成),当 Codex 请求运行命令或编辑文件时,请求会连同命令或 diff 一起显示在那里。无需切换窗口即可允许或拒绝;遇到提问时,点击一下就能跳到正确的终端。它支持 Codex CLI 和 Codex 应用,并可与 Claude Code、Cursor 以及你的其他智能体一起使用。
常见问题
如何在 Codex 完成时收到通知?
Codex 的 TUI 通知默认对 agent-turn-complete 开启,但默认只在终端不在焦点时触发。如果希望终端处于焦点时也收到通知,请在 [tui] 中设置 notification_condition = "always"。
如何在 Codex 需要批准时收到通知?
在 ~/.codex/config.toml 的 [tui] 部分,把 "approval-requested" 添加到 notifications 中。notify 设置不会因批准请求而触发。
为什么 Codex 只响铃而不显示通知?
在 auto 模式下,Codex 只在 Ghostty、iTerm2、Kitty、Warp 和 WezTerm 中发送桌面通知。其他终端,包括 Windows Terminal,只会收到响铃。
可以把 notify 放在项目的 .codex/config.toml 中吗?
不可以。项目配置不能设置 notify;请把它放在 ~/.codex/config.toml 中。
Codex 有 Notification hook 吗?
没有。Codex hook 包括 PermissionRequest 和 Stop,但没有 Notification 事件,文档中也没有介绍任何通知 hook。
参考来源
本页的每项设置和行为都已于 2026年10月26日 对照以下页面核实。智能体更新很快;如有不符,以官方页面为准。
- OpenAI:Codex 示例配置
- OpenAI:Codex 高级配置(notify)
- OpenAI:Codex 通知
- OpenAI:Codex hook
- openai/codex 源代码:tui/src/notifications/mod.rs
- openai/codex 源代码:tui/src/chatwidget/notifications.rs
- Issue #39346:手机显示等待批准,但没有批准卡片
- Microsoft Learn:Windows Terminal 配置文件设置(bellStyle)