{"licence":"CC BY 4.0","licenceUrl":"https://creativecommons.org/licenses/by/4.0/","citation":"Ambera Forge, AI code review, September 2026","report":"https://forge.ambera.app/sectors/ai-code-review/2026-09","note":"Counts are over the companies Forge read in this sector during the month, each with its denominator. Themes and capabilities are the words the reading listed; a theme with no declared match shares no word with anything a company declares, which is not the same as no product doing it. Carried market-size figures are their publishers’ and are not redistributed here.","version":1,"monthKey":"2026-09","sector":{"slug":"ai-code-review","name":"AI code review","scope":"Bots that read a pull request and comment on it before a person does."},"coverage":{"entities":7,"readEntities":7,"neverRead":0,"readInMonth":7,"lastReadAt":"2026-09-30T19:18:09.995Z"},"withheldReason":null,"declaredCapabilities":[{"name":"Agentic Toolbox (CLI skills for coding agents)","listing":1,"denominator":6,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"AI code review (Graphite Agent)","listing":1,"denominator":6,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"AI code review on pull/merge requests","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"AI-powered PR code review (GitHub/GitLab)","listing":1,"denominator":6,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"automated test generation alongside review","listing":1,"denominator":6,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"Business requirements alignment (tickets/specs)","listing":1,"denominator":6,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"CI failure fixes","listing":1,"denominator":6,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"CLI and VS Code extension","listing":1,"denominator":6,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"CLI-based pre-push review","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"Code governance / AI-tool oversight for leaders","listing":1,"denominator":6,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"Codebase Q&A chat","listing":1,"denominator":6,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"Coding standards enforcement (Rules system)","listing":1,"denominator":6,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"Cross-file bug detection","listing":1,"denominator":6,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"Cross-repo codebase context engine","listing":1,"denominator":6,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"custom pre-merge checks","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"Custom RBAC / Custom Roles API","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"dependency and security scanning add-ons (Snyk)","listing":1,"denominator":6,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"docstring generation","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"Enterprise SSO and BYOLLM","listing":1,"denominator":6,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"Full-codebase semantic graph indexing","listing":1,"denominator":6,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"GitHub integration","listing":1,"denominator":6,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"IDE integration (VS Code, Cursor, JetBrains)","listing":1,"denominator":6,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"IDE-level inline AI code analysis (Cursor Bugbot, Copilot review)","listing":1,"denominator":6,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"IDE/VS Code extension review","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"integrated static analysis (Biome, ESLint, Ruff, Pylint, golangci-lint, Clippy,","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"Issue Planner (issue-to-coding-plan generation)","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"MCP-based context pulling from Slack, Confluence, Notion, Datadog, Sentry, wikis","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"merge conflict resolution","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"Multi-agent pull request review","listing":1,"denominator":6,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"multi-repository analysis","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"one-click fix suggestions","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"One-click fixes","listing":1,"denominator":6,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"per-committer or free solo-tier pricing","listing":1,"denominator":6,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"Per-seat pricing with free tier for open source","listing":1,"denominator":6,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"PR history indexing for issue relevance","listing":1,"denominator":6,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"PR review automation (GitHub/GitLab)","listing":1,"denominator":6,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"PR summarization with architecture/sequence diagrams","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"PR-level AI review (CodeRabbit, Qodo, Graphite Diamond)","listing":1,"denominator":6,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"Pre-PR / local IDE review","listing":1,"denominator":6,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"provenance/attestation checklists","listing":1,"denominator":6,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"REST API for internal tooling","listing":1,"denominator":6,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"Review automations/customizations","listing":1,"denominator":6,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"Security scanning (secrets, SAST, IaC, dependencies, licenses)","listing":1,"denominator":6,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"self-hosted/privacy-first review (PR-Agent)","listing":1,"denominator":6,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"Self-hosting / air-gapped deployment","listing":1,"denominator":6,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"Sentry.io production issue monitoring/auto-fix","listing":1,"denominator":6,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"SOC2 Type II / SSO/SAML","listing":1,"denominator":6,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"Stack-aware merge queue","listing":1,"denominator":6,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"Stacked pull requests","listing":1,"denominator":6,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"structured review/evidence packets","listing":1,"denominator":6,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"support for GitHub, GitLab, Azure DevOps, and Bitbucket","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"Unified PR inbox","listing":1,"denominator":6,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"unit test generation","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"Unlimited repositories on free tier","listing":1,"denominator":6,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"usage-based pricing add-ons","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"Zero code retention / no training on customer code","listing":1,"denominator":6,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"zero data retention post-review / end-to-end encryption","listing":1,"denominator":6,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]}],"complaintThemes":[{"name":"agent PRs receiving little to no human review","listing":1,"denominator":7,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"Auto-publishes findings without human approval step","listing":1,"denominator":7,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"comment volume / nitpick flooding","listing":1,"denominator":7,"entityIds":["cmuohfj6d001aofmyxe15xg7l"]},{"name":"confidence scores perceived as unreliable","listing":1,"denominator":7,"entityIds":["cmuohfj6d001aofmyxe15xg7l"]},{"name":"Cost seen as above average vs. competitors (e.g., CodeRabbit)","listing":1,"denominator":7,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"cross-tool false-positive rate disputes","listing":1,"denominator":7,"entityIds":["cmuohfj6d001aofmyxe15xg7l"]},{"name":"Diff-level analysis, not full-repo context","listing":1,"denominator":7,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"difficulty canceling / reported billing friction on cancellation","listing":1,"denominator":7,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"false positives eroding trust","listing":1,"denominator":7,"entityIds":["cmuohfj6d001aofmyxe15xg7l"]},{"name":"GitHub-only integration","listing":1,"denominator":7,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"Learning curve for stacked PR workflow","listing":1,"denominator":7,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"Limited to changed-file diffs, weak whole-codebase reasoning","listing":1,"denominator":7,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"Loss of a permanent free tier (trial-only)","listing":1,"denominator":7,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"loss of code comprehension when 'vibe' reviewing","listing":1,"denominator":7,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"No Bitbucket or Azure DevOps support","listing":1,"denominator":7,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"No free tier for open source","listing":1,"denominator":7,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"no published starting price for enterprise self-hosting","listing":1,"denominator":7,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"Only supports Claude for review model (per some comparison sources)","listing":1,"denominator":7,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"Per-review overage pricing breaks down for agentic/high-PR-volume workflows","listing":1,"denominator":7,"entityIds":["cmtshhbt80002psp7vq7tcgnh"]},{"name":"Pricing complexity from credit-based metering","listing":1,"denominator":7,"entityIds":["cmuohfj0q0016ofmywjps3i00"]},{"name":"Python-centric, weaker on other languages","listing":1,"denominator":7,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"real issues buried among noise","listing":1,"denominator":7,"entityIds":["cmuohfj6d001aofmyxe15xg7l"]},{"name":"Requires cultural/workflow shift to adopt","listing":1,"denominator":7,"entityIds":["cmuohfixv0014ofmy2dwmaj7o"]},{"name":"Restricted platform support (GitHub/GitLab only)","listing":1,"denominator":7,"entityIds":["cmuohfj3e0018ofmyhbl5d8f6"]},{"name":"review bottleneck from AI-inflated PR volume","listing":1,"denominator":7,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"review comment noise/volume without severity tuning","listing":1,"denominator":7,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"review comment volume / noise","listing":1,"denominator":7,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"reviewers get disabled or ignored ('cry wolf')","listing":1,"denominator":7,"entityIds":["cmuohfj6d001aofmyxe15xg7l"]},{"name":"trusting AI to review AI-generated code","listing":1,"denominator":7,"entityIds":["cmuohfj90001cofmy66ga0ptx"]},{"name":"unpredictable per-PR-author billing due to fluctuating active developer counts","listing":1,"denominator":7,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"usage-based add-on costs billed separately from seat pricing","listing":1,"denominator":7,"entityIds":["cmtkp2v5a0003psp7ipsx1w70"]},{"name":"weakened tests masking broken changes","listing":1,"denominator":7,"entityIds":["cmuohfj90001cofmy66ga0ptx"]}],"whiteSpace":{"rows":[],"unansweredCount":0,"belowFloor":32},"entities":[{"id":"cmuohfj0q0016ofmywjps3i00","slug":"qodo","name":"Qodo","kind":"competitor","site":"https://qodo.ai","lastWatchedAt":"2026-09-30T19:18:09.995Z","addedBy":"definition"},{"id":"cmtkp2v5a0003psp7ipsx1w70","slug":"coderabbit","name":"CodeRabbit","kind":"competitor","site":"https://www.coderabbit.ai","lastWatchedAt":"2026-09-02T22:55:45.450Z","addedBy":"definition"},{"id":"cmtshhbt80002psp7vq7tcgnh","slug":"greptile","name":"Greptile","kind":"competitor","site":"https://www.greptile.com","lastWatchedAt":"2026-09-14T14:35:10.731Z","addedBy":"definition"},{"id":"cmuohfixv0014ofmy2dwmaj7o","slug":"graphite","name":"Graphite","kind":"competitor","site":"https://graphite.com","lastWatchedAt":"2026-09-30T19:18:09.995Z","addedBy":"definition"},{"id":"cmuohfj6d001aofmyxe15xg7l","slug":"noise-from-review-bots","name":"Noise from review bots","kind":"discourse","site":null,"lastWatchedAt":"2026-09-30T19:18:09.995Z","addedBy":"definition"},{"id":"cmuohfj90001cofmy66ga0ptx","slug":"small-teams-merging-agent-written-code","name":"Small teams merging agent-written code","kind":"segment","site":null,"lastWatchedAt":"2026-09-30T19:18:09.995Z","addedBy":"definition"},{"id":"cmuohfj3e0018ofmyhbl5d8f6","slug":"sourcery","name":"Sourcery","kind":"competitor","site":"https://sourcery.ai","lastWatchedAt":"2026-09-30T19:18:09.995Z","addedBy":"definition"}],"entrants":{"placed":[{"id":"cmuohfj0q0016ofmywjps3i00","name":"Qodo","kind":"competitor","addedBy":"definition","addedAt":"2026-09-30T19:12:26.410Z"},{"id":"cmtkp2v5a0003psp7ipsx1w70","name":"CodeRabbit","kind":"competitor","addedBy":"definition","addedAt":"2026-09-30T19:12:26.138Z"},{"id":"cmtshhbt80002psp7vq7tcgnh","name":"Greptile","kind":"competitor","addedBy":"definition","addedAt":"2026-09-30T19:12:26.189Z"},{"id":"cmuohfixv0014ofmy2dwmaj7o","name":"Graphite","kind":"competitor","addedBy":"definition","addedAt":"2026-09-30T19:12:26.308Z"},{"id":"cmuohfj6d001aofmyxe15xg7l","name":"Noise from review bots","kind":"discourse","addedBy":"definition","addedAt":"2026-09-30T19:12:26.605Z"},{"id":"cmuohfj90001cofmy66ga0ptx","name":"Small teams merging agent-written code","kind":"segment","addedBy":"definition","addedAt":"2026-09-30T19:12:26.697Z"},{"id":"cmuohfj3e0018ofmyhbl5d8f6","name":"Sourcery","kind":"competitor","addedBy":"definition","addedAt":"2026-09-30T19:12:26.502Z"}],"sighted":[]},"entries":{"observed":37,"inference":2,"sourceBroken":2,"byTag":[{"tag":"FACT","count":21},{"tag":"COMPANY CLAIM","count":9},{"tag":"USER OPINION","count":7}],"byCategory":[{"category":"PRODUCT","count":11},{"category":"PRICING","count":10},{"category":"DISCOURSE","count":7},{"category":"FUNDING","count":4},{"category":"POSITIONING","count":3},{"category":"COMPLAINT","count":2}]},"pricing":{"readEntities":7,"withPricing":5,"changesInMonth":10,"companiesChangedInMonth":5,"withheldReason":null,"companies":[{"entityId":"cmuohfj0q0016ofmywjps3i00","name":"Qodo","kind":"competitor","site":"https://qodo.ai","changesInMonth":1,"latest":{"claim":"Multiple third-party pricing trackers report Qodo moved away from a flat per-seat model in 2026 toward a credit-metered, usage-based structure (14-day trial, self-serve Pro Team, custom Enterprise) with no permanent free tier, differing from the earlier Free/Teams/Enterprise per-seat structure under the Codium brand.","tag":"COMPANY CLAIM","sourceUrl":"https://testeragents.com/pricing/qodo/","observedAt":"2026-09-30T19:18:09.995Z"}},{"entityId":"cmuohfixv0014ofmy2dwmaj7o","name":"Graphite","kind":"competitor","site":"https://graphite.com","changesInMonth":1,"latest":{"claim":"Graphite's pricing consists of Hobby (free, limited AI reviews), Starter at $20/user/month, Team at $40/user/month with unlimited AI reviews and merge queue, and custom Enterprise pricing, with all plans including a 30-day free trial.","tag":"FACT","sourceUrl":"https://graphite.com/blog/introducing-graphite-agent-and-pricing","observedAt":"2026-09-30T19:18:09.995Z"}},{"entityId":"cmuohfj3e0018ofmyhbl5d8f6","name":"Sourcery","kind":"competitor","site":"https://sourcery.ai","changesInMonth":2,"latest":{"claim":"Sourcery's own homepage FAQ states <cite index=\"2-9,2-10\">Pro is $12 per seat per month and Team is $24, billed annually, with open source free.</cite> <cite index=\"2-14\">Enterprise runs Sourcery inside a customer's own infrastructure, with SSO, own LLM keys, a dedicated customer success manager and invoice billing.</cite>","tag":"FACT","sourceUrl":"https://www.sourcery.ai/","observedAt":"2026-09-30T19:18:09.995Z"}},{"entityId":"cmtshhbt80002psp7vq7tcgnh","name":"Greptile","kind":"competitor","site":"https://www.greptile.com","changesInMonth":2,"latest":{"claim":"Greptile's pricing structure is a credit-based model: free Starter tier with 50 credits/month for one developer, Pro at $30/seat/month including 50 credits/seat, with 1 credit per standard review, 3 credits per TREX review, and $1 per additional credit beyond the included amount.","tag":"FACT","sourceUrl":"https://www.greptile.com/pricing","observedAt":"2026-09-08T09:45:08.257Z"}},{"entityId":"cmtkp2v5a0003psp7ipsx1w70","name":"CodeRabbit","kind":"competitor","site":"https://www.coderabbit.ai","changesInMonth":4,"latest":{"claim":"CodeRabbit renamed its 'Pro' plan to 'Essentials' and 'Pro Plus' to 'Team', with pricing held at the prior levels: Essentials at $30/developer/month ($24/month billed annually) and Team at $60/developer/month ($48/month billed annually). Existing subscriptions automatically display the new plan names with no action required from customers.","tag":"FACT","sourceUrl":"https://www.coderabbit.ai/pricing","observedAt":"2026-09-02T22:55:45.450Z"}},{"entityId":"cmuohfj6d001aofmyxe15xg7l","name":"Noise from review bots","kind":"discourse","site":null,"changesInMonth":0,"latest":null},{"entityId":"cmuohfj90001cofmy66ga0ptx","name":"Small teams merging agent-written code","kind":"segment","site":null,"changesInMonth":0,"latest":null}]},"funding":{"quartersConsidered":8,"readQuarters":1,"totalRounds":4,"currencies":[],"withheldReason":"Withheld: something was read in 1 of the last 8 quarters. A series needs at least 2 to say anything a single reading does not.","quarters":[]},"marketSize":{"readAt":null,"publishers":[]}}