Expose plan-mode-prompt and approval-requested through top-level notify
What version of Codex CLI is running?
codex-cli 0.125.0
What platform is your computer?
macOS
What terminal emulator and version are you using?
Ghostty 1.3.0-HEAD+9fa3ab0 and cmux 0.63.2 (79) [179b16ce6]
Summary
Codex now emits native TUI notifications for plan-mode request_user_input prompts via plan-mode-prompt after #17417. That works when terminal notifications are enabled.
However, the top-level notify external command still only supports agent-turn-complete. This means users cannot use the native Codex external notification primitive for the most important "needs response" states: plan-mode questions and approval requests.
Current behavior
This works for terminal-native notifications:
[tui]
notifications = ["plan-mode-prompt", "approval-requested"]
notification_method = "bel" # or "osc9"
notification_condition = "always"
This works only for completion:
notify = ["python3", "/path/to/notify.py"]
Per the docs, notify currently receives supported events, currently only agent-turn-complete.
Expected behavior
notify should also be able to receive the same high-value TUI notification event types, especially:
plan-mode-promptapproval-requested- any future blocked / needs-response state
This would allow users to implement one external alert command for "never miss needs response" workflows without relying on terminal-specific OSC/BEL behavior or custom transcript monitoring.
Repro / motivation
- Configure Codex TUI notifications.
- In plan mode, prompt Codex to call
request_user_input. - Codex emits the plan-mode questionnaire and terminal notification.
- The external
notifycommand does not run because the event is notagent-turn-complete.
Related
- #17252 reported that plan-mode questionnaire notifications did not fire.
- #17417 fixed that by mapping
request_user_inputtoplan-mode-prompt. - This request is separate: expose that now-working event through the top-level external
notifyprimitive.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗