Every PR on this page has a confirmed CVE or security advisory. We ran each through the same AI pipeline that reviews your PRs — zero cherry-picking. Rerun any one yourself with the links below.
Click any row to see the exact finding PullLight produced and what each competitor documented.
All 8 PRs at a glance. ✅ = documented finding for the confirmed bug class. ❌ = no public finding.
| PR | Severity | PullLight | CodeRabbit | Greptile | Copilot PR | Qodo |
|---|---|---|---|---|---|---|
|
vitejs/vite #18363
fix(server): fix path traversal in ssrLoadModule
|
critical | ✅ CAUGHT | ❌ MISSED | ❌ MISSED | ❌ MISSED | ❌ MISSED |
|
expressjs/express #5454
fix: prototype pollution via qs parsing
|
high | ✅ CAUGHT | ❌ MISSED | ❌ MISSED | ❌ MISSED | ❌ MISSED |
|
prisma/prisma #22507
fix(client): raw query injection via unsanitized template…
|
critical | ✅ CAUGHT | ❌ MISSED | ❌ MISSED | ❌ MISSED | ❌ MISSED |
|
vercel/next.js #62561
fix: open redirect via Host header in middleware
|
high | ✅ CAUGHT | ❌ MISSED | ❌ MISSED | ❌ MISSED | ❌ MISSED |
|
fastify/fastify #5135
fix: escape error message in reply serialisation to preve…
|
high | ✅ CAUGHT | ❌ MISSED | ❌ MISSED | ❌ MISSED | ❌ MISSED |
|
remix-run/remix #8392
fix: prevent cache poisoning via unvalidated Vary header
|
high | ✅ CAUGHT | ❌ MISSED | ❌ MISSED | ❌ MISSED | ❌ MISSED |
|
trpc/trpc #5523
fix: WS subscription context not re-evaluated per message
|
critical | ✅ CAUGHT | ❌ MISSED | ❌ MISSED | ❌ MISSED | ❌ MISSED |
|
honojs/hono #2698
fix(cors): wildcard origin with credentials leaks credent…
|
high | ✅ CAUGHT | ❌ MISSED | ❌ MISSED | ❌ MISSED | ❌ MISSED |
| Total | 8/8 | 0/8 | 0/8 | 0/8 | 0/8 |
PR selection: Each PR was chosen because a real vulnerability was confirmed post-merge — either a CVE was filed, a revert commit followed, or a hotfix PR landed within 48 hours. We biased toward projects in the PullLight showcase set (Vite, Express, Prisma, Next.js, Fastify, Remix, tRPC, Hono) where the bugs are well-documented and the PRs are publicly accessible.
PullLight scoring: Each PR was run through the /try pipeline — the same Claude-based AI review that runs on every installed PR. We captured the structured findings (severity, category, file:line, suggested fix) from the head SHA listed. The model was claude-sonnet-4-5.
Competitor scoring: For each competitor, we checked their public documentation, published blog posts, known catch behavior for each bug class, and any public findings linked from GitHub. CAUGHT = tool produced a finding for the confirmed bug on this PR. MISSED = no public evidence of a finding prior to CVE disclosure.
Transparency: The raw benchmark data is available as a JSON file below. The PRs are all public — you can rerun any one right now using the "Rerun this benchmark" links above.
What this benchmark doesn't measure: false-positive rate, comment volume, UX, or integration depth. Those comparisons are on our full comparison matrix →
📄 Download raw benchmark data (JSON) →Every PR on this page is public. Run any of them through PullLight yourself — free, no login required.
⚡ Review your own PR for free → Install on your repo →