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.

~/.claude/settings.json
{
  "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.

Side by side

Terminal bellNotification hookAgent Attention
Tells you which sessionNoIf you script itYes
Shows the commandNoIf you script itYes
Approve without switchingNoNoYes
Status of all sessionsNoNoYes
Cache expiry warningNoNoYes
CostFreeFree$9.99 once

Answer every agent from the menu bar

Agent Attention for macOS. One-click approvals for Claude Code and Codex CLI, live session status and cache warnings. $9.99 once.