Committed secret
@@ -12,1 +12,4 @@
import Stripe from "stripe";const stripe = new Stripe("sk_live_••••••••");export const charge = (amount: number) => stripe.charges.create({ amount });AI code ships fast. So do the holes. CodeCorvus checks every pull request before the merge and shows you what doesn't make sense, what leaks and what breaks.
AI writes in minutes what used to take a day. What comes with it, nobody has time to read. Happens to everyone.
@@ -12,1 +12,4 @@
import Stripe from "stripe";const stripe = new Stripe("sk_live_••••••••");export const charge = (amount: number) => stripe.charges.create({ amount });@@ -41,3 +41,3 @@
} catch (error) { logger.error("export failed", error.message); logger.error("export failed", payload.patient);codecorvusbot· nowblocking
payload.patient sends name and national ID to the logs. Log only the report id.
validated
throw error;@@ -27,2 +27,4 @@
const size = 20;const start = (page - 1) * size;return orders.slice(start, size);codecorvusbot· nowimportant
slice takes where to stop, not how many items. From page 2 on, the list comes back empty.
}@@ -8,3 +8,3 @@
export function seniorDiscount(age: number) { return age >= 60 ? 0.3 : 0; return age > 60 ? 0.3 : 0;codecorvusbot· nowimportant
The repo's rule says “60 and over”. With >, people who are exactly 60 lose the discount.
}PR #517 · Refactor billing · 47 files
A giant PR nobody reads carefully.
Corvus reads every line and only speaks up when it matters.
Corvus review
corvus -b main
Reviewed · 46s · step 12
Every file in the PR, with the repo's context. The comment lands right on the line with the problem.
Tells you why it's a problem and hands you the fix as a Commit suggestion. One click, done.
Blocking holds the merge. Important just warns. A suggestion is just a suggestion, no pressure.
Inline comments, a severity scoreboard and a badge from the AI that tried to refute the finding.
CodeCorvus review
🔴 1 blocking·🟡 2 important·🔵 3 suggestions
4 files reviewed. 1 blocking finding survived adversarial validation.
| 41 | 41 | } catch (error) { | |
| 42 | - | logger.error("export failed", error.message); | |
| 42 | + | logger.error("export failed", payload.patient); | |
| 43 | 43 | throw error; |
🔴 Patient data may end up in the logs
payload.patient includes name and national ID. Log only the report identifier.
| 42 | - | logger.error("export failed", payload.patient); | |
| 42 | + | logger.error("export failed", { report: payload.id }); |
To release with a reason: /corvus ok or /corvus fp
Merging is blocked
1 blocking finding must be fixed or released with a reason.
Before blocking, another AI hunts for a hole in the finding. Found one? No block. Didn't? It gets the “validated” badge and holds the merge.
Try the gate
Flip the switches. The merge changes instantly.
Disagree? Drop a /corvus fp with the reason and move on. It's on the record.
Merge blocked
validatedThe finding gets the “validated” badge, and the suggested fix lands on the line.
Every release, Corvus runs against a golden set of real and planted cases, and the results go public. This one's from the Grupo Mais Saúde case.
Results for this 13-case golden set; not a guarantee for every repository.
name: CodeCorvuson: [pull_request]permissions: contents: read pull-requests: write id-token: write # short-lived OIDC sessionjobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: corvus reviewReviews every PR on your runner.
$ corvus -b main⠹ 46s · step 12 · Reading src/report.js1blocking2important3suggestionsRun it before you open the PR and watch it go.
Findings pop up in your editor. In the PR, just ask: /corvus explica.
Illustrative example. Install and configure the CLI for your CI environment.
Cloud · coming soonThe same Corvus, no AI key and a dashboard.
An open source AI code reviewer that runs in GitHub Actions. It reads every pull request, comments on the line with the fix, and only blocks the merge for a critical problem that a second AI couldn't knock down.
Open source is free: bring your own AI key, or your subscription in the CLI. Cloud has no price yet; it's coming soon.
The workflow runs on your GitHub Actions runner. Code goes from there straight to the AI provider you pick.
Nope. Only a critical finding holds the merge, and only after another AI tries to knock it down. Disagree? /corvus ok or /corvus fp, with the reason, and move on.
Not for now. The CI integration targets GitHub Actions and GitHub pull requests.
Corvus ships rules for Brazilian IDs and patient data in logs, payloads and responses, and records review evidence. It doesn't replace legal advice.
One workflow, one PR, done: Corvus is already reviewing.
Open source and free. No sign-up, no catch.
codecorvusbot· nowblocking
A production key in the code. Gitleaks blocks it on the spot, and the value is redacted from the comment.