Codex 通知:在它完成或等待批准时收到提醒

Codex 可以在一轮对话完成时和需要你批准时通知你。问题在于:配置文件中的两种机制覆盖的事件不同,而且在大多数终端中,“桌面通知”会悄悄变成一声响铃。

作者:Aslan,Pet Island 团队 · 更新于 2026年10月26日 · 阅读时长 3 分钟

简短回答

使用 [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] notificationsnotify
作用Codex CLI 发出的终端提醒运行你指定的程序
轮次完成支持(agent-turn-complete)支持(agent-turn-complete)
请求批准支持(approval-requested)不支持
计划 / 提问提示支持(plan-mode-prompt、async-question)不支持
默认开启关闭

如果你想知道 Codex 何时在等你,单靠 notify 永远做不到。这种情况请使用 TUI 通知。

TUI 通知

以下是 OpenAI 示例配置中的相关部分:

~/.codex/config.toml复制
[tui]
# Desktop notifications from the TUI: boolean or filtered list. Default: true
notifications = ["agent-turn-complete", "approval-requested"]
# Notification mechanism for terminal alerts: auto | osc9 | bel. Default: "auto"
notification_method = "auto"
# When notifications fire: unfocused (default) | always
notification_condition = "unfocused"
  • 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)。

Windows Terminal settings.json(配置文件)复制
{
"bellStyle": "all"
}

你也可以强制设置 notification_method = "osc9";终端是否会将其转为系统通知,取决于终端本身。

用 notify 运行你自己的程序

notify 会在一轮对话完成时运行外部程序,并传入一个 JSON 参数,其中包含 type、thread-id、turn-id、cwd、input-messages 和 last-assistant-message。因此它很适合用于手机推送、webhook 或日志,也就是终端之外的一切用途。它是顶层键,所以要放在所有 [section] 之前:

~/.codex/config.toml复制
notify = ["python3", "/Users/you/.codex/notify.py"]

一个最简脚本,参照 OpenAI 文档中的示例:

~/.codex/notify.py复制
import json, subprocess, sys
 
notification = json.loads(sys.argv[1])
if notification.get("type") == "agent-turn-complete":
message = (notification.get("last-assistant-message") or "Turn complete")[:120]
# macOS: a system notification. On Linux use ["notify-send", "Codex", message].
subprocess.run(["osascript", "-e", f'display notification {json.dumps(message)} with title "Codex"'])
  • 项目的 .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日 对照以下页面核实。智能体更新很快;如有不符,以官方页面为准。

继续阅读

在屏幕顶部回应每一个智能体。

Windows 和 Mac · 免费试用 7 天,之后一次性支付 8.99 美元 · 每笔销售拿出 1 美元为流浪动物提供食物

免费试用 Pet Island