The problem
Agents spend a lot of their time waiting on you: a shell command to allow, a file edit to approve. If you're in another window, nothing tells you, and a chat you expected to be halfway done has been sitting on a prompt for twenty minutes.
- A Codex thread waiting for you to approve a command writes nothing to its files, so from the outside it looks like it's still working.
- Working out status from files is accurate, but a moment late, and some things (a shell command waiting for permission) can only be guessed.
- With several chats in two apps, checking each one by hand is the only reliable way to know.
How Pairbar solves it
- Install live status for ClaudeSettings → Integrations → Live status for Claude (hooks) → Install…, or the "Get instant status" card at the top of the chat list, which offers Claude and Codex together. Pairbar asks you to confirm first.
- Install live status for Codex, and trust it onceSettings → Integrations → Live status for Codex (hooks) → Install…. Then, in Codex, type
/hooks, look at Pairbar's hooks and trust them: Codex runs a hook only after you've reviewed it. - Start a new message or chatBoth apps read their hooks when a chat starts. Claude chats already open start sending events after their next message; for Codex, start a new chat or reopen the app. Settings shows "Last event received 12 s ago" once events arrive.
- Watch for Needs youA chat that asks for approval gets the orange ? on its icon, moves to the Needs you section at the top, and shows what it wants to run ("Bash · git push").
- Get told while you're elsewhereTurn on alerts for Claude and for Codex in Settings → Notifications for a banner when a chat needs you or finishes. The menu-bar icon shows how many chats need you, and ⌃⌥K from any app lists them before you type.
What changes with live status on
| From the files only | With hooks | |
|---|---|---|
| Claude asks to run a command | Needs you when Claude's session record says so, or guessed after a pause | Needs you at once, with the command |
| Codex asks to approve a command | looks like Working (Codex writes nothing while it waits) | Needs you at once, with what it wants to run |
| A chat is working | the last thing it wrote | the tool running right now ("Bash · npm test", "Edit · Store.swift", "apply_patch · Store.swift") |
| A turn ends | once its files settle | the moment it stops (Codex: Waiting for you) |
| Subagents and spawned threads | from the transcripts | working or done as they start and stop |
Commands are shown only as their program and subcommand (git push), never with arguments, which could contain passwords. Codex's own questions in plan mode don't go through hooks; Pairbar keeps finding those in the rollout file.
What Install writes, and how to undo it
- Claude: one entry per event in
~/.claude/settings.json, added after your own hooks for that event. The tool events run asynchronously, so Claude never waits for Pairbar on a tool call. Nothing else in the file changes. - Codex: one block at the end of
~/.codex/config.toml, between two comment lines of Pairbar's (or entries added to~/.codex/hooks.jsonwhen your hooks are there). Pairbar adds text after your config; it doesn't rewrite it. - Before writing, Pairbar saves a backup to
~/.pairbar/backups(the latest 10 are kept). If a file isn't valid JSON or TOML, Pairbar doesn't touch it and says why. - Uninstall removes exactly Pairbar's entries, after another backup, and status comes only from the files again.
What the hooks send
Each hook runs a small helper inside Pairbar that keeps only the chat's id, folder and transcript path, the event's name, and the tool's name with its short summary. It never passes on your prompts, a tool's input or output, or the model's replies. It hands that one line to Pairbar over a private socket that only your account can use, then exits, always successfully and without printing anything. Nothing goes over the network; if Pairbar isn't running, the event is dropped. See what the helper sends.
Without Pairbar
Without Pairbar, you can wire up some of this yourself:
- Write your own Claude Code hook on the
NotificationorPermissionRequestevent that runsosascriptorterminal-notifierto show a macOS banner. - Write a Codex hook for
PermissionRequestorStopin~/.codex/config.toml, and trust it with/hooks. - Rely on the apps' own notifications, where they offer them, one app at a time.
- Keep both apps visible and glance at them, which works until you switch to a browser.
Frequently asked questions
- Does Pairbar change my Claude or Codex configuration?
- Only when you click Install…. It adds its own hook entries after a backup to
~/.pairbar/backups, leaves your hooks and settings as they are, and Uninstall removes exactly its entries again. - What do the hooks send, and where?
- Only local metadata: the chat's id and folder, the event's name, and a tool's name with a short summary such as "git push". Never prompts, tool output or replies. It goes over a private socket on your Mac, never over the network.
- Do the hooks slow Claude or Codex down?
- The helper takes about a millisecond, always exits successfully and prints nothing, so it doesn't change what the apps do. Claude's tool-call hooks also run asynchronously, so Claude doesn't wait for them.
- Why do I have to trust the hooks in Codex?
- Codex runs a new hook only after you've reviewed it. Type
/hooksin Codex, check Pairbar's entries and trust them; Codex remembers that for the app and the command line together. - Does status work without the hooks?
- Yes. Pairbar reads status from the files Claude and Codex already write. The hooks make it instant and let a Codex chat that's waiting for approval show Needs you, which its files never show.
Related
- DocsIntegrationsLive status for Claude and Codex through their hooks, Pairbar's tools for their chats (the plugin, the `pairbar` command, the tool reference, who's calling, agent activity), and agent actions: second opinions, reviews, helper chats, handoffs, workflow runs and drafts, and check-ins that agents ask for and you approve, with budgets and guardrails
- GuideSet up live status hooks for Claude and CodexTurn on instant status from Claude Code and Codex hooks: what Install writes, what is sent, how to check events arrive, repair and uninstall.
- GlossaryAgent hooksCommands an AI coding agent runs automatically at set points in its loop, such as before a tool call, on a permission request or when a turn stops.
- Use caseGet notified when Claude Code or Codex finishes or needs your inputBanners, sounds and a count on the menu-bar icon tell you when a Claude or Codex chat finishes or needs you.
- Use caseKeep an eye on Claude Code and Codex while you work in other appsBanners and sounds per app, a count on the menu-bar icon and ⌃⌥K quick search keep you posted while Claude and Codex are in the background.
Try Pairbar free for 7 days
One sidebar for the Claude and Codex desktop apps. Everything on for 7 days, no card needed; then $49/year ($39 first year with LAUNCH), $9/month or $129 lifetime (first 200 buyers). macOS 26 or later, Apple silicon.