Guide
Claude Code notifications on macOS
Claude Code stops and waits whenever it needs permission or finishes a task. If that terminal is behind three others, it waits for nothing. Here are three ways to know the moment it needs you.
Option 1: the terminal bell
Claude Code can ring the terminal bell when it needs input. Run this once, then enable the bell or badge in your terminal's settings.
claude config set --global preferredNotifChannel terminal_bell
Free and instant. The catch: a bell tells you something happened, not which session or what it wants.
Option 2: a Notification hook
Claude Code fires a Notification hook when a permission prompt has waited about six seconds, or a session sits idle. Point it at osascript to get a native macOS banner.
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code needs you\" with title \"Claude Code\"'"
}
]
}
]
}
}It does not include the command, and you still have to find the right terminal and answer there. The full setup is in our Claude Code hooks guide.
Option 3: answer from the menu bar
Agent Attention turns the notification into the answer. A small card shows the session name and exact command with Approve, Deny and Always. It never takes keyboard focus, so you keep typing where you were.
The menu bar shows every Claude Code and Codex CLI session as needs you, working, idle or failed, and warns before an idle session's prompt cache expires.