Code review that explains the change.

IronBee reviews every GitHub pull request, writes a summary into its description, comments on the line with a suggested fix, and follows up after every push.

See a PR summary

[ How it works ]

How IronBee reviews every pull request

Install it once. Every pull request after that is read, reviewed on its lines, and followed in IronBee after every push.

See the settings
From install to the console
IronBee AIGitHub App

Repository access

All repositories
Only select repositories
northpine/storefront
Install
Apply coupons at checkout #482
Opencoupons into main
IronBee Reviewreading
  • 3 changed files+47 −6
  • Description and linked issue
  • 4 rules, 2 memories, 1 skill
IronBee Review3 findings
CriticalAny user can read any orderorders.ts:18
HighA declined card still places the orderpay.ts:27
MediumThe coupon never reaches the cardcart.ts:43
Merge blocked at medium
Pull requestsstorefront
#482 CouponsChanges requested
#481 Image cacheReviewing
#480 RefundsChanges requested

Every finding shows its work

The severity, the claim, the line and the fix, with a diagram when the bug is about order, state or a path.

High

Correctness

Example
src/checkout/pay.ts:27
27-await placeOrder(order)
27+if (charge.ok) await placeOrder(order)
ironbeeA declined card still places the orderFocus area Correctness
See comment
Critical

Security

Example
src/api/orders.ts:18
18-const order = await db.orders.find(id)
18+const order = await db.orders.find(id, { owner: user.id })
ironbeeAny signed-in user can read any orderFocus area Security
See comment
Medium

Correctness

Example
src/checkout/cart.ts:43
43-await charge(order.id, subtotal)
43+await charge(order.id, shown)
ironbeeThe coupon never reaches the cardFocus area Correctness, with a diagram
See comment

[ In the pull request ]

It explains the change, then listens

A summary in the description shows the approver what changed and how it flows. In the thread it answers questions and comes back after every push.

ironbeeSummaryfor 36804e5

3 files, +47 −6, 2 commits

What changed
  • Checkout applies a coupon before the charge
  • An expired coupon is refused with a message
Flow
Where to look

src/checkout/cart.ts:431 medium finding

[ PR summary ]

A walkthrough in the description

IronBee adds its own section to the end of the pull request description, or a pinned comment if you prefer: what changed by area, sequence and state diagrams, where to look, a reading order and what is missing. After a push it keeps what still holds and says what changed since.

northpine/web #318src/auth/session.ts
  1. ironbeebotreviewed 3f2a1c7

    Highcorrectness

    The refresh runs after the expiry check, so a request in the last second still carries the old token.

    Happens when: a request starts less than one second before expiresAt.

    Suggested change

    - if (expiresAt - now < 0) {
    + if (expiresAt - now < REFRESH_WINDOW_MS) {
    Commit suggestion

    Rule no-stale-token: a request is never sent with a token inside its refresh window.

  2. northpine-devreplied 4m ago

    Why high? The interceptor refreshes on a 401.

  3. ironbeebotreplied 4m ago

    The interceptor runs on a response; this request is already sent with the old token, and the retry in lib/net stops after one 401.

  4. ironbeebotafter the next push

    Looks addressed in 9c4d2e1: the refresh now runs before the expiry check. Resolved

[ In the thread ]

It answers, then comes back

Ask why and it answers in the thread. When a push addresses the finding, it says so and resolves the thread. A thumbs down keeps a finding out of later reviews.

[ Settings ]

Settings that shape every review

Set them once for the account; any repository can change what is different. The example comment follows them.

See pricing
Change a setting, the comment follows
Review depthAuto picks the depth by the size of the change.
Comment on findings ofBelow it, a finding is listed in the review, not lost.
Pull request summaryA walkthrough of the change for the approver.
Suggested fixesA ready-to-apply fix where one is clear.
DiagramsOn a finding about order, state or a path.
Block merging whenThrough IronBee's check, where branch protection requires it.
Learn from the team's reactionsA thumbs down means don't say this again.

Example commentIt follows the settings beside it.

Reviewed on push 3f2a1c7, Auto

Pull request description

Summary of this pull request

Refreshes the session before the token expires and moves the retry into lib/net.

ironbeebot

Highcorrectness

The refresh runs after the expiry check, so a request in the last second still carries the old token.

How it happens

  1. expiry check
  2. send request
  3. 401

Suggested change

- if (expiresAt - now < 0) {
+ if (expiresAt - now < REFRESH_WINDOW_MS) {

2 1teaches the next review

IronBee Review, action required3 findings: 1 high, 1 medium, 1 low

[ And verification ]

Test every preview, too

Verification opens the pull request's preview deployment, uses it like a customer and reports what broke. Same GitHub App, same credits, its own check.

FailedCoupon, then paypreview of #4821m 12s7 steps2 requests

Steps

  1. 1Open the cart0.8s
  2. 2Click "Apply coupon"0.3s
  3. 3Fill the code with SAVE200.4s
  4. 4POST /api/coupons200
  5. 5Read the total: 64.000.2s
  6. 6Click "Pay"0.3s
  7. 7POST /api/charge amount 80.00200

SummaryChecks2Issues1Suggested fixes1

ISSUEThe card is charged 80.00 while the page shows 64.00.

Root cause: src/checkout/cart.ts:43 passes the subtotal to charge(), not the total after the coupon.

FIXCharge the total the customer saw.

charge(order.id, shown)

CHECKSAVE20 is accepted and the total drops to 64.00.
IronBee Review 3 findings, 1 critical
Details
IronBee Verification 3 of 6 paths failed on the preview
Details

Read only where it runs

Each review sees one repository, and nothing else.

Privacy policy
01

A sandbox per review

Each review runs in its own sandboxed machine with a short-lived, read-only token for that one repository.

02

What it learns stays with you

Replies, reactions and memories shape the reviews of their own project only. Nothing one team teaches it reaches another account.

03

Comments, never approvals

It posts its review as a comment and never approves. It blocks a merge only through its check.

FAQ

Does IronBee approve pull requests?

No. It posts its review as a comment and never approves. It blocks a merge only through its check, and only where branch protection requires that check.

What goes into the PR summary?

What changed, grouped by area and linked to the lines; sequence, state or path diagrams of the flow; where to look, with the review findings; a reading order; and what is missing, such as tests left unchanged. It sits at the end of the description, or in a pinned comment, and is rewritten after every push.

Can it draw sequence diagrams?

Yes. The PR summary draws the flow of the change as sequence, state or path diagrams, and a finding about order, state or a path carries a small diagram of how it happens. Both are on by default.

Does it read CLAUDE.md, AGENTS.md or Cursor rules?

Yes, in place, without copying them. It also reads REVIEW.md and Copilot's instructions file.

How much does a review cost?

Credits by the size of the change and the depth, from the pool verification also uses: 100 credits a month on Free, 100 per seat on Team. Failed reviews, answers and rechecks are free.

Which Git hosts does it support?

GitHub today. GitHub Enterprise Cloud, GitLab and Bitbucket are planned.

Can I ask for another review?

Comment @ironbee review, or @ironbee full review to start over.

What is AI code review?

A reviewer that reads a pull request's changes and comments on the problems it finds, the way a teammate would, before anyone merges.

Can't find your answer? Talk to us.