Reviewing as a team
When several teammates run Limn, GitHub keeps the score: one review per commit per provider, and one list of findings.
On this page
Every person runs their own Limn on their own computer, signed in to GitHub as themselves. There is no Limn server and no shared account. GitHub is the only meeting place: each Limn reads what the others wrote there, and writes only as its own person. This page explains how several Limns share the review work without repeating each other.
#Three rules
- A Limn only knows what reached GitHub. A review someone kept in Limn is invisible to the team.
- Every write is a person's on GitHub, and Limn's inside Limn. A Limn post is that person's review, so GitHub's own rules apply. Inside Limn it is shown as the bot "Limn · alex", never as alex, so it never counts as alex's own action.
- Each Limn decides alone, from what it reads. Nothing coordinates two machines except the status lines and hidden markers they leave on GitHub.
Costs, settings, drafts, reviews kept in Limn and chats never travel between Limns. Code goes only to the model provider each person chose.
#Sharing the work
On dana’s Open PRs: Reviewed by @sam
The rule is one automatic review per model per commit, across the whole team. Each automatic review posts a status line on the pull request's latest commit, limn/review-claude or limn/review-codex: "alex is reviewing with Claude", then "alex reviewed · 3 comments". Another teammate's Limn reads the line and skips that model on that commit. A different model still reviews it. This is always on; there is no setting.
On your own pull request, a teammate's Limn reviewing it with Claude is enough: your Limn runs nothing at that commit, not even Codex. Their findings show in your AI Review tab, and your replies are still judged. On a teammate's own pull request, their Limn never holds the commit, so your Claude still reviews it and does not post again what they already posted.
- If two Limns claim at nearly the same moment, the earlier claim wins and the other stands down.
- A review that does not finish frees its line, so another Limn can take the commit.
- A claim that is not renewed lapses after 25 minutes, for example when a laptop is closed mid-review.
- A new commit starts the race again.
- Claiming needs write access to the repository. Without it, GitHub refuses the line and Limn reviews without one. Nothing is shown, and the review is not held up.
Only automatic reviews claim. A review you start yourself never waits and is never refused. The tab names a teammate who is reviewing, or has reviewed, the same commit with the same model ("Robin Dunn is reviewing this commit with Claude"), and your run goes ahead. When you post it, your Limn writes the "reviewed" line, so teammates' automatic reviews step aside for that model.
#What you see when your Limn steps aside
- On the AI Review tab: "Robin Dunn is reviewing this commit with Claude", or "…reviewed this commit with Claude · 4 comments". A teammate's live claim has a Clear button, with a confirm, for a claim that looks stuck.
- On Open pull requests: "Being reviewed by @robin" or "Reviewed by @robin".
- No run is recorded and no daily allowance is spent. Your Limn looks again later, or at once on a new commit.
- Replies on your own Limn's findings are still judged: your Limn runs a replies pass at that commit. See Replies to findings.
#A teammate's review in your Limn
A teammate's posted Limn review is brought into your AI Review tab as their review, read-only. Each finding says who raised it: "You", "Robin", or "You and Robin" when both found the same point, which is shown once. You cannot reword or ignore their finding. The one thing you can do is Post reminder, which posts the point again as you, linked to the first comment. On your own pull request, no finding offers it.
Where this PR stands lists the verdict GitHub holds for each person (approved, changes requested, withdrawn), or their newest review when GitHub holds none, with the date, time and commit. An approval from a replies check counts. If a teammate runs a much older Limn, one line suggests they update.
#Author and reviewer
| Author's Limn (own pull request) | Reviewer's Limn | |
|---|---|---|
| Approve or request changes | Never: always a comment. | Yes, within the workspace rules. |
| Holds the commit against others | No: other Limns ignore its lines. | Yes. |
| Resolves its own fixed threads | Yes, on by default. | Yes, on its automatic runs while posting is on. |
| Auto AI Fix | Optional, off by default. | Never on someone else’s pull request. |
| Resolves a teammate’s thread | Never. | Never. |
A reviewer's Limn follows up the author's own Limn review when it is the latest one, and posts nothing the author already raised. When the reviewer's posted review finds one of the author's Limn findings fixed at the latest commit, the author's Limn resolves that thread ("Addressed in 1234abc (checked by Alex's Limn)"). The author does nothing. Limn acts on such a word only when it comes from a person with write access to the repository.
#A teammate's verdict on your own review
Your Limn's review of your own pull request can never approve it: GitHub does not let an author approve. So a teammate's Limn picks it up and gives the verdict. Their Limn queues it ahead of its other automatic reviews, and first when your Limn would have approved. One teammate takes it, through the usual status line on the commit. If that teammate's Limn stops renewing its line for 25 minutes, another teammate's Limn takes over.
- On your side, the Waiting on others row says Waiting for a teammate’s Limn to review. When the teammate's review lands, its verdict shows in Where this PR stands. Limn says this only when a teammate's Limn has run automatic reviews in the workspace in the last two weeks. It cannot see your teammates' settings, so otherwise it says nothing.
- On the teammate's side, the AI Review tab says, for example, Queued: needs a verdict (alex’s own review would approve).
- It needs auto review on in the teammate's workspace. It counts toward their daily limit and asks their spend budget, like every automatic review.
- Your Limn "would approve" only when your own Approve or request changes for me is on and your workspace lets Limn approve at the pull request's impact level.
- The teammate's Limn posts the verdict even when its Which PRs setting is the default (their own PRs, and PRs they are asked to review or took part in).
#Lifting "changes requested"
Your own Limn's Request changes is lifted by your next run that finds no blocker. A teammate's Limn Request changes is lifted the same way, with no setting: this is how Limn works. Every review a Limn posts says, in its hidden marker, that a teammate's Limn may lift it, unless its comments do not show every blocker behind it.
When your run at the latest commit finds every point behind their block fixed and no blocker of its own, your Limn posts its review and dismisses theirs, once, with a message such as "Limn (alex) checked all 3 points are addressed at 70cc9b5." Whether your review approves is decided by the usual rules, including the impact boxes. A review someone wrote by hand is never dismissed. Dismissing needs write access, and branch protection can restrict it.
When the teammate's Limn is away
A review from an older Limn, or one whose comments do not show every blocker, does not carry that word. Your Limn still dismisses such a teammate's Limn Request changes when all of these hold: your review approves the latest commit; their block came from their Limn's automatic run; every point in every Limn review of theirs on the pull request is fixed at that commit; their Limn has not reviewed or claimed that commit; and they have done nothing on GitHub that Limn has seen for 4 hours, by hand or through their Limn. A review they sent with Post is never dismissed this way. The message says why, for example "Limn (alex) checked all 3 points are addressed at 70cc9b5. robin's Limn has not reviewed it and has been away for 5 hours." It needs Approve or request changes for me, and runs only on an automatic review or Review and post. It happens once per review and is never retried.
#Still-open points on GitHub
When a posted review finds an earlier comment valid and not addressed, it says so on the thread with one Still open: reply per commit. A thread resolved without a fix is reopened once, ever; after that, a warning or blocker gets one new thread that links the old one. Just before writing, Limn reads the thread on GitHub again, so two Limns do not both reply. The author sees a "Robin's Limn: still open" pill on the thread and a card in My Turn. See Follow-up reviews.
#Whose turn it is
An unanswered thread waits on the pull request's author. A review request waits on the person asked, until they review in person: a review only their Limn posted still leaves it in their My Turn. Nothing Limn does for you counts as your own action. See My Turn.
#What Limn never does
- Approve or request changes on your own pull request.
- Override a review you gave by hand, or anything sent with the Post button.
- Withdraw an approval because of a push alone.
- Edit or delete a teammate's comment, or resolve a teammate's or a person's thread.
- Reopen a thread more than once, or push back more than once on a thread.
- Retry a GitHub write that failed, except its own status lines and a refused verdict, which is sent once more as a plain comment.
- Show a teammate anything that was kept in Limn.