How do I get a notification when Claude Code is waiting for input
On this page
  1. When does Claude Code say it is waiting?
  2. Option 1: a desktop alert from a Notification hook
  3. Option 2: a push to your phone
  4. What goes wrong with several sessions?
  5. Where does Joxo fit?
  6. Frequently asked questions
  7. Why does Claude Code not notify me right away when it asks for permission?
  8. Can a Notification hook approve the prompt for me?
  9. Does this work for Codex or Cursor too?
  10. How do I stop getting notified about finished sessions?
  11. Try it with your team

Guides

How do I get a notification when Claude Code is waiting for input?

Three ways to know when Claude Code stops for you: a desktop alert from a Notification hook, a push to your phone, or one place that watches a whole team.

Claude Code tells you it is waiting through its Notification event, and you choose where that goes. For a desktop alert, add a Notification hook with the permission_prompt and idle_prompt matchers. For your phone, turn on push in /config while Remote Control is running, or forward the hook to a push service. If several sessions or several people's agents are running, send every "waiting on you" to one place instead of one alert per terminal.

A session that stops for a permission prompt while you are in another window does nothing until you come back. The fix is not more alerts. It is one alert for each thing that actually needs you, sent to the screen you are looking at.

When does Claude Code say it is waiting?#

Claude Code raises a notification in a few situations, and hooks receive each one with a notification_type:

TypeWhat happenedWorth an alert?
permission_promptA tool call is waiting for Allow or DenyYes, the session is stopped
idle_promptClaude finished and is waiting for your next messageUsually, if you walked away
elicitation_dialogAn MCP server asked you a questionYes
auth_successA sign-in finishedNo

Claude Code's hooks reference lists the full set. One detail matters for timing: the permission_prompt notification fires only after the prompt has waited about six seconds, so a prompt you answer straight away never alerts you.

Option 1: a desktop alert from a Notification hook#

Hooks live in .claude/settings.json (shared with the team) or ~/.claude/settings.json (just you). This one sends a macOS alert for permission prompts and for idle sessions:

json
{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt|idle_prompt",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.message' | xargs -0 -I{} osascript -e 'display notification \"{}\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

On Linux, replace the osascript call with notify-send "Claude Code" "{}". On Windows, a PowerShell toast module such as BurntToast does the same job.

The hook reads the notification as JSON on standard input. The message field holds the text, such as "Claude needs your permission", and cwd tells you which project it came from. Put the folder name in the alert when you run more than one session, or every alert reads the same.

Option 2: a push to your phone#

With Remote Control. If you start a session with claude --remote-control (or run /remote-control inside one), the Claude app on iOS or Android can receive pushes. In /config, turn on Push when actions required for permission prompts and questions, and Push when Claude decides if you also want to hear when long tasks finish. Remote Control needs a Pro, Max, Team or Enterprise plan; on Team and Enterprise an Owner switches it on first. Anthropic's Remote Control docs cover the setup.

With a hook and a push service. Any service that accepts an HTTP request can turn the hook into a phone notification. With ntfy, for example:

bash
jq -r '"\(.cwd | split("/") | last): \(.message)"' | curl -s -d @- https://ntfy.sh/your-private-topic

Use a long random topic name, because anyone who knows it can read the messages. Never put file contents or command text in the push.

What goes wrong with several sessions?#

The options above are built for one person and one session. They start to fray when you run five sessions, or when a team does:

  • Every alert looks the same. "Claude needs your permission" from five terminals tells you nothing about which one.
  • Alerts pile up. Answering a prompt at the keyboard does not clear the alert already on your phone.
  • Only the person at that computer hears it. If a teammate's session is waiting on a decision you can make, nothing reaches you.
  • Each agent is different. Codex, Cursor and OpenCode have their own notification settings, or none, so a team using several agents gets several systems.

A good rule: one notification per thing that needs a person, named by project and session, gone once it is answered.

Where does Joxo fit?#

Joxo puts a team's coding agents in one shared project: Claude Code, Codex, Cursor, OpenCode and more, each running on its own person's computer and plan. When one of your agents is waiting on you, the Joxo iPhone app (in TestFlight) sends a push, and you can answer from the phone. Approvals happen on an unlocked phone. The Live Activity appears only when something needs you and goes away once it is answered.

Setup is one line pasted into the agent, in the project folder:

Read https://joxo.ai/skill.md and follow it to set up Joxo in this project.

Approving permission prompts from your phone covers what is safe to approve away from the keyboard.

Frequently asked questions#

Why does Claude Code not notify me right away when it asks for permission?#

The permission_prompt notification waits about six seconds, so prompts you answer at once stay quiet. If you need a signal the moment a prompt appears, Claude Code's hooks reference describes the PermissionRequest hook, which runs immediately.

Can a Notification hook approve the prompt for me?#

No. Notification hooks are for side effects such as sending an alert. They cannot block or answer the prompt. Approving automatically is what permission rules in settings are for, and those should stay narrow.

Does this work for Codex or Cursor too?#

Each agent has its own settings. Codex and Cursor do not read Claude Code's hooks. To get one stream of notifications across different agents, you need something that watches all of them, which is what Joxo does for a team.

How do I stop getting notified about finished sessions?#

Drop idle_prompt from the hook's matcher and keep permission_prompt. With Remote Control, turn off Push when Claude decides and keep Push when actions required.