Triggers
When reviews fire — PR open, new commits, mentions, draft transitions, branch filters.
A trigger is anything that causes the bot to enqueue a review for a specific PR and head SHA. There are two families: automatic triggers (PR lifecycle events sent by GitHub) and on-demand triggers (explicit user actions on a PR). Every trigger is gated by per-repo configuration before it reaches the queue.
Automatic — PR lifecycle events
Subscribed via the GitHub App's pull_request webhook. Each event is gated by triggerEvents in repo settings; absent from the list, the event is dropped at the webhook layer.
| Event | Default behaviour | How to disable |
|---|---|---|
| PR opened | Reviews on open. Both the fast description summary and the deep inline review run. | Remove 'opened' from triggerEvents. |
| New commits pushed (synchronize) | Reviews on every new commit. Posts only novel findings; existing comments are reconciled against the new diff. | Remove 'synchronize' from triggerEvents. |
| Draft marked ready for review | Off by default. When enabled, fires a fresh review when a draft transitions to ready. | Add 'ready_for_review' to triggerEvents to enable; remove it to disable. |
On-demand — explicit user actions
Triggered by an explicit gesture in the PR. These bypass the triggerEvents allowlist (a user asking for a review is its own consent) but still respect the on/off switches below.
| Action | Default behaviour | How to disable |
|---|---|---|
| @mention in a PR comment | Routed through an intent-classifier. Mentions can request a re-review, store a learning, or just ask a question — the action is decided by the model, not by keyword matching. | Set mentionEnabled to false in repo settings. |
| Re-run from the GitHub Check Run | Clicking Re-run on the bot's check run fires a fresh review on the current head SHA. Useful after a merge from base or to re-roll a flaky review. | Set checkRerunEnabled to false in repo settings, or disable checkRunEnabled to hide the check run entirely. |
Branch allowlist
branchAllowlist is a list of patterns matched against the PR's base branch. An empty list (the default) means every base branch is reviewed. A pattern ending in '*' is a prefix wildcard — the rest of the pattern must match the start of the branch name, with no constraint on path segments. Any other pattern is matched as an exact string.
| Pattern | Matches |
|---|---|
| main | Exactly the branch named main (no other branch, even main-2). |
| release/* | Any branch whose name starts with release/ — e.g. release/2026-04, release/v1.2, or release/v1/hotfix. Trailing * is a prefix wildcard, not a single-segment glob. |
| * | Every branch (a prefix match against the empty string). Equivalent to leaving the allowlist empty. |
Skip filters
Filters that suppress a review even when the trigger event fired. All four are evaluated at the webhook layer before the review is enqueued — they cost nothing.
| Filter | Default | Effect |
|---|---|---|
| skipDraftPrs | false | When true, no review fires while the PR is in draft state. Combine with adding ready_for_review to triggerEvents to review only when the PR is marked ready. |
| skipBotPrs | false | When true, PRs authored by GitHub Apps or bot accounts are skipped. Useful if dependency-bot PRs dominate the queue. |
| skipTrivialFiles | true | Trivial files (lockfiles, .md, .env, package.json, deletion-only files) are skipped from deep review. The PR still gets a review if any non-trivial file changed. |
| maxDiffChars | null (uncapped) | When set, trailing files are dropped from the diff once the running character count exceeds the cap. The review still runs on the kept files — the dropped files are simply not reviewed. Useful for capping cost on huge auto-generated PRs without skipping them entirely. |
Cancellation and supersede
Reviews are not free, so the bot is aggressive about not running stale ones. Two cancellation paths apply automatically.
- PR closed or merged — Any in-flight review for that PR is cancelled at the queue layer. Findings already posted stay; nothing new is added.
- New commit on a PR with a review in flight — The new commit's review supersedes the prior one. The prior review is cancelled; only the newest review runs to completion. This applies to both the fast summary and the deep review pipelines.
What does not retrigger
Edits to the PR title or description do not fire a review. Adding labels, requesting reviewers, and changing the milestone do not fire a review. Force-pushes that update the head SHA do fire a review (GitHub sends synchronize). Closing without merging cancels any in-flight review; reopening a closed PR does not fire a fresh review on its own — push a new commit, mention the bot, or click Re-run on the check to get a review on the reopened PR.