Blog · August 15, 2026 · 6 min read
Get a Ding the Moment Codex Needs Your Response
There are two moments when a coding agent should make noise. When it's done — and, far more urgently, when it has stopped to ask you something. A Codex CLI session sitting at an approval prompt isn't working; it's waiting. Every silent minute there is a minute of compute and momentum lost because a yes/no question printed to a terminal you weren't looking at.
The good news: you don't need scripts, tmux tricks, or terminal bell hacks for this anymore. Codex has a built-in setting that fires a desktop notification at exactly that moment — it's just not the setting most guides talk about. Here's how to get a reliable ding when Codex needs your response, plus the matching setup for Claude Code and Cursor.
Why your notify hook stays silent at approval prompts
Most Codex notification setups use the notify hook in ~/.codex/config.toml — an external program Codex runs when an event happens. It's a great tool, and we cover it in depth in our Codex CLI notifications guide. But it has a blind spot that surprises almost everyone: the external notify hook fires on agent-turn-complete — when Codex finishes a turn — and not when Codex pauses mid-task to request approval.
So you set up a lovely chime, confirm it rings when a task ends, and then still come back to a session that spent twenty minutes stuck on "allow this command?" with no sound at all. The done-ding works; the needs-you ding never fires.
The built-in fix: tui.notifications
Codex's terminal UI has its own notification channel, separate from the external hook, and it understands two event types: agent-turn-complete and approval-requested. Turn it on in ~/.codex/config.toml:
# ~/.codex/config.toml
[tui]
notifications = trueWith notifications = true you get desktop notifications for both events. If you only want the ding when Codex is blocked on you — and silence when it simply finishes — filter it down to the one event that matters:
# ~/.codex/config.toml
[tui]
notifications = ["approval-requested"]That single line is the answer to the "ding when prompt response needed" problem: Codex pauses for approval, your desktop pings, you tab over, hit yes, and the agent keeps moving. The inverse filter (["agent-turn-complete"]) exists too, if approval noise ever gets excessive on a permissive config.
The catch: your terminal has to cooperate
Unlike the external hook — which runs any program you point it at — TUI notifications are delivered through terminal escape codes. Your terminal emulator has to translate them into system notifications, and support varies:
- Works well: iTerm2, WezTerm, Kitty and Ghostty all understand the relevant escape sequences. In iTerm2, also allow notifications in Settings → Profiles → Terminal.
- Doesn't work: macOS Terminal.app ignores these sequences entirely — no amount of config.toml editing will make it ding.
- Extra rule: most terminals only surface the notification when the window is unfocused — which is what you want, since that's precisely when you're not watching.
If you're on a terminal that doesn't play along, you have two options: switch terminals, or skip the plumbing entirely with a native notifier app — more on that below.
The same setup for Claude Code
Claude Code solved this from the other direction: its hook system has a dedicated Notification event that fires when Claude needs permission to use a tool or has been idle waiting for your input. A minimal ~/.claude/settings.json entry:
{
"hooks": {
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Funk.aiff"
}
]
}
]
}
}That plays a distinct sound whenever Claude Code is waiting on you — use a different sound for the Stop hook and you'll know without looking whether it's done or blocked. Full recipes, including banners and phone pings, are in our copy-paste notification scripts post.
Cursor's agent sits somewhere in between: it can notify when a run finishes, but the waiting-for-confirmation case is exactly where its built-in options are thinnest — our Cursor notification guide walks through what's possible there.
One agent is config. Three agents is a chore.
Notice what just happened: three tools, three completely different mechanisms — a TOML table read by a TUI, a JSON hooks file, and an IDE's notification settings. Each breaks differently, each lives on one machine, and none of them share a definition of "needs input." The config is easy once; maintaining it across every agent, terminal and laptop you touch is the part that quietly stops happening.
However you wire it up — tui.notifications, a Claude Code hook, or a native app that watches everything — the principle is the same: the expensive resource in an agentic workflow isn't the model, it's your attention. A ding at the moment an agent needs a response is the cheapest productivity upgrade available this year. Set it up once and stop paying the waiting tax.
Keep reading
Claude Code Tips and Tricks: 12 Ways to Use Claude Code Effectively
8 min read
Claude Code Multiple Sessions: How to Run Agents in Parallel Without Losing Track
6 min read
A Claude Code Workflow That Doesn't Involve Watching the Terminal
5 min read
Claude Code Hooks: A Practical Guide to Automating Your Agent Workflow
7 min read
Claude Code Auto Mode: Fewer Permission Prompts Without Living Dangerously
7 min read
Claude Code Subagents: How to Delegate Work to Specialized Agents
7 min read
Claude Code Context Management: Treat the Context Window Like a Budget
6 min read
Per-Subagent Model Selection: Route the Grunt Work Down, Keep the Judgment Up Top
7 min read
Skills and Plugins: How to Teach Claude Code Your Way of Working
7 min read
Claude Code Background Tasks: Run Long Commands Without Blocking Your Session
6 min read
Codex CLI Notifications: How to Get a Ding When Codex Is Done or Needs Input
7 min read
Cursor Notification When Done: Every Way to Get Notified When Cursor Finishes
6 min read
Claude Code Notifications: How to Get Notified When Claude Code Finishes or Needs Your Input
6 min read
Want to Be Notified When Claude Responds? How Claude Notifications Work on Web, Desktop, and Mobile
5 min read
Claude Code Notification Scripts: Copy-Paste Recipes for Every Platform
6 min read
Get Notified the Moment Claude Code Is Waiting for Your Input
6 min read
“Notifications Are Turned Off for Claude” — Here Is the Fix
6 min read
Codex Sound When Done: Make Codex CLI Play a Sound When It Finishes
6 min read
terminal-notifier + Claude Code: Native macOS Alerts When Your Agent Finishes
6 min read
Gemini CLI Notifications: How to Get a Sound or Alert When Gemini Finishes
6 min read
Get Claude Code Notifications on Your Phone
6 min read