macOS menu bar · Codex

Every Codex session, at a glance.

Perch sits in your menu bar and watches every Codex session on your Mac — the CLI and Codex Desktop both. It shows what each one is doing, how much of your rate limit is left, and taps you on the shoulder when one needs a decision.

Get Perch — $29One-time purchase · macOS 13 or later
The Perch panel open from the macOS menu bar, showing four agent sessions with live state, model, context window and spend

How it works

Useful before you configure anything, live once you do

Two paths feed Codex support, and they degrade gracefully: if the hook half never gets set up, the scan half still carries the panel.

Rollout scan

Nothing to install to see something

Perch reads your Codex rollouts straight from ~/.codex, so the panel is populated the moment you launch it — including sessions that were already running. No hook, no config, no setup step between installing Perch and seeing your fleet.

Hooks

codex-report, for the live half

The hook is what turns a rollout history into a live view: state the instant it changes, a “needs you” the moment Codex asks, and Allow/Deny from the notification. Perch writes it into ~/.codex/hooks.json itself and chains onto hooks you already run.

Codex Desktop

Straight to the conversation

Codex is the one agent Perch can open by conversation rather than by window: a codex://threads link lands on the exact thread inside the desktop app. CLI sessions land in the exact terminal pane instead.

Hook trust

Codex won’t run a hook you haven’t trusted. Perch says so out loud

Codex requires every non-managed hook to be reviewed and trusted by hash before it will execute. Install an integration, change nothing else, and it sits there looking enabled while doing precisely nothing — no state changes, no alerts, no approvals. We know because it happened to us: on a live machine, none of Perch’s eight Codex hooks were trusted, and the integration read as on the whole time.

So Perch asks Codex directly which hooks it will actually run, and surfaces anything untrusted or stale-hashed in Settings with the fix attached. A silent no-op is the worst failure a menu bar app can have — you stop looking at it and never find out why.

Usage, limits and spend

Everything your account will tell you, on one strip

Credit balance

Your extra-usage credits, right beside the limit bars — so when the included allowance runs out you can see what’s left to spend instead of guessing.

Your plan, without a login

Codex reports your plan directly, so Perch can label it with no OAuth grant and no credential handling at all. It’s just there.

Rate-limit windows as bars

Both limit windows with their reset times, as a countdown or a clock. Perch warns you under ten percent and surfaces a rate limit the moment you hit one — on the Mac and as a push.

Per-model weekly bars

Opt in with a read-only OAuth grant and each model gets its own bar. Off by default, and everything above works without it.

Per-session cost is an estimate, derived from token counts, and Perch labels it as one rather than passing it off as a billed figure. Two things Codex doesn’t expose at all: lines changed per session, and a heads-up when a plan is ready for review.

Stats

A year of Codex, in one panel

Total tokens, sessions and active days; a contribution heatmap; current and longest streak; your longest session and busiest day; your favourite model and a full per-model breakdown. Filter to Codex alone, or set it against the other agents you run.

Codex sessions carry through to the iPhone and Apple Watch too — the fleet view, push alerts, Live Activities, and Allow/Deny from your wrist.

The Perch stats panel showing a contribution heatmap, streaks, and a per-model token breakdown

Pricing

Pay once, keep it

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
Buy 5 seats — $145

FAQ

Questions Codex users ask

Why did Perch tell me my Codex hooks aren't trusted?
Because Codex won't run them until you say so. Codex requires every non-managed hook to be reviewed and trusted by hash — run /hooks inside Codex and approve them. Until you do, the hooks are installed but inert. Perch asks Codex directly which hooks it will actually execute, so it can tell you this instead of just looking broken.
What still works if I never trust the hooks?
The rollout scan, which is most of the panel: sessions, model, context, cost, usage bars and Stats all keep working. What you lose is the live half — instant state changes, the “needs you” alert, and Allow/Deny from a notification.
Do I have to edit ~/.codex/hooks.json myself?
No. Perch writes its hooks in and chains onto anything already there, so an existing setup keeps firing. Removing the integration from Settings takes them back out. The one step Perch can't do for you is the trust approval — that's Codex's, by design.
Does it work with Codex Desktop as well as the CLI?
Yes, and Perch labels which is which on every row. Codex Desktop gets the better jump of the two: clicking a session opens that exact conversation in the app, rather than merely raising it.
Is the cost figure exact?
No — for Codex it's an estimate derived from token counts, and Perch presents it as one. Rate-limit windows, your plan label and your credit balance are read values, not estimates.
Does my code leave my Mac?
No. Session state, rollouts and usage stay local. Data leaves only for features that require it: your paired iPhone (encrypted, over your LAN or your own tailnet), the push relay, and Polar for license checks.

Running Claude Code or Cursor too? Perch watches all three from one menu bar.