The problem
CI is the classic babysitting job. The agent pushes a fix, the pipeline takes 12 minutes, one job fails on something new, and the agent is sitting idle because nobody told it to look again. You end up setting a timer on your phone to come back and type "CI still red?" into the same chat.
The same pattern shows up for flaky deploys, long migrations and PR reviews that need another pass once comments land.
How Pairbar solves it
- Open the chat's menuOn the chat that's doing the work, click ⋯ (or right-click) and choose Check in every…, or press K with the menu open.
- Write the messageMake it self-contained, for example: "Run
gh pr checks. If anything failed, read the log, fix it and push. If all checks passed, reply DONE on the last line." - Choose the timingSet Every to 5, 10, 15, 30 or 60 minutes and Up to anywhere from 3 to 48 times. Match the interval to how long your pipeline takes.
- Set the stop wordStop on defaults to DONE. Leave it empty if you only want it to stop after the number of times.
- Let it runA green ⟳ appears on the row. Active check-ins are listed at the bottom of the Workflows tab with Stop, and you get a notification when one stops or when a message couldn't be sent.
How the stop word is matched
The word must appear as a whole word, in any case, in the last lines of the reply, the same rule as a workflow step's condition. That avoids stopping by accident:
| End of the agent's reply | Stops? |
|---|---|
| "All 14 checks passed. DONE" | yes |
| "…pushed the fix. done" | yes (any case) |
| "Not done yet: lint still failing." followed by several more lines of log | no: it isn't in the last lines |
| "Bad commit undone; checks still running." | no: not a whole word |
Claude and Codex behave differently
| Codex | Claude | |
|---|---|---|
| When the message is sent | queued even mid-turn | Pairbar waits until the chat isn't working |
| What runs it | your codex tool | your claude tool |
Worth knowing
- Each message is a real turn and uses your plan limits, just like typing it yourself. Every 10 minutes up to 18 times is up to three hours of nudges.
- Hiding a chat keeps its check-in; it ends only when the chat is gone.
- Check-ins run only while Pairbar is running, and pause while Pairbar is locked after the trial.
- Cloud chats have no transcript on your Mac, so they can't have check-ins.
- Check-ins are stored in
~/.config/pairbar/heartbeats.json, readable only by you.
Without Pairbar
Ways to do the same thing without Pairbar:
- Watch CI yourself with
gh pr checks --watch, then go back to the chat when it finishes. - A shell loop that resumes the session headlessly, e.g.
claude -p --resume <session-id> "check CI…"followed bysleep 600, stopping when the output contains your word. - Ask the agent to poll within one turn ("wait for CI and keep fixing"). This keeps one turn running for a long time.
- A CI notification (email, Slack) that reminds you to prompt the agent again.
Frequently asked questions
- How often can a check-in run?
- Every 5, 10, 15, 30 or 60 minutes, up to between 3 and 48 times. It stops earlier when the reply ends with your stop word.
- What if the Claude chat is still working when the check-in is due?
- Pairbar waits until the Claude chat isn't working before sending. Codex messages are queued even while the thread is mid-turn.
- Will "not done yet" stop the check-in by accident?
- Only if DONE appears as a whole word in the reply's last lines. Earlier mentions, or words like "undone", don't count.
- Do check-ins use my Claude or Codex plan?
- Yes. Each message is a normal turn sent through your own
claudeorcodextool, so it counts toward your plan limits. - How do I stop a check-in early?
- Click Stop next to it at the bottom of the Workflows tab. You also get a notification whenever a check-in stops.
Related
- DocsWorkflowsScheduled prompts, check-ins on a chat, run history, limits
- Use caseRun scheduled coding workflows with Claude Code and CodexDescribe a recurring job; your Claude or Codex plans steps in parallel waves, and Pairbar runs them on schedule within your limits.
- Use caseSee pull request status and CI checks next to each Claude Code and Codex chatA colour-coded PR icon per chat, plus a hover card with commits ahead and behind, diff size, uncommitted changes, PR checks and review decision.
- Use caseSend a follow-up to a Claude Code or Codex chat without opening it⋯ → Send message… (M) confirms a Codex queue submission with an Open in Codex link, or continues a Claude session in the background once it's idle.
- GlossaryHeadless modeRunning Claude Code (`claude -p`) or Codex (`codex exec`) from a command or script, with no interactive interface.
- Use caseLet Claude and Codex chats run your workflows, with you in chargeA chat can run one of your workflows, draft a new one or schedule a check-in on itself, only as your settings allow, within budgets you set.
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.