TerminalsTerminal.app

Every agent in Terminal, one click from its tab.

Perch keeps every coding agent session on your Mac in the menu bar. Click one running in the Terminal app that comes with macOS and it selects the exact tab, in whichever window it’s in.

Terminal.app with Perch

Lands on
The exact tab
How
AppleScript, by the session's tty
Permission
Automation, asked once
Needs
Nothing to install
Inside tmux
Window and pane first

How the jump works

Terminal is asked for the tab by its terminal device

Matched by the session's tty

Every Terminal tab runs on its own terminal device, and Perch's hooks record which one each agent is on. A click asks Terminal for the tab on that device, selects it and brings its window to the front.

One permission, asked once

Terminal has no link that focuses a tab, so this goes through AppleScript, and macOS asks once whether Perch may control Terminal. Decline and a click still raises Terminal.

Only a real device name is used

The device name passes through a file in your home folder and ends up inside a script, so Perch accepts exactly the shape macOS uses and nothing else, when it's recorded and again on the click.

Answering

Answering an agent that runs in Terminal

Approvals don't care which terminal

Allow and Deny on your iPhone, Apple Watch and Mac notification work the same in Terminal as anywhere else, for Claude Code, Codex, OpenCode and Devin. They travel through the agent itself, not the terminal.

Reply from the Mac notification

Type an answer into the notification and Perch selects the tab, checks Terminal is in front and the agent is still there, then types it. That needs Accessibility, as well as the Automation access the jump uses.

Typing from your phone, inside tmux

Replies and Stop from the iPhone need a pane Perch can address without the screen: run the agent inside tmux or herdr in Terminal, and the Mac can stay locked. Codex in its default mode and OpenCode need neither.

How approving from your iPhone works, and every alert Perch can send you.

Worth knowing

The conditions, named

Declined Automation raises the app

If you turn down the prompt, or switch Perch off under Privacy & Security → Automation later, a click brings Terminal forward and leaves the tab to you. Switch it back on to get the tab.

A busy Terminal can't freeze Perch

The jump runs in the background and gives up after five seconds on a terminal that doesn't answer — or one showing macOS's permission prompt — so the menu bar never hangs waiting for it.

Inside tmux, the pane comes first

If the agent runs in tmux inside Terminal, Perch tells tmux to select the agent's window and pane, then raises Terminal. tmux masks the terminal underneath, so Perch finds it from the client.

Only asked when Terminal is the host

Every terminal's tabs have a device, so Perch only asks Terminal when Terminal is where the session actually runs. A Warp or iTerm2 session never triggers a prompt to control Terminal.

Pay once for the fleet. Subscribe for the conversation.

Solo

$29one-time
  • Lifetime license — pay once, keep it
  • One Mac at a time; deactivate in-app to move
  • iOS companion, push alerts & Live Activities included
  • Notarized app with signed automatic updates
Buy Perch — $29

Team

$29per seat, one-time · 2+ seats
5
seats × $29 = $145
  • A license key for every teammate — not one shared key
  • Assign and revoke seats by email from your customer portal
  • Your seat is claimed on purchase; invite the rest by email
  • Same lifetime license and updates on every seat
  • Perch Pro is separate — each teammate who wants it subscribes in the iPhone app
Buy 5 seats — $145

Pro

Most popular
$4.99per month

or $29 a year

Launch price until 15 November, then $49 a year

  • A Mac app licence included, for as long as you subscribe — nothing separate to buy
  • Read your agents’ conversations from your iPhone, and reply straight back into the session
  • Works with your Mac locked, from anywhere your phone can reach it*
Get it on the App Store

Free to download. Pro is an in-app purchase.

* What Pro can reach depends on the agent and on where its session is running. Replying needs the session inside tmux, herdr or Rex (Droid, tmux or Rex) — Codex in its default mode and OpenCode use their own local servers instead — and it has to be switched on in Settings, because paying for Pro is not the same as consenting to remote input. Reading a conversation works wherever the session runs. Each agent’s own page says exactly what it supports, and what it doesn’t.

Questions

Terminal.app and Perch, specifically

Does Perch work with the macOS Terminal app?
Yes. Every agent session running in Terminal shows in Perch's menu bar with its live state, and a click selects the exact tab running it, across every window. macOS asks once for permission to control Terminal.
Why does Perch ask to control Terminal?
Terminal has no link that focuses an existing tab — its links only open new ones — so Perch uses AppleScript to find the tab on the session's terminal device. macOS asks the first time, and Perch never asks on behalf of a session running in another terminal.
Can I use Claude Code in Terminal without missing a permission prompt?
Yes. Perch hears from Claude Code's hooks the moment it stops for permission, turns the row amber, and sends the alert to a Mac notification, your iPhone and your Apple Watch. Clicking it selects the tab that asked.
Can I approve Claude Code from my phone while it runs in Terminal?
Yes. Approvals go through Claude Code's hooks, not the terminal, so Allow and Deny work from your iPhone and Apple Watch whatever terminal the session is in, with the one-time licence alone.

Perch lands precisely in Warp, iTerm2, Rex, Ghostty and Codex Desktop too, and inside tmux, herdr and Zellij. Every terminal Perch supports.