Scout
Download
ScoutCode Cloud · Code Review

Every pull request, reviewed before you merge.

Scout reads each pull request on GitHub and comments on the lines that would break: bugs, security holes and slow paths. No style nitpicks, no praise, no seat fees.

Paid per review from your Scout credit · works on private repositories

OpenRetry failed payment webhooks#482
src/webhooks/payments.ts+3 −1
18export async function onPaymentFailed(event) {
19 const charge = event.data.object;
- await stripe.charges.create(retryParams(charge));
20+ await retry(3, () =>
21+ stripe.charges.create(retryParams(charge))
scoutcodebot🐛 Bug

If Stripe accepts the charge but the response times out, retry sends it again and the customer is charged twice. Give the call an idempotency key so every retry is the same charge.

Suggested change
- stripe.charges.create(retryParams(charge))
+ stripe.charges.create(retryParams(charge), { idempotencyKey: event.id })
22+ );
23 await markRetried(charge.id);
24}

Three steps, then it runs itself.

Reviews run on our servers, so they happen whether or not your computer is on.

  1. 1

    Install the GitHub app

    Add ScoutCode to your account or organization and pick the repositories it can see.

  2. 2

    Pick how hard it thinks

    Every repository starts on Medium. Choose Low or High per repository whenever you like.

  3. 3

    Open a pull request

    Scout reviews it when it’s opened or pushed to, and comments on the lines that need it.

Finds what breaks. Skips what doesn’t.

Scout is told to report real problems and nothing else. Formatting and naming are left alone unless they cause a bug, and a pull request that looks right gets a short summary with no comments at all.

  • 🐛
    Bugs

    Off-by-ones, wrong conditions, missed awaits, code that doesn’t do what the PR says.

  • 🔒
    Security

    Injection, leaked secrets, missing auth checks, unsafe input handling.

  • 💥
    Data loss

    Broken error handling, race conditions, writes that can be lost or corrupted.

  • ⚡
    Performance

    Only real problems at scale: queries in loops, quadratic work, blocking calls on hot paths.

Left outRename x to countAdd a trailing commaNice work on this PR!

Ask again with a comment.

Pushed a fix? Comment @scout review on the pull request and a fresh review lands on the latest commit. Anyone with write access to the repository can ask.

M
maya commented
Fixed the double charge. @scout review
Reviewing a41f9c2…
scoutcodebot reviewed

Retries now reuse the event ID as an idempotency key, so a timed-out charge can’t go through twice. Looks correct.

Reviewed by ScoutCode Cloud at a41f9c2.

Pay for reviews, not seats.

Each review comes out of your Scout credit, and the Code Review page lists what every one cost. Pick Low for quick passes on small repositories and High where it counts.

Recent reviewsTotal $0.000
  • api#482Retry failed payment webhooks
    MediumPosted2 comments$0.012
  • web#1290Move auth to middleware
    LowPostedNo issues$0.006
  • api#479Batch invoice exports
    MediumPosted4 comments$0.019
0
files read per pull request
0
passes on every finding: one finds it, one tries to disprove it
0
characters of diff per review, with the whole repository to read
0
approvals or blocked merges, ever

Questions

What does it cost?

Each review is paid from your Scout credit, at a price that depends on how hard it reasons. Every review shows what it cost, so there’s no subscription or seat to work out.

What does Scout see?

The whole repository at the pull request’s latest commit, not just the diff. It reads the files a change touches, searches for callers, checks commit history and CI results, follows your AGENTS.md, CLAUDE.md or .scout/review.md, and remembers how you answered its earlier comments. Lockfiles and generated files are skipped.

How does it avoid noise?

Every possible problem is checked a second time by a skeptical pass that tries to disprove it against the real code. Only what survives is posted, and you choose how sure it must be: strict, balanced or thorough.

Can it approve or block a pull request?

No. Scout posts a review with comments only, so it never approves, requests changes or gets in the way of a merge.

Who can ask for a review?

Turn on Every PR and each pull request is reviewed when it’s opened or pushed to. Anyone with write access can also comment @scout review, and you can start one from the Code Review page.

Does it work on private repositories?

Yes. The app reads only the repositories you give it, and you can remove any of them on GitHub at any time.

Get your next pull request reviewed.

Sign up, install the app on GitHub and open a pull request. That’s the whole setup.

Scout

The coding harness for any model.