# Notify

Notify lets your agents ask you questions without waiting in their terminal. An agent calls the `notify` MCP tool (or `runpane notify`). Pane shows the question wherever you are, even over your browser, and the agent gets your answer as the tool's result.

Notify is in Pane 2.4.204 and later, and it's on by default.

## Four kinds of card

An agent picks one with the `ui` value:

| `ui` | You see | The agent gets |
| --- | --- | --- |
| `options` | The question and 1 to 9 choices, one marked recommended. The card shows four, then **More**. | `{answer, note?}` |
| `approve` | **Deny** and **Approve**, with the details one click away. | `{approved, note?}` |
| `ask` | A text field, with optional suggestions above it. | `{answer}` |
| `info` | One line, with at most one button. It hides after a few seconds. Nothing to answer. | `{delivered}` |

Every card has a one-line title and optional context under **Details**.

If Notify is off or Pane isn't running, the agent gets `{unavailable, next}` and asks in its terminal like before.

Scripts can ask too:

```bash
runpane notify --ui options --title "Which session store should the refactor use?" \
  --choices '[{"label":"Postgres table","recommended":true},{"label":"Keep Redis"}]'
```

## Where questions show

- **The card.** It slides up at the bottom center of the screen with your pointer, over any app. It never takes keyboard focus when it appears. Click a choice to answer, or click its text field to type. After you answer, it shows "Sent to &lt;agent&gt;" with **Undo** for 3 seconds. Only one card shows at a time, oldest first.
- **Inside Pane.** With Pane in front, the card sits at the bottom of the window. Panes with a waiting question show an amber dot and "Waiting" in the sidebar. **Notify** in the sidebar opens the inbox: waiting questions, updates and what you answered earlier today. **Open in Pane** jumps to the agent's terminal with the card docked under its output.
- **The menu bar or tray icon** shows an amber dot while questions wait. Its menu lists them, and has Pause for 1 hour and Notify settings.

## Answer with the keyboard

1. Press **⌃⇧Space** (Ctrl+Shift+Space on Windows and Linux) from any app. A panel opens with the waiting questions.
2. Press a number or the arrows to choose. Press Tab to add a note.
3. Press Enter to send. Press → to skip to the next question, or Esc to close.

With your pointer over a card inside Pane, its keys work too: a choice's number answers, Y approves, N starts a denial, and typing starts an answer. A card floating over another app takes keys only after you click it, so typing in that app never answers by accident.

## Not now

Click ✕. The question leaves the screen and waits in the Notify inbox. Right-click ✕ to bring it back in 10 minutes, in 1 hour, or when you next switch to Pane. The agent keeps waiting.

Questions aren't saved to disk. They live only while the agent's call is open. Earlier today clears at midnight and when Pane quits.

## Long waits

A question waits until you answer it, even for hours.

- **Claude Code and Codex** wait in one call. Claude Code moves a call that runs past about 2 minutes into a background task. Your answer still reaches the agent.
- **Cursor's CLI** ends every tool call after 60 seconds, so `notify` returns `{waiting: true, id}` about every 50 seconds and the agent calls it again with `resume`. The card doesn't change. After 15 minutes without an answer, the agent gets `unavailable`. Cursor asks "Run this MCP tool?" before every call, so pick **Allowlist MCP Tool** once.

If the agent stops waiting (you interrupt it, it exits, or its call times out), the card says the agent stopped waiting and the question moves to **Earlier today** as Expired.

## Other screens and your phone

From Pane 2.4.205, the machine running the agent keeps the questions, and every screen connected to it shows them. The first answer from any screen goes to the agent.

- **Other Pane desktops.** A Pane desktop connected to that machine, through remote access or a [workspace](/docs/runpane-workspaces), shows its questions everywhere above: the card over other apps, the shortcut, the tray dot, the chime, the inbox and the Waiting dots. Each card names its machine.
- **Several screens.** The screen you answer on says "Sent to &lt;agent&gt;". The others say "Answered on &lt;device&gt;". All of them offer **Undo** for 3 seconds.
- **Lost connection.** If the machine can't be reached, its cards stay up and say so. The agent keeps waiting.
- **Your phone.** Each question sends one alert to every phone signed in to that machine in the Pane app, with notifications on. The alert says only "&lt;Pane&gt; has a question". Answer with its buttons, even from the lock screen, or tap it to open the question in the app. Updates don't alert. This needs the newest Pane app build.
- **A headless host** has no screen of its own. Its questions show on whoever is connected and on your phone.

Each screen keeps its own position, sound, shortcut and Pause. Turning Notify off on the machine running the agent ends every waiting question on every screen.

## Settings

Open **Settings → Notify**:

| Setting | Default |
| --- | --- |
| Notify | On. Off returns `unavailable` to every waiting agent. |
| Show outside Pane | On. Off shows cards only while Pane is in front. |
| Position | Bottom center. Also top right or bottom right. |
| Answer-all shortcut | ⌃⇧Space |
| Updates hide after | 6 seconds |
| Sound | On, for questions only |

Pause for 1 hour, in the tray menu, hides cards and mutes sound while questions keep queueing. Cards show over full-screen apps, during screen sharing and with Do Not Disturb on, so Pause is how you quiet them.

## Setup

There's nothing to set up. Pane registers its MCP server with Claude Code, Codex and Cursor, and `notify` is one of its default tools. See [MCP](/docs/mcp).

While Notify is on, Pane also keeps a short block in each agent's instruction file, so the agent knows when to ask and how to write a good card:

- Claude Code: `~/.claude/CLAUDE.md` (or `$CLAUDE_CONFIG_DIR/CLAUDE.md`)
- Codex: `~/.codex/AGENTS.md` (or `$CODEX_HOME/AGENTS.md`)

The block sits between `<!-- pane-notify:begin ... -->` and `<!-- pane-notify:end -->`. Pane writes only those lines and leaves the rest of the file alone. **Settings → Notify → Agent instructions** shows each file's state. Turn Notify off to remove the block. Cursor learns the same rules from the MCP server's instructions.

Pane sets `PANE_SESSION_ID` and `PANE_PANEL_ID` in every terminal it opens, so a card knows which Pane asked. A call from an agent outside Pane still works. Its card shows the folder name instead.

## Platforms

macOS, Windows and Linux on X11 show the card over other apps. In a Wayland session, Pane can't place a window over other apps, so Show outside Pane is off there. Questions still show in Pane, in the inbox and with the tray dot. GNOME needs the AppIndicator extension for the tray icon, and Ubuntu turns it on by default.

## Related

- [Pane Notify](/agent-notifications): what Notify looks like, with real captures
- [Loops](/docs/loops): run agents on a schedule
- [MCP](/docs/mcp): the `pane` MCP server
- [runpane CLI](/docs/runpane-cli)
