Skip to content

Tasks

Chats grouped by the branch or worktree they work on, across Claude, Codex and the cloud: needs you, working, ready to review, done, with each task's PR and checks.

Last updated

The Tasks view groups your chats by the work they belong to instead of by folder. A task is every chat, from Claude and Codex, on your Mac or in the cloud, that works on the same branch of a repository or in the same worktree. Tasks sit in sections by where they are: needs you, working, ready to review, done.

Pairbar organises the chats Claude and Codex already have, and suggests what to do next: fix failing checks, get a second opinion, tidy up merged or stale work. It never acts on its own: every suggestion shows exactly what it will do and waits for Approve. What you set here (names, done marks, archived tasks, filters) stays in Pairbar.

Turn it on#

Choose Tasks in the view menu (Group by, on the right of the bar under the search field), in Settings → Chats & sidebar → Group by, or type View: Tasks in ⌘K. Pairbar remembers it. Choose Project (or any other grouping) to go back.

What makes a task#

ChatsAre
on the same branch of the same repositoryone task, whichever app they're in, local or cloud (a cloud chat's repository is matched to your checkout by name)
in the same worktree folderone task, whatever branch they report (Codex worktrees are often on a detached HEAD)
on main, master, develop, dev, staging or trunk, or on no branchnot a task: they go in one group per project, "Acme-Backend · main"

A chat in a worktree and a cloud chat on the worktree's branch end up in the same task.

Chats on a main branch get one group per project rather than one task each: a busy main checkout would otherwise fill the list with one-chat "tasks" that never get reviewed or merged. The group still shows under Needs you or Working when one of its chats does, and otherwise under On main.

Filters and sorting#

Under the view bar, the Tasks view has its own filter bar:

  • Stage: All, Needs you, Working, Ready and Done, each with the number of tasks it would show (in a narrow sidebar, one chip with a menu). All also shows the per-project main groups.
  • Apps (All apps, Claude, Codex, Both apps): tasks with a chat in that app, or in both. A task is always shown whole: filtering on Claude keeps a task's Codex chats in it, and its section still comes from all of its chats (a Codex chat that needs you keeps the task in Needs you). The chat list's All · Claude · Codex chips make way for this in the Tasks view.
  • Project (All projects or one): each with its count.
  • Sort (the ⇅ chip): Recently active (the default), Needs attention first (needs you, failing checks, review requested, ready, working, main groups, done), PR status (failing checks, review requested, checks running, passed, no checks, drafts, no PR, merged, closed), Name and Oldest. The same chip has Group by: Lifecycle (the sections below, the default) or Project (one section per project), and Stale after (3, 7, 14 or 30 days; see Suggestions).

Filters combine, and each count takes the other filters into account, so a count is exactly what that choice would show. Reset (next to the chips while a filter is on) shows every task again; when nothing matches, the list says No tasks match with a Reset filters button. Pairbar remembers the filters, the sort and the grouping. The label filter applies too: a task shows when one of its chats has the label.

Sections#

SectionA task is here when
Needs youone of its chats is waiting for your answer or approval
Workingone of its chats is running (and none needs you)
Ready to reviewnothing is running or waiting, and it isn't done: its branch has work on it or an open PR
Doneits PR is merged or closed, or you marked it done
On mainthe per-project groups of chats on a main branch, while none needs you or works

A chat that needs you or is working always decides first, so a merged task you're still talking to shows under Working. Done starts folded and, unfolded, shows the last 5 with Show all for the rest. Click a section's title to fold or unfold it; Pairbar remembers which.

Section names wrap in full. Below 280 points the number of tasks appears beneath the name, leaving the disclosure arrow clear.

A task's row#

  • The title: your own name if you renamed it, else the PR's title, else the branch in words (claude/fix-login-redirect-1a2b → "Fix login redirect"; the short random id tools add at the end is left out), else the newest chat's title.
  • App icons: which apps have chats in it, with ☁︎ after an app that has cloud chats in it.
  • The number of chats (always in the narrow layout; in the wide layout, when there's no suggestion).
  • A suggestion, when there is one: a small grey chip (Fix, Review, Finish, Archive) that opens its plan. In the wide layout it takes the place of the number of chats, so the row stays short. (A task that needs you has no chip: a click on its title already opens the waiting chat.)
  • The PR: its number in GitHub's colours (open, draft, merged, closed) and its checks: ✓ passed, ✕ failed, 🕘 still running. Click it to open the PR.
  • When it last moved, and an unread dot when one of its chats is unread.

With Density: Detailed, a second line says the project and branch.

Below 400 points, the title and project/branch wrap in full. App icons, chat count, suggestion, PR and time sit beneath them and wrap onto more lines when needed. The PR and suggestion remain separate buttons; they do not open the task's chat. The attention banner puts its action beneath the explanation below 360 points.

Click a task's title to open its most relevant chat: the one that needs you, else one that's working, else the newest. Click › to unfold it: a card with its PR (PR #42 · open, Checks failed with the failing checks' names, Checks running, Checks passed, Review requested) and every suggestion with its Review… button, then its chats, indented, as the usual chat rows with their own menus.

PRs and checks#

Claude records the PRs its chats open. For everything else Pairbar asks the GitHub CLI (gh pr list --head <branch>, for the PR's number, state, title, checks and whether a review is required) in the task's folder, in the background, a few branches at a time, and keeps the answer for 10 minutes, or 2 minutes for tasks in Working and Ready to review (where a merge or green checks matter most): the same lookup it already makes for Codex's PRs, at most 4 branches at a time. Until gh answers, the task shows what the chats recorded; without gh, there are no checks. Main branches are never looked up.

Suggestions#

Pairbar looks at each task and suggests what would move it on. The first suggestion is the row's chip; all of them are in the task's unfolded card and at the top of its menu, and the most urgent are in the banner at the top of the list.

WhenSuggestionWhat it does
a chat needs youOpen the waiting chatopens it (no plan: it's only a jump)
its PR's checks failedAsk Claude to fix the failing checks (or Codex, whichever did the work)a new chat in the task's worktree or branch, with a prompt naming the PR and the checks that failed
its PR is mergedMark done and archivemarks it done (unless its PR already did) and archives it; removing its worktree is a separate step you tick yourself
a review is requested on its PR, or it's ready to reviewGet a second opinion from Codex (or Claude: the other app)a new review chat in the other app on the same branch
no activity for 7 days (Stale after) and no PRArchive it, or Nudge: open the latest chatarchives it, or opens its newest chat

Working tasks, archived tasks and the main groups get no suggestions (a main group only Open the waiting chat).

The plan#

A suggestion opens its plan above the search field (also from the focused chat's context, in any grouping): "Here's what Pairbar will do. Nothing changes until you approve." It lists each step in plain words, numbered, with the prompt it will type in full, a tag on steps that start a chat or change files, and a warning where one applies. One click says Approve does it all at once. Then:

  • Approve (⌘↩, or Return while the sheet has the focus, as it does when it opens) runs the steps, in order (a step that fails stops the ones after it). The card then says what happened, step by step, with Undo when it can be undone.
  • Decline (Esc while the sheet has the focus) closes it. Nothing happens.

Approve and Decline are always at the bottom of the sheet: a long plan takes at most about half the sidebar and scrolls between its title and the buttons, with ↓ N more to jump to the end. Expanded task suggestions put their action below the explanation below 280 pt. Below 280 pt, the title badge and step tags use their own rows so they do not squeeze the text. The grouping and task filters temporarily hide while a plan is open; their selections return unchanged when it closes. The summary and selection action use separate rows and the buttons wrap with their full labels. Unticked steps remain readable; the checkbox shows whether a step will run.

SuggestionApproveUndo
Fix the failing checks with Claudeopens a new Claude chat in the task's worktree (or its folder when that's on the branch) with the prompt typed in: Open in Claude. Nothing is sent until you press Send in Claude— (the chat is Claude's)
Fix the failing checks with Codexopens the composer for a new Codex chat there with the prompt, so you choose its settings (fixing needs to edit files) and press Send: Open composer—
Second opinion from Codexopens a native review draft in Codex: Open in Codex. Select read-only permissions and press Send in Codex to start—
Second opinion from Claudeopens a new Claude chat on the branch with the review prompt typed in—
Mark done and archiveyour done mark and archiving; with Remove the worktree at … ticked, git worktree remove toobrings the task back, and adds the worktree back on its branch
Archive itarchives itunarchives it

When the task's branch isn't checked out where its chats ran (and it has no worktree), a fix or review plan first adds a worktree of the branch (git worktree add, next to the app's own worktrees) and starts the chat there; the plan lists that step.

Removing a worktree is never ticked for you. Pairbar refuses it, and says so in the plan, while the worktree has uncommitted changes (or its status can't be read), checks again right before removing it, never forces it, and never deletes a branch: the branch stays, which is how Undo can add the worktree back.

Fix all safe#

When two or more tasks can be tidied up (merged, or stale), the banner offers Fix all safe…: one plan with a checkbox per task, all ticked. It only takes steps that are marks in Pairbar and undone in one click: marking done and archiving merged tasks, archiving stale ones. Untick any you want to keep. Suggestions that start a chat or remove a worktree are never in it; the plan says how many it left out, for you to review on their task. With three or more tasks of one kind, they fold into one line ("Stale tasks to archive (8)", with their names and what each gets) with one checkbox for all of them, a dash when only some are ticked; click the line to tick them one by one. Select all / Select none and the count ("Approve 5 tasks", "5 of 8 selected") are by the buttons.

A task's menu#

Right-click a task or click its ⋯:

ItemDoes
Suggestedits suggestions, each opening its plan (or jumping to the chat)
Openopens its most relevant chat
Open all in basketopens its newest Codex chat and then its newest Claude chat, then docks the two side by side in the basket, Claude on the left, around the window in front
New Claude chat in this task, New Codex chat in this taskopens the composer with that app, in the task's folder (its worktree when it has one)
Open PR #…opens the PR in your browser
Mark done / Reopenmoves it to Done, or back out of it (a merged task you reopen stays open until you mark it done again)
Rename task…your own name for it, in Pairbar only: the chats keep their own titles. Use the derived name drops it
Archive task / Unarchive taskhides the task from the Tasks view; turn on Show chats hidden from Pairbar to see archived tasks again

A mark of done holds until one of the task's chats moves again: new activity brings the task back.

Archiving only hides the task. Its chats stay in the other groupings, and nothing is deleted: not its worktree, its branch or its chats.

The per-project main groups have Open and the new-chat items only.

Every item is in ⌘K too while the Tasks view shows, with the task's name: "Mark “Fix login redirect” done", "New Codex chat in “Dark mode”", "Open all of “Dark mode” in basket"; so is each suggestion ("“Fix login redirect”: Ask Claude to fix the failing checks…", which opens its plan) and Tasks: Fix all safe….

Search works in the Tasks view with the same ranking as the chat list (see Search). A task shows when its title, project or branch matches, or when one of its chats does; the words that matched are lit in its title, and it opens up and shows only its matching chats (or all of them when only the task itself matched). Sections stay, the best matches first in each (whatever the sort), and Done opens while you search. The filters still apply. ↑ ↓ and Enter move through and open the chats shown.

What it doesn't do#

  • It never acts without your Approve, and never sends a message for you: Claude opens with the prompt typed in; Codex opens a native draft. Neither starts until you press Send in the receiving app.
  • It doesn't create branches or PRs, merge, push or delete branches. The only worktrees it touches are the one a plan says it adds for a chat, and the one you tick for removal.
  • It never writes names, done marks, archived tasks or filters to Claude or Codex. They're in Pairbar's own preferences on this Mac.

Codex review actions prepare a native draft rather than running a CLI turn. Pairbar prompts you to select read-only permissions in Codex, review the message and press Send; preparing the draft does not start a review or enforce Codex permissions.