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>」和「Agent turn complete」。

為什麼你只聽到嗶聲(Windows Terminal 與其他終端機)

在 auto 模式下,Codex 只有在辨識出 Ghostty、iTerm2、Kitty、Warp 或 WezTerm 時才會傳送桌面通知(OSC 9 跳脫序列)。其他所有終端機(Windows Terminal、VS Code 終端機、Apple Terminal)收到的都是終端機響鈴。這來自 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 要求執行指令或編輯檔案時,請求會連同指令或差異內容出現在那裡。不用切換視窗就能允許或拒絕;遇到提問時,點一下就能帶你到正確的終端機。它支援 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