GitHub App · by Zephos
Stop paying for reviews your pull requests don't need.
Review Triage reads every pull request first with a decision model that costs a fraction of a cent, then labels it review-needed or review-skipped. CodeRabbit, Copilot, Bugbot and your own Actions run only on the first kind.
$5/month per GitHub organization or account with 50 triages included. Cancel any time.
How it works
A cheap first read, so the expensive one only happens when it matters.
AI code review is billed per run or per seat, and it runs on README typo fixes the same as on payment code. Review Triage sits in front and decides.
Install on your org
One GitHub App, every repo you pick. It reads pull request diffs and writes a label and a check run. It never pushes code or merges anything.
Rules first, then a small model
Code handles the obvious: docs-only changes skip, workflows and migrations always get reviewed, big diffs always get reviewed. Everything else goes to Cloudflare's Clef-flash model on Workers AI as four typed questions.
Your reviewers read the label
review-needed or review-skipped, plus a Review Triage check that shows the probabilities. CodeRabbit, Copilot, Bugbot and your Actions run only when it counts.
When in doubt, review
Built to fail open.
Skipping a review that was needed costs more than running one that wasn't. Every default leans toward review.
- Model error, timeout or missing key:
review-needed. - Low confidence about what kind of change it is:
review-needed. - Once a pull request needs review, later pushes never downgrade it.
- Rules are read from the base branch, so a pull request can't relax its own gate.
- CI workflows, SQL, migrations, auth code, env files, Dockerfiles, Terraform and package manifests are always reviewed. Add your own paths.
- The check run always passes. Review Triage never blocks a merge; it only tells reviewers whether to show up.
Gate your reviewers
Two lines of config per reviewer.
Gate on the absence of review-skipped, not the presence of review-needed. If Review Triage is ever down, nothing gets labeled and your reviewers run as usual.
CodeRabbit
Negative label match in .coderabbit.yaml.
reviews: auto_review: labels: ["!review-skipped"]
GitHub Actions
Any AI review job: Claude, Codex, your own script.
jobs: ai-review: if: ${{ !contains( github.event.pull_request.labels.*.name, 'review-skipped') }}
Copilot and Bugbot
Turn off their automatic runs. On review-needed, Review Triage requests Copilot through GitHub's API and posts the Bugbot trigger comment (if your Bugbot settings accept app triggers).
on_review_needed: comment: ["bugbot run"] request_reviewers: - copilot-pull-request-reviewer[bot]
Per-repo rules
Optional. Defaults are sensible; tune them when you've watched a few weeks of verdicts.
# .github/review-triage.yml (read from the base branch) skip_threshold: 0.25 max_changed_lines: 400 always_review: - "src/billing/**" skip_paths: - "examples/**"
Pricing
One plan. The math is on the page.
Team
per GitHub organization or account · 50 triages included · then $0.05 each · 14-day free trial
- Unlimited repositories in one GitHub organization or account
- 50 triaged pull request updates a month included
- $0.05 per triage after that, billed monthly in arrears
- Never more than $50 in a month: after 950 triages we stop triaging and every pull request gets reviewed
- Labels, a check run and optional reviewer triggers
- Per-repo rules in .github/review-triage.yml
- Cancel any time in the Stripe customer portal
What a triage costs us
| Model (input price, median latency) | worst case / triage |
| Jev 1.13 (TypeSafe): $0.042 / 1M tokens, 524.1 ms | ≈ $0.00055 |
| Clef-flash (Cloudflare, 9B): $0.09 / 1M tokens, 38.8 ms | ≈ $0.00117 |
| Clef (Cloudflare, 27B): $0.24 / 1M tokens, 209.3 ms | ≈ $0.00312 |
Worst case = the largest request we send: a diff capped at 48,000 characters, roughly 13,000 tokens. Latency: Cloudflare's published benchmark (vendor-run). Every pull request the rules can't decide goes to Clef-flash (Cloudflare, 9B). If it fails, the pull request is marked review-needed.
What a skipped review saves you
| Cursor Bugbot, average run | $1.00–$1.50 |
| Copilot code review, Lite effort | $0.05–$1 |
| Copilot code review, Balanced effort | $0.25–$5 |
At $1 per skipped Bugbot run, 5 skipped runs a month cover the plan, and a $0.05 triage pays for itself if 1 in 20 skips a run. Your skip rate depends on your repos; every verdict is in the check run, so you can count it yourself.
Sources: TypeSafe models · Clef-flash · Clef · Cloudflare Clef benchmark · Cursor Bugbot billing · GitHub Copilot code review
Questions
Fair questions.
Which model reads my diffs?
Cloudflare's Clef-flash model on Workers AI. It's a decision model: it answers typed questions (yes/no probabilities, choices with confidence, scores) instead of generating text. We ask four questions per pull request and do the arithmetic in code. The classifier sits behind an interface, so we can switch models without changing your setup.
Do you store my code?
No. Diffs go to the classifier (Cloudflare Workers AI) and are not kept by us. We store the verdict, the reason, token counts and cost. Cloudflare states it doesn't read, store or train on Clef requests or responses.
What if it skips something that needed a review?
Every default leans toward review, and the thresholds are yours to tighten in .github/review-triage.yml. Add any path to always_review and it will never be skipped. Human reviews and required approvals are untouched.
Does it block merges?
No. The Review Triage check always concludes successfully. It's a signal for other reviewers, not a gate on your branch.
What counts as a triage?
One fresh verdict on a pull request: when it's opened, reopened, marked ready, or gets a new push. Repeat verdicts on a pull request that already needs review, and anything we label review-needed because the classifier failed, are free. 50 a month are included; after that it's $0.05 each, billed with the next invoice. The account page shows the running count.
Is there a limit on what I can be charged?
Yes: $50 a month. After 950 triages in a billing period we stop triaging until the next one, and every pull request is labelled review-needed, so your reviewers run as if Review Triage weren't installed. The cap is enforced in the app and again in the Stripe price, where triages past 950 cost $0.
How do I cancel?
Sign in, open Manage billing, and cancel in the Stripe customer portal. Uninstalling the GitHub App stops triage immediately.