Know when an agent needs you.
With several agents running, most of the waiting is on your side. Skipper watches every session's terminal and tells you when an agent is blocked on a question or has finished its turn, so you can move to the session that needs you.
How Skipper knows
Skipper's terminal host reads the agent's screen the way you would. It evaluates the visible terminal grid and the terminal title against detection rules for each CLI, built on the manifests Herdr publishes under the Apache 2.0 license. A prompt waiting for approval reads as blocked. A return to the input prompt reads as idle. Detection runs on your Mac, even when no window is showing the terminal.
Claude Code and Codex also report to Skipper through hooks that Skipper adds to each launch, without changing your settings or your account's configuration. A hook says when a turn starts and ends, when the agent asks you for permission or an answer, and which subagents are still working. The screen cannot always show those. Skipper combines the reports with the screen. A screen that clearly shows a prompt or a working agent still decides, so a missed report does not leave a session stuck.
OpenCode and Pi report through a plugin that Skipper loads with each launch, beside your own plugins and extensions. Once the plugin reports, it decides their state, and Skipper no longer reads their screen for it. OpenCode's plugin also reports requests for permission or an answer, and which subagents are still working.
When the screen decides, Skipper waits for it to settle. A visible approval prompt or input prompt counts at once. Weaker evidence has to hold for three more reads, 100 milliseconds apart, or for 700 milliseconds, and the first 3 seconds of a new agent are not read at all. A notice goes out one second later only if the state, your preferences, and your focus still call for it. An agent's own desktop notifications (OSC 9 and OSC 777) never change its state, because Claude Code sends one a minute after every finished turn.
Where you see it
- The sidebar and session cards. Each session shows whether its agent is working, with a count when subagents work beside it, needs your input, or has finished. A finished turn stays marked until you look at the session. A request for input stays until the agent moves on, and looking at it clears only its bold title. The indicators work without notification permission, and with notifications off VoiceOver announces when a session you are not viewing needs input or finishes.
- Notifications. In Settings under Notifications, turn on Agent needs input and Agent finishes a turn, and choose whether to play a sound. A notification names the session and how many others also have an unread notice. Clicking it focuses that session's terminal.
- Next Agent Needing Attention. Press ⌘' to jump to the next session whose agent needs input, then to finished sessions you have not read.
A session you are looking at stays quiet. Viewing it marks its notice as read, and Skipper sends no alert or sound for it.
What a notice contains
The text is fixed copy with the session's name. It never includes terminal output, the conversation, or credentials.
Finished means the agent returned to its prompt. Read the session to see whether the work is what you asked for.