A driver has to tell three states apart: the reviewer has not run yet, it ran and said nothing, and it cannot run. scripts/pr_review.py surfaces the third for CodeRabbit only in the auto-review case, and this repository is one where auto-review never fires, so the case it does not detect is the only case this repository can produce.
The two shapes
RATE_LIMITED (line 221) is auto-generated comment:\s*rate limited by\s*(\S+?)\s*-->, matching the marker on a spontaneous notice:
<!-- This is an auto-generated comment: rate limited by coderabbit.ai -->
An explicit @coderabbitai review comment gets a different one back, observed on #1423 on 2026-09-07, three times across two heads:
<!-- This is an auto-generated reply by CodeRabbit -->
<!-- CodeRabbit review command invocation: v2:<hex> -->
<details>
<summary>⚠️ Action not completed</summary>
Review rate limited.
reply rather than comment, and the service name is not in the marker at all, so the existing pattern cannot match it and the digest reports no other_rate_limited.
Why it matters here
docs/pr-reviewer-reference.md records that CodeRabbit does not auto-review a public repository under ten stars, so on this repository every CodeRabbit review is prompted and every rate limit it reports arrives in the shape above. The digest therefore reads identically for "prompted and rate limited" and "never prompted", which is the collapse of three outcomes into one that AGENTS.md "Context and Delegation Discipline" names for a wait, applied to the digest a wait is read from.
Neither shape carries a retry time in the command-reply case. The spontaneous notice does, a Next included review available in N minutes countdown, which is separately unparsed (that part is already known and is not what this issue asks for).
What this asks for
Detect the command-reply shape as well, and surface it the same way, so a driver reading status sees that CodeRabbit was asked and could not run. Keying on Review rate limited. inside an Action not completed block from a known reviewer login is one way. Attributing the service from the commenting login rather than from the marker is another, since this marker does not name it.
Worth deciding at the same time whether a rate limit with no stated time should read differently from one with a countdown, since pr-review-conduct "Which Reviewers a Repository Actually Has" tells a driver to wait for the time a notice names, and this shape names none.
Observed while driving #1423.
A driver has to tell three states apart: the reviewer has not run yet, it ran and said nothing, and it cannot run.
scripts/pr_review.pysurfaces the third for CodeRabbit only in the auto-review case, and this repository is one where auto-review never fires, so the case it does not detect is the only case this repository can produce.The two shapes
RATE_LIMITED(line 221) isauto-generated comment:\s*rate limited by\s*(\S+?)\s*-->, matching the marker on a spontaneous notice:An explicit
@coderabbitai reviewcomment gets a different one back, observed on #1423 on 2026-09-07, three times across two heads:replyrather thancomment, and the service name is not in the marker at all, so the existing pattern cannot match it and the digest reports noother_rate_limited.Why it matters here
docs/pr-reviewer-reference.mdrecords that CodeRabbit does not auto-review a public repository under ten stars, so on this repository every CodeRabbit review is prompted and every rate limit it reports arrives in the shape above. The digest therefore reads identically for "prompted and rate limited" and "never prompted", which is the collapse of three outcomes into one thatAGENTS.md"Context and Delegation Discipline" names for a wait, applied to the digest a wait is read from.Neither shape carries a retry time in the command-reply case. The spontaneous notice does, a
Next included review available in N minutescountdown, which is separately unparsed (that part is already known and is not what this issue asks for).What this asks for
Detect the command-reply shape as well, and surface it the same way, so a driver reading
statussees that CodeRabbit was asked and could not run. Keying onReview rate limited.inside anAction not completedblock from a known reviewer login is one way. Attributing the service from the commenting login rather than from the marker is another, since this marker does not name it.Worth deciding at the same time whether a rate limit with no stated time should read differently from one with a countdown, since
pr-review-conduct"Which Reviewers a Repository Actually Has" tells a driver to wait for the time a notice names, and this shape names none.Observed while driving #1423.