Pull requests
Open a pull request straight from a session's branch and watch its status — open, merged, or closed, plus CI — without leaving Plexus.
GitHub and Bitbucket are both supported. Connect either one from Settings → Git providers — see Connections.
Before you start
PR features need a connected git provider. Open Settings → Git providers and click Connect for GitHub or Bitbucket — a one-click sign-in, no CLI required. Plexus stores the resulting token in your OS keychain and talks to the provider directly from your machine; the token is never sent to us. See Connections.
A session also has to be on a named feature branch with at least one commit beyond its base. Sessions on the project's main branch can't open a PR.
Create a pull request
- On the session row, open the ⋯ menu and choose Create PR.
- Fill in the title, an optional description, and an optional base branch.
- Click Create.
Plexus pushes the branch to origin, opens the PR on your provider (GitHub or Bitbucket), and the session's branch icon turns green.
A dirty worktree
If the worktree has uncommitted changes when you create a PR, Plexus doesn't fail — it shows a commit-then-PR dialog. Enter a commit message (or accept the default WIP on <branch>), and Plexus commits, pushes, and opens the PR in one flow.
Auto-generate the title and description
Turn on Write pull request descriptions with AI (Settings → Git & PRs, default off) to have the agent draft the PR title and description from the diff when the dialog opens. It spends an AI turn, and you can still edit the draft before submitting.
Track PR status
Once a PR exists, the branch icon next to the session reflects its state at a glance:
| Icon color | Meaning |
|---|---|
| Gray | No PR (or the PR was closed without merging) |
| Green | PR is open |
| Purple | PR is merged |
Hover the icon for details, including the aggregate CI status (pending, passing, or failing) from the provider's checks (GitHub check runs / Bitbucket pipelines). Click a green or purple icon to open the PR in your browser.
Status is polled automatically — when you focus the window, on a periodic refresh, and when the agent finishes a turn. You can also refresh on demand from the session ⋯ menu. CI status updates alongside the PR, so a very fast pipeline may briefly show "pending" until the next refresh. For how the branch and activity indicators relate, see Session status.
A one-off network hiccup is ignored quietly, but if the status genuinely can't keep updating, Plexus tells you once, with the reason, rather than leaving the icon silently stale.
If the reason is a credentials or rate-limit problem, Plexus also slows that session's automatic polling down, because with a rate limit it's the repeated requests themselves that keep it in place. After you reconnect, automatic updates resume within a few minutes — or hit Refresh in the session ⋯ menu for an immediate answer.
Review comments
Once the PR exists, its review conversation lives on GitHub or Bitbucket — and the Review tab shows it. A toggle in the Review header reveals the PR's threads under the diff lines they're about, with everything that can't be placed on the current diff (PR-level comments, review verdicts, outdated threads) collected in a section of its own — one that starts collapsed, with a count and any review verdict in its header. From there you can reply, resolve a thread when the provider allows it, post a new comment on a line, and hand one thread — or all of them — to the agent as a prompt.
Your own inline notes can travel the other way while the PR is open: publish one — or the session's unresolved set in one go — and it's posted as an inline comment on the same line under your provider account, replacing the local note.
Unlike the status above, the conversation is not polled. Plexus fetches it when you open the Review tab, when the window regains focus, and when you click Refresh — never in the background. See Pull request comments for the full flow and its limits.
After the PR is created
Two optional behaviors keep sessions tidy as PRs progress:
- Auto-rename from PR title — Rename sessions to match their pull request (Settings → Git & PRs, default on) keeps the session name in sync with the PR title. The underlying git branch keeps its original name.
- Auto-teardown on merge — Clean up a session when its pull request is merged (Settings → Git & PRs, default off) tears the session down when Plexus detects its PR has merged. It honors your When you remove a session setting, so it archives or deletes per your configuration — but it never asks. Nobody is at the keyboard when a background check notices the merge, and switching this on is the confirmation, so Ask each time deletes here too. Whether the branch goes with it is inherited from the Also delete the local branch switch you last used when removing a session by hand, and only ever applies to a
plexus/…branch Plexus cut — see Archive vs. remove. Plexus only does this for a pull request it saw while it was open, and a message tells you afterwards what was removed.
Configure all of these in Settings.
With When you remove a session at its default of Delete immediately, this runs a forced worktree removal in the background: a merge detected while the agent is mid-turn stops the agent and removes the worktree with anything uncommitted still in it, and there is no dialog to cancel. Set When you remove a session to Archive (keep a restorable copy) if you want the automatic cleanup to keep everything on disk.