When you ask "is this PR through CodeRabbit?", cr status now answers it. The new bot_review block carries CodeRabbit's formal review state (APPROVED, CHANGES_REQUESTED, COMMENTED, DISMISSED) along with a stale flag that turns true the moment commits land after the review.
The stale flag fills a gap between the two signals already on cr status: in_progress says CodeRabbit is reviewing right now, mode == paused says CodeRabbit is waiting on a manual trigger, and stale: true says the last verdict you have is from an older head. Read them together to know whether the APPROVED stamp on the PR is worth anything.
What you get
cr statusreturnsbot_review: {state, submitted_at, commit_sha, stale}, ornullwhen CodeRabbit has never submitted a formal review.cr status --plainappends· CR approved,· CR approved (stale),· CR requested changes, or· CR requested changes (stale)to the one-liner. COMMENTED stays off because it fires on every push; DISMISSED is a rare human action and stays off for the same noise reason.- SKILL.md Step 3's zero-open-threads exit reads
bot_reviewand tailors the message. Instead of a flat "No open CodeRabbit threads on PR.", you get "✅ No open CodeRabbit threads. CodeRabbit approved the PR." or, on a stale approval, a nudge to runcr reviewfor a fresh pass.
The three "is the verdict current?" axes
| Field | True when |
|---|---|
in_progress |
CodeRabbit is re-reviewing right now |
mode == "paused" |
CodeRabbit auto-paused (active development) or user-paused, waiting on @coderabbitai resume / review |
bot_review.stale |
Commits landed after the last formal review, so the verdict's commit_sha differs from the PR's head |
Each catches a different "the stamp you see is from an older state" failure mode.
Full diff: v0.9.1...v0.10.0