A guide to agent notifications on your Mac

Know the moment Claude Code needs you.

Perch watches every Claude Code session on your Mac and tells you the moment one stops for a permission or a question — in the menu bar, as a notification you can answer, and on your iPhone and Apple Watch. It does the same for Codex, OpenCode and the other agents you run.

  • One-time $29
  • Nothing to configure
  • macOS 13 or later
The Perch panel open from the macOS menu bar, showing agent sessions with live state, model, context window and spend

Four alerts, each one a switch

Named here as they are in Perch’s Settings → Notifications, where each can be turned on or off on its own.

“When an agent needs you”

A session stopped at a permission prompt or asked you a question. The notification says what it's waiting on — the command it wants to run, or the question itself.

“When an agent finishes”

A turn is done. Where the agent writes a closing reply, the notification carries its first line, so you know whether to look now or later.

“On rate limit”

The moment a session hits a usage limit, rather than a quiet stall you only notice when you come back.

“When usage runs low (<10% left)”

A heads-up when one of your plan's windows is nearly spent, before a long run stops halfway.

Where you’ll see it

In the menu bar

The session’s row turns amber and the menu bar says how many are waiting — “1 waiting for you” — so you can see it from across the room without opening anything.

As a Mac notification

Click it and you land inside the session, not just the app: the exact pane in Warp and iTerm2, the exact split in Ghostty, the exact tab in Terminal.app.

As a sound

Optional, for when a turn finishes — so you can look away from the screen entirely while a long run works.

Answered in place

Allow and Deny on the notification itself, or a typed answer to a question. Perch checks the agent is still there before typing, and puts the text in the session’s own pane.

On your iPhone

A push with Allow and Deny on it, and a Live Activity counting down how long you have. How approving from your iPhone works.

On your wrist

A tap when a new session needs you, and a watch-face timer for how long the top one has waited.

Which agent sends which alert

Each agent tells Perch a different amount about itself. A dash means Perch hasn’t measured that alert for that agent yet — not that it can’t be done.

Claude CodeNeeds youYesFinishedWith the replyRate limitYesUsage lowYes
CodexNeeds youYesFinishedWith the replyRate limitYesUsage lowYes
OpenCodeNeeds youYesFinishedWith the replyRate limitYesUsage lowYes, Go plan
DroidNeeds youYesFinishedWith the replyRate limit—Usage low—
AmpNeeds youYesFinishedYesRate limit—Usage lowYes
Antigravity CLINeeds youYesFinishedYesRate limit—Usage lowYes
CursorNeeds youNoFinishedWith the replyRate limitNoUsage lowYes, opt-in
DevinNeeds youNoFinishedYesRate limit—Usage lowYes
Muse CodeNeeds youNot yetFinishedWith the replyRate limit—Usage low—

Fewer false alarms

An alert you learn to ignore is worse than none. Most of Perch’s work on notifications has gone into the ones it doesn’t send.

An error isn’t a finish

A Claude Code or Codex turn that stops on a rate limit or an error names the problem instead of chiming “finished”.

Background work counts

While subagents or background commands are still running, the session stays working, and the finished alert waits for them.

Answered at the terminal

Choose Yes in the terminal yourself and Perch clears the request everywhere, instead of leaving it waiting on your phone.

Cancelled isn’t finished

In Claude Code, Antigravity and Droid, a turn you stopped with Escape goes quiet. Only a turn that really completed gets announced.

Set it up

  1. 1

    Install Perch on your Mac

    macOS 13 or later. It finds the agents you have and installs its own hooks into each one — there's no config file to edit.

  2. 2

    Allow notifications

    When macOS asks whether Perch may send notifications, say yes. Then choose which alerts you want in Perch's Settings → Notifications, and whether a sound plays when an agent finishes.

  3. 3

    Restart sessions that were already open

    An agent reads its hooks when it starts, so a session that was running before Perch installed them shows “Restart to enable live updates” on its row. Start it again and it reports straight away.

  4. 4

    Add your phone, if you like

    Pair Perch Companion on your iPhone and the same alerts reach your pocket and your wrist — with Allow and Deny on them.

Doing it yourself

Claude Code can run a command of your own when it needs input, and a short hook script that posts a macOS notification is a fine answer for one agent. Some terminals, Warp among them, also alert you for Claude Code sessions running inside them.

Perch is for when that stops being enough: several agents at once, the menu bar telling you which one is waiting, a click that lands in the right pane, alerts that know an error from a finish, and the same thing on your phone and your wrist.

Questions

Notifications, specifically

Will Perch notify me on every tool call?
No. For Claude Code and Codex, Perch hears about a permission prompt only when the agent has actually decided to ask you, so an approved command it was always going to run sends nothing. That is also why Cursor gets no “needs you” alert: its approval hook fires before every shell command, asked or not, and alerting on each one would bury the ones that matter.
Does it work for Claude Code in VS Code's terminal, or Claude Desktop?
Yes. Perch watches Claude Code wherever it runs — a terminal, the terminal inside your editor, or Claude Desktop — and labels which is which on every row. Clicking a CLI session's notification lands in the exact pane; a Claude Desktop session raises the app.
Can I answer from the notification without opening the terminal?
Yes. Allow and Deny can sit on the Mac notification itself (Settings → Notifications → “Approve permissions from the notification”), and a question can be answered by typing into it (“Reply to questions from the notification”). Neither needs Perch Pro. Perch checks the agent is still there before typing anything, and when it can't tell which pane the session is in, it brings the terminal forward instead of typing anywhere. Inside tmux or herdr the answer goes straight to the session's pane; in a plain terminal tab, typing it needs macOS Accessibility access for Perch.
Can I turn the sound off, or only get some alerts?
Yes. Each of the four alerts has its own switch in Settings → Notifications, and the finish sound is a separate one (“Play a sound when an agent finishes”).
Why didn't I get a “finished” alert when a turn stopped on an error?
Because it didn't finish. A Claude Code or Codex turn that stops on a rate limit, a server error or being signed out names the problem on the row instead of chiming, and a rate limit sends only the rate-limit alert. A turn that ends with background commands still running waits for them before it's announced.