Expose plan-mode-prompt and approval-requested through top-level notify

Open 💬 4 comments Opened Apr 28, 2026 by ryan6416

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-prompt
  • approval-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

  1. Configure Codex TUI notifications.
  2. In plan mode, prompt Codex to call request_user_input.
  3. Codex emits the plan-mode questionnaire and terminal notification.
  4. The external notify command does not run because the event is not agent-turn-complete.

Related

  • #17252 reported that plan-mode questionnaire notifications did not fire.
  • #17417 fixed that by mapping request_user_input to plan-mode-prompt.
  • This request is separate: expose that now-working event through the top-level external notify primitive.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗