PRGuard

Code governance & audit evidence

You can’t standardise every developer’s AI. You can govern what ships, and prove it.

Write your engineering and security standards in plain language. PRGuard enforces them on every pull request and push, keeps a person in the decision, and leaves a record an assessor can check.

171 of 180 changes audited before they merged

Evidence that every change to Halcyon Payments’s code was governed: what was checked, what was excepted and by whom, and what was merged without a check.

Q3 2026, the last complete quarter. Whether a control is met is the assessor’s call.

Q3 2026

Gaps
18each with its reason
Exceptions open now
1 waiting · 2 in force
Classified as written with AI
67 of 180
Evidence packs
2latest Q3 2026, 6 Oct 2026
Signed off
5 Oct 2026Olivia Bennett

Week by week

Green and red were audited, red merged anyway · amber was not audited · the share audited is written where it is below 100%
PassedAudited and passed, at once or after a fix162
Merged anywayAudited, and merged with a failure open9
BypassedA skip marker kept PRGuard out3
Not audited2 out of credits · 4 the audit failed6
All changesEvery change that reached a main or release branch180
Period
Repository
In scope for
ShowDownload CSV

Gaps

Every change that was not audited and passed, most serious first · 18 gaps
MergedRepositoryChangeWritten byMerged byOutcome
24 Aug 2026, 15:10merchant-sdk#683 Retry failed refundsGitHub Copilot AI agentMarcus Hale approved by 2 reviewersMerged while failing1 error left open
2 Sep 2026, 18:41risk-engineDirect push a1f3c9e · 1 commitRohan Mehta HumanRohan Mehta pushed straight to mainMerged while failing2 errors left open
14 Sep 2026, 14:15risk-engine#1335 Hotfix score cacheDaniel Okoye AI-assistedGrace Chen approved by 1 reviewerBypassed[skip prguard] in the title
15 Aug 2026, 05:53merchant-sdk#668 Bump axios to 1.7.4Dependabot Bot or automationRohan Mehta approved by 2 reviewersNot auditedout of credits

Exceptions

A finding your team has decided to live with for a time: who asked, why, what limits the risk meanwhile, who approved it and until when. The approver is never the person who asked.

4 recordedNever deleted
FindingStatusAsked byApproved byUntil
A04 Cryptographic failuresmerchant-sdk · #624 · a test key in the test harnessWaiting for approvalDaniel Okoye29 Sep 2026Nobody yet31 Dec 2026asked for
A07 Authentication failuresmerchant-sdk · #679 · session id in a redirectIn forceDaniel Okoye20 Aug 2026Olivia Bennett20 Aug 202630 Nov 2026
A01 Broken access controlrisk-engine · #1261 · score lookup by idIn forceDaniel Okoye7 Aug 2026Marcus Hale7 Aug 202631 Dec 2026
A09 Logging failuresrisk-engine · #1198 · declines not loggedEndedfinding reopenedGrace Chen2 Jul 2026Olivia Bennett3 Jul 202630 Sep 2026

When an exception ends, its finding reopens by itself, so nothing is excused for longer than was agreed.

Human49% of changes88
AI-assisted26% · Copilot, Cursor, Claude Code46
AI agent12% · opened by the agent itself21
Bot or automation14% · Dependabot, Renovate25
All changesThat reached a main branch in Q3 2026180
Period
Repository

Classified from what a change shows: its author, its branch and its commit trailers. Every AI change still names the person who approved and merged it.

Week by week

Changes merged, coloured by who or what wrote them · the share written with AI above each bar
EU AI Act · 75% Cyber Resilience Act · 50% SOC 2Coming soon ISO/IEC 27001Coming soon ISO/IEC 42001Coming soon PCI DSSComing soon DORAComing soon NIS2Coming soon
CoveredA rule file is mapped, and audits ran with it3
Partly coveredMapped, but not audited with, or set aside0
GapsNo rule file is mapped1
Framework
EU AI Act
Period
Q3 2026

Covered means a rule is mapped to the article and audits ran with it. Whether the article is met is the assessor’s call.

EU AI Act

4 articles · Q3 2026
ArticleStatusWhy
Article 9Risk management system Covered standards/risk-model.md38 audits ran with it
Article 11Technical documentation Covered standards/engineering.md64 audits ran with it
Article 14Human oversight Gap No rule file is mappedA starter template is offered
Article 17Quality management system Covered standards/engineering.md64 audits ran with it

Evidence packs

One ZIP file per quarter with everything PRGuard recorded: every change that reached a main branch, the rules behind each control, sampled audits, the exceptions and AI registers, the policies and the journal. Your source code is never in it.

2 generatedNo source code

Generated

Newest first · the file is kept for a year, its record and root hash for good

Q3 2026Ready

Every repository in scope · Marcus Hale · 6 Oct 2026 · 467 KB

Root hash83e970c9…eea3a30e
Download

Q2 2026Ready

Every repository in scope · Olivia Bennett · 3 Jul 2026 · 412 KB

Root hash5b17d2a4…90c3e18f
Download

How your assessor checks it

On their own machine, with no PRGuard account and only Python 3: every file is listed with its SHA-256 under one root hash, and the checker inside the pack confirms it.

$ python3 verify.py halcyon-q3-2026.zip --expect 83e970c9…
VERIFIED
  files       100, each matching its hash
  signed      by key prg-2c123dee76632438

Activity

Every change made in Assurance, and who made it. Entries can never be edited or deleted.

1,664 entriesEach linked to the one before
ChangeEventWhen
Worked out pull request #1380 on risk-engine: audited and passed
by PRGuard
gate.resolved20 Oct 2026, 05:50
Worked out pull request #1377 on risk-engine: passed after a fix
by PRGuard
gate.resolved19 Oct 2026, 16:57
Generated an evidence pack for Q3 2026
by Marcus Hale
pack.generated6 Oct 2026, 10:30
Signed off Q3 2026
by Olivia Bennett
attestation.signed5 Oct 2026, 16:02
An exception to a finding in risk-engine ran out on 30 Sep 2026, and the finding was reopened
by PRGuard
waiver.expired1 Oct 2026, 04:30
Asked for an exception to a finding in merchant-sdk
by Daniel Okoye
waiver.requested29 Sep 2026, 11:20
Switched on the policy “Ignore skip markers”
by Olivia Bennett
policy.changed15 Sep 2026, 08:05

Ignore skip markers

A skip marker in a pull request title or a commit message is ignored in every repository, so nobody can take a change past the audit by naming it.

NowSet by Olivia Bennett on 15 Sep 2026On
Switched on the policy “Ignore skip markers”Olivia Bennett15 Sep 2026, 08:05

Minimum score to merge

An audit that scores below this fails its check, even when everything it found was a warning.

NowSet by Marcus Hale on 2 Sep 2026On · 85
Raised the minimum score to merge from 80 to 85Marcus Hale2 Sep 2026, 14:40
Switched on the policy “Minimum score to merge” at 80Olivia Bennett1 Jul 2026, 09:00

An error needs an exception to be closed as won’t fix

An error-level finding can be marked won’t fix only when an approved exception covers it.

NowSet by Olivia Bennett on 1 Jul 2026On
Switched on when Assurance was switched onOlivia Bennett1 Jul 2026, 09:00
Sample data: Halcyon Payments is a fictional company.

Why a governance layer

More Than a Reviewer.

A reviewer offers an opinion. A governance layer enforces your standards, keeps a person in the decision, and leaves evidence behind.

Your Standards, Enforced

Plain-language rules, organisation-wide or per repository. Every finding names the rule it broke.

A Person in Every Decision

PRGuard drafts the fix; a developer approves it. Nothing merges on PRGuard’s word alone.

Evidence, Not Opinions

Every finding, fix and approval in append-only records, hashed on export, ready for your assessor. See the compliance view →

Built for AI-Era Threats

Every audited change is screened for hidden prompt-injection instructions before the AI reads it. How the screen works →

However the Code Arrives

Pull request, direct push or an agent’s commit: the same standards apply. A required check holds the pull request; a direct push is audited once it lands, and Assurance keeps every change to your default branch on the record.

Hotfix: cache session store #483

Open

j.tan/hotfix-cache wants to merge 2 commits into main

j.tan pushed a3f92c1 · updated session store
PRGuard / audit — 1 error found Required
PRGuard bot reviewed 2 min ago
Session tokens are written to the debug log on line 214 — this violates “Never log secrets or session tokens”. I’ve drafted a fix that hashes the token before logging — review and approve it here, or open it in the audit trail.
Approve fix View in audit trail
m.keller approved the fix · ✓ re-audited, all standards passing

Recorded for this pull request

Audit trail — every finding, fix and approval
AI transcript — every step the model took
Rule trace — which of your rules ran, at which version
See what’s recorded →

Governance

Govern Every PR and Push.

Maintain complete control over your codebase without slowing down development. PRGuard automatically reviews, drafts fixes on request, and logs every action — keeping your team moving fast and your auditors happy.

Every approved fix is re-audited — and every step is logged.

01

The Scan

A developer or an AI agent submits code. PRGuard runs its deterministic pre-scan, then checks the change against your custom plain-language rules.

02

The Fix

If a standard is broken, you get more than an error. Ask PRGuard to fix it and, where the solution is clear, it drafts a patch to approve. Where judgement is needed, you get the rule, the reason, and a ready-to-paste prompt for your own AI assistant.

03

The Human Verdict

A human on your team reviews and approves the fix. Findings can also be assigned — to a teammate or to PRGuard’s AI — and tracked from open to fixed, or closed as won’t-fix. You always retain final control; PRGuard never merges on its own.

Cost control

Every audit’s cost, capped before it runs.

Before any AI call, PRGuard estimates what the audit will cost. Over the limit you set for one audit, or over your remaining credits, and the audit is refused with nothing charged — PRGuard’s check on the change says why and by how much. A change PRGuard has already audited in that repository, with the same code and the same rules, gets the earlier result again at no charge.

Owners and admins set the limit; the dashboard shows what every audit cost.

GitHub pull request or push
PRGuard estimates the cost Before any AI call

Audited

Already audited, same code and rules? Reused, no charge

Refused

No AI call · Nothing charged · The reason on the check

See it run

One Vision. Every Commit.

Stop relying on memory and manual reviews. Unite engineering, security, and product around a single set of rules — enforced at the gate, on every PR and push.

Scenario: A developer opens a PR to add Stripe payments — and PRGuard checks it against the team’s standards, line by line. Each role’s rules run in turn below — or click any role to jump to what it catches.

PRGuard

Add Stripe Webhook Handler

25
Verdict
Fail
Type
Pull Request
Repository
payments
Author
j.doe
Analysis Provider
Gemini

Summary

This pull request introduces five error-level violations across security, compliance, architecture, and reliability — including unverified webhook input, card data written to logs, and a missing idempotency guard — plus two warnings on customer notification and test coverage. It should not merge until the error-level findings are resolved.

Findings

7 First finding shown expanded — click any to open
Service layer violation Architect

Direct database write bypasses the service layer. All mutations must go through PaymentService.

Webhook signature not verified Security

Stripe payload processed without verifying the Stripe-Signature header. Any caller can trigger payment events.

Full PAN written to logs Compliance

Full card number (PAN) written to logs in plain text. PCI-DSS v4.0 requires the PAN to be unreadable anywhere it is stored — including application logs.

Raw exception in 400 response AppSec

Exception message returned verbatim in the HTTP 400 body — leaks internal stack details to potential attackers.

No idempotency key SRE

No duplicate event check. Stripe retries on timeout — without idempotency this will double-charge customers.

Payment confirmation not sent Product

Charge recorded but no receipt email dispatched. Per spec, every successful payment must trigger a confirmation.

No test coverage QA

0% test coverage on this file. Team standard requires tests for all payment code paths before merge.

Language-agnostic

Works With Every Language in Your Stack.

You shouldn’t need a different tool for every language in your codebase. PRGuard reviews the change itself — the diff, judged against your written standards, not a language-specific grammar. One rule written in plain language covers your modern Python services, your legacy PHP monolith, and everything in between.

Ten public demo repositories with real PRGuard findings — the same rules work in any language.

Context Studio

Your Standards, Your Language.

Write your team’s rules in plain language. No special syntax, no complicated configuration files. Start from our industry-standard templates or write your own.

Context Studio

Manage the context files that define how your AI agents think and behave.

Context Files 9 files
Payments

Architect

service-layer.md

Security

owasp-top10.md

Compliance

pci-dss.md

AppSec

error-handling.md

SRE

idempotency.md

Product

payment-flows.md

QA

test-standards.md
change-validation.md

SysAdmin

network-addressing.md
security/owasp-top10.md v1

OWASP Top 10 Security Review

You MUST review every pull request for the following OWASP Top 10 risks:

Injection

Flag SQL, NoSQL, OS, or LDAP injection. Require parameterised queries.

Broken Authentication

Reject hardcoded credentials, weak session management, or missing MFA enforcement.

Sensitive Data Exposure

Ensure secrets, tokens, and PII are never committed. Require encryption at rest and in transit.

Broken Access Control

Verify authorisation checks on every endpoint. No direct object references without ownership validation.

Cross-Site Scripting (XSS)

Require output encoding. Flag innerHTML or dangerouslySetInnerHTML without sanitisation.

Insecure Deserialisation

Flag pickle.loads, yaml.load, or unserialize on untrusted input.

You NEVER approve a PR that introduces any of these risks without a documented mitigation plan.

Details

File Info

Version v1
Source Manual
Scan Scan passed
Scope Payments
Size 2.4k / 50k chars
Updated 4 Apr 2026
Edited by J. Doe

Recent Activity

Last edited 4 Apr 2026
Version v1

Deep-Context Retrieval

Tailored to Your Real Code.

PRGuard doesn’t make generic guesses. When a rule points at a file with @ref:, PRGuard fetches it from the PR’s target branch — so a pull request can never author the context it’s judged against — and condenses it to a compact skeleton: its public API, types, and key patterns, not the whole file.

The audit reasons against your actual interfaces, and the fixes it proposes call them correctly — for a fraction of the tokens the whole file would have cost.

finance/discounts.md

Discounts over 20% must go through the approval workflow — @ref:billing/discount_policy.py

fetched & condensed to a skeleton
discount_policy.py · skeleton
# condensed to its public surfaceclass DiscountPolicy:    APPROVAL_THRESHOLD = Decimal("0.20")    def requires_approval(pct: Decimal) -> bool    def approve(discount: Discount, approver: User)

Evidence

The AI Review You Can Actually Verify.

When an AI blocks a code change, the first question is “says who?” Most AI review answers with “trust us”. PRGuard answers with the record: the full conversation behind every audit, and a rule-by-rule account of what was enforced.

The transcript 5 steps recorded
1 Gatekeeper ✓ The screen found no injection attempts.
2 Detect round 1 of 2 ✓ Flagged 2 potential violations to verify.
3 Detect round 2 of 2 ✓ Nothing new found — the loop is done.
4 Evidence Check ✓ Each finding grounded in an explicit rule.
5 Summary ✓ Wrote the audit’s overall summary.

Illustrative excerpt

Stop arguing with a robot. Every step the AI took is on the record, in order, in plain language — each with its outcome stated, and the model’s own reasoning wherever it produced any. The one exception is the prompt-injection screen: it reports its verdict but not its reasoning, because publishing how it decides would be a guide to evading it.

The rule trace 5 of 7 shown
service-layer.md · v1 In force
owasp-top10.md · v1 In force
pci-dss.md · v1 In force
error-handling.md · v1 In force
network-addressing.md · v1 Set aside

Illustrative excerpt

Proof the standards you wrote are the standards being enforced. Which of your rules were in force — at the exact version that ran, one click away — which were set aside and why, and what PRGuard’s deterministic checks flagged. Every violation the AI claims is cross-checked against the findings actually raised, so you always know which statements are record and which are the model’s word.

Your code is never kept.

PRGuard never keeps your source code. The record holds only names, sizes and fingerprints, and links back to GitHub for the content — where your own repository permissions decide who may read it.

The AI’s reasoning is shown for what it is: the model’s own narration, labelled as such — never presented as proof of how an answer was reached.

Explore the evidence record →

Assurance

Audit-Ready, All Year.

Every change PRGuard governs leaves evidence behind. Assurance turns it into the pack your auditor asks for — mapped to the controls they test, complete for the period, and verifiable without trusting us.

Coverage ledger

Every merge to main or a release branch accounted for: governed, excepted, or disclosed as bypassed. A gap is listed with its reason, not hidden.

Exceptions register

Who approved what, why, and until when. The approver is never the person who asked, and when an exception ends the finding reopens.

AI change register

Which changes an AI tool wrote or helped write, which model reviewed them, and which person approved and merged each. Origin is classified from observable signals, such as a commit trailer or a bot’s login.

Evidence Pack

One ZIP for the period, with a hashed manifest. Your auditor checks it offline with prguard verify, or with the verifier inside the pack. Your code is never in it.

What the regulation asks.

The EU AI Act doesn’t regulate your code review. It regulates the systems you build with it — and your auditor will ask how AI-written code got into them. The Cyber Resilience Act asks the same question of your change process. This is the answer, kept for you as you ship.

Assurance produces evidence for the controls an assessor tests. Whether a control is met is the assessor’s judgement: no software makes you compliant.

Roles

Built for Every Role.

Whether you're shipping code, securing it, or accountable for it — PRGuard fits your workflow.

AI-Assisted Remediation

Where the AI Can Fix It, PRGuard Drafts the Patch.

Not every finding can be auto-fixed — and PRGuard never pretends otherwise.
But when the solution is clear, PRGuard drafts the exact code patch for your team to approve.

01

Spot the Issue

PRGuard pinpoints the exact file and line of code breaking your rules.

Webhook signature not verified

billing/webhooks.py · line 14 · Security

02

Draft the Patch

Ask PRGuard to fix it and it drafts the patch. On a pull request the fix lands on that PR’s own branch; on a direct push it opens a fix PR of its own. A human always has the final say before anything merges — and admins can make that mandatory across the whole org.

fix: verify webhook signature before processing

Pushed · j.doe/add-stripe-webhook · prguard-dev-app[bot]

+8 -2 billing/webhooks.py
03

Verify the Fix

PRGuard automatically re-audits the fix branch to confirm the finding is resolved, so you can merge with confidence.

PRGuard / audit — passing

0 errors · 0 warnings · All findings resolved

billing/webhooks.py
@csrf_exemptdef stripe_webhook(request):    # Stripe POSTs a signed event on every billing change    payload = request.body    # no signature check — anyone can POST a forged event    event = json.loads(payload)    # Hand the event to the right service    if event["type"] == "invoice.paid":        handle_payment(event["data"]["object"])    return HttpResponse(status=200)
Exact patch generated from your unique rules — not a generic suggestion.

Batch remediation

Many fixes, one clean PR.

Don’t overwhelm your team with notifications. Select several findings in a file and PRGuard bundles them into a single, clean pull request. It first applies any patch the audit already verified, with no model call, then fixes the rest together in one pass, falling back to fixing each in sequence if that doesn’t hold the file’s score. Either way the batch is re-audited before the PR opens, to confirm the score did not regress.

Findings · billing/webhooks.py

3 selected

Webhook signature not verified
Raw exception in 400 response
No idempotency key
one combined rewrite, re-audited as a batch

fix: resolve 3 governance findings

Open · prguard/batch-fixes · prguard-dev-app[bot]

+21 -6 ✓ score improved

Automatic escalation

Escalation, on your terms.

Your primary model gets three attempts to land a patch that holds the file’s score. If it can’t, PRGuard makes one rescue pass with an escalation model you nominate — even one from a different provider — then reports back instead of forcing anything. Security fixes are the exception: they are never dropped just to protect a score.

Checks · fix-webhook-signature

Attempts 1–3 · primary model

Score gate not met

38s

Rescue pass · escalation model your pick

Clean patch · all findings resolved

41s

One rescue pass only — then PRGuard reports back instead of forcing anything.

Structured findings

Prefer your own assistant?

Every finding is a structured record — file, line, severity, the rule it broke, and a ai_prompt ready to paste into Copilot, Cursor or Claude Code. Assign it to a teammate and it travels with the assignment, tracked from open to fixed. It’s the same bundle PRGuard’s auto-fix runs on.

remediation.prguard.json
{
  "schema": "prguard.remediation/v1",
  "verdict": "FAIL",
  "findings": [
    {
      "file": "billing/webhooks.py",
      "line": 14,
      "severity": "ERROR",
      "rule": "signature-verification",
      "suggestion": "Verify the Stripe-Signature before processing",
      "ai_prompt": "Edit billing/webhooks.py line 14: verify the
Stripe-Signature header with
stripe.Webhook.construct_event() before processing"
, "fix_kind": "prompt_only" } ] }
ai_prompt · ready for your assistant

Safety & Control

You Stay in Control. Always.

AI-assisted fixes are a tool and not a takeover. The AI is screened for manipulation, a person triggers every change, and nothing lands without your say-so — these guardrails are baked in, not optional settings.

01

Prompt-injection screening

Before the AI reviews a single line, a gatekeeper pass screens every change for prompt-injection attempts — so malicious instructions hidden in a diff can’t hijack the audit. How the screen works →

02

A person triggers every fix

PRGuard doesn’t run wild fixing things on its own. A developer assigns each finding to the AI by hand — it only acts when a human on your team explicitly asks it to.

03

On by default, yours to switch off

Auto-fix is enabled on every repository out of the box. An owner or admin can switch it off per repo at any time — your cost control. While it’s on, any developer can hand a finding to the AI, since they’re the one reviewing the result.

04

You decide what merges

Fixes land as a reviewable pull request by default — you read the diff and merge on your terms. Org admins can make PR-only delivery a hard rule, so “a human approves every fix” is policy, not preference.

05

Conflicts skipped, never forced

If a patch can’t apply cleanly — the file moved, a conflict exists, or the diff is ambiguous — PRGuard skips that finding and reports it for human review. No force-push, no guesswork.

06

Every decision logged

Every finding, decision, and fix is permanently recorded and attributable. No software makes you compliant by itself — but this is the audit trail you hand your assessor to show your standards were enforced.

VS Code extension

Your Standards, In Your Editor.

The same audit that reviews your pull requests, run on your changes before you commit. Findings land at the exact line, verified fixes apply in one click, and anything else goes to your AI assistant with the full explanation.

01

Sign in with your API key

One key from your account settings, stored securely by VS Code. Pick your organisation once per workspace.

02

Context files, synced to your workspace

The rules PRGuard reviews against, kept current in a folder you choose — ready for you and your coding assistant to read.

03

Pre-commit check

Stage your changes and run the check. Same gatekeeper, same standards, same static scan — billed like a PR audit, and never posted to GitHub. Findings tick themselves off as your fixes land.

Install for VS Code Free to install. Checks use your organisation’s credits. Getting-started guide →
PRGUARD · billing-service
PRGuard
Last check
WARN · 72/100 2 finding(s) · 9¢
billing/webhooks.py 2
Webhook processed before the Stripe signature is verifiederror · line 14 · signature-verification
Retry has no idempotency key — duplicate charges possiblewarning · line 41 · idempotency
Apply PRGuard fix: signature-verification patch verified
Context files
Synced just now acme · context
billing-service 3
security/owasp-top10.md STANDARD
compliance/pci-dss.md STANDARD
sre/idempotency.md STANDARD

Insights

Ask Your Audit History.

Stop digging through commit logs or interrupting your developers. Ask “What changed in the payments module this month?” and get a plain-language answer — with citations that link to the exact audit records.

Insights

What changed in the payments module in the last 30 days?

PRGuard Insights Searching audit history Searched 31 audits · 4 tool calls

Three pull requests touched payments/ in the query window. The retry handler was rewritten and passed its audit [1]; a webhook change shipped with one warning about missing idempotency checks, fixed two days later by an auto-fix PR [2]; a refund-flow change is still carrying an open error-severity finding [3].

Sources: [1] PR #142 · [2] PR #147 · [3] PR #151 — each links to its full audit record.

Illustrative example — answers draw only on what PRGuard has audited, and every citation links to a real audit record.

Skip the Digging

Every audited change records the files it touched and who shipped it — so “who has been changing our auth code?” is a question, not an afternoon of git archaeology.

Clear Launch Decisions

Every finding carries its fix status, so answers cleanly separate “already fixed” from “still open” — exactly what a product or engineering manager needs to call a release.

Evidence, Not Vibes

Every claim traces back to an audit record. If the history doesn't cover something, the answer says so instead of guessing.

Included with the Pro, Pro Team and Enterprise plans — and included in the $10 trial, so you can try it before choosing a plan.
Answers cover what PRGuard has audited on your connected repositories, from the day you install it — your history builds as it runs.

Compare

Where PRGuard Fits.

PRGuard is designed to sit alongside your existing tools, not replace them. It enforces your team’s unique business logic, security rules, and house style — all written in plain language.

Here’s the honest comparison with the tools you may already run.

Capability comparison: PRGuard vs SonarQube, Semgrep, and CodeRabbit
Capability PRGuard Deterministic pre-scan + your written standards, enforced SonarQube Rule catalog & quality gates Semgrep Code patterns authored in YAML CodeRabbit AI feedback on each PR
Enforces standards you write in plain language ✓ — — ✓
Judges the diff semantically, in any language ✓ — — ✓
Verdict that can block a merge ✓ ✓ ✓ ✓
Drafts fixes your team reviews & approves ✓ partial partial partial
Coverage & duplication metrics — ✓ — —
Screens the diff for prompt injection first ✓ — — —
Audit trail of every decision, with the AI’s reasoning ✓ — — —
Accounts for every merge to main or a release branch, including the ones that bypassed the gate ✓ — — —
Exceptions with a named approver and an expiry ✓ partial partial —
Register of AI-authored changes and the model that reviewed them ✓ — — —
Evidence mapped to the controls of the Cyber Resilience Act and the EU AI Act ✓ partial partial —
Evidence pack an auditor can verify offline ✓ — — —

Compiled from each vendor’s public documentation, last reviewed September 2026. These tools ship continuously, so capabilities may have changed since — if anything here is out of date, tell us and we’ll fix it.

vs SonarQube

SonarQube is the spell-checker.

PRGuard is the editor.

Rules you write in plain language, not rules you pick from a catalog. Sonar’s analysis is deterministic where an LLM isn’t — a real trade-off, and why its coverage and duplication metrics are worth keeping. What a catalog can’t do is judge whether a change fits the way your team decided to build things.

Better together

Sonar keeps the deterministic floor; PRGuard enforces the standards only your team could write.

Read the full comparison →

vs Semgrep

Semgrep is grep with a grammar.

PRGuard is a reviewer with your rulebook.

Patterns require configuration. PRGuard just requires a sentence. Semgrep is fast and precise where a rule genuinely is a pattern, and it drafts fixes of its own now. But each pattern is authored per language — one PRGuard sentence covers your whole stack, including the standards no pattern can express.

Better together

Patterns for the checks that truly are patterns; sentences for the standards that aren’t.

Read the full comparison →

vs CodeRabbit

CodeRabbit gives you a review.

PRGuard gives you the record.

Both can block a merge. Only PRGuard screens the diff for injection first and keeps the model’s own reasoning on the record. CodeRabbit clones your repository to build its index; PRGuard never does — it reads the diff, and only the files your rules point at, from the branch you’re merging into. It also bills per developer seat where PRGuard bills usage, so adding reviewers costs nothing.

Better together

Let the assistant polish the code; PRGuard proves the standard was enforced.

Read the full comparison →

vs Vanta & Drata

Vanta proves the lock exists.

PRGuard proves it was locked on every change.

Compliance platforms read your GitHub settings and record that branch protection is on. PRGuard records what happened to each change against your written standards: audited, excepted, or disclosed as bypassed.

Better together

Keep the compliance platform as the system of record for the audit, and hand it PRGuard’s evidence pack.

See the evidence →

For open source

A security checkpoint for inbound contributions.

AI-generated PRs can look plausible while carrying hidden prompt injection. PRGuard screens every diff for manipulation, then audits it against your contribution standards — comment-only or full merge gating, chosen per repository.

See how it works →

For compliance

Turn every code review into audit-ready evidence.

Every finding, fix, and approval lands in an append-only record — the trail you hand to a security or compliance review.

Read more →

Pricing

Simple, Transparent Pricing.

No hidden fees, no surprise API bills — just the price you signed up for. See the output before you pay.

Prices in US dollars, billed by Stripe. Built in North Wales by Unifi Software Development Ltd, a UK-registered company. Prefer a 15-minute walkthrough first? Email us →

  • Credits

    Spending stops at your allowance unless you top up

    Top-ups roll over
  • Model

    Choose your AI model to control the cost per audit

    Your choice
  • Dashboard

    Every token, credit and AI action, logged

    Per audit

Trial

$10 activation

2,000 AI credits included

Platform access

  • Up to 3 repositories
  • Up to 5 seats
  • Standard processing
  • Context Studio
  • Insights — ask your audit history
  • Assurance — one evidence pack a month
  • GitHub integration
Get started

Starter

$30 / month

2,250 AI credits / month

Platform access

  • Up to 3 repositories
  • Up to 5 seats
  • Priority processing
  • Context Studio
  • GitHub integration
Get started

Pro Team

$150 / month

11,250 AI credits / month

Platform access

  • Up to 50 repositories
  • Up to 30 seats
  • High-priority processing
  • Context Studio
  • Insights — ask your audit history
  • Assurance — evidence packs, no monthly limit
  • GitHub integration
Get started
Enterprise

Enterprise Governance

Custom deployment and migration support for large-scale engineering orgs.

  • Unlimited repositories & seats No caps on repos, members, or reviewers.
  • Custom credit allocation & volume discounts A credit bucket sized to your usage.
  • Dedicated onboarding & Context Studio setup Our team joins as an admin and sets it up with you.
  • Priority support & Enterprise SLA Response-time commitments in writing.

FAQ

Frequently Asked Questions.

Everything you need to know before connecting your first repo.

Does PRGuard review every push, or just pull requests?
Both, by default. Each repository has an audit trigger you control — review pull requests only, pushes (commits) only, or both. PRGuard runs the same audit pipeline either way, so you can guard your default branch against direct pushes as well as PR-based workflows.
How long does an audit take?

Audits run in the background the moment a pull request or push lands — nothing in your workflow waits on PRGuard. Most reviews post back within a few minutes; small diffs are usually quicker, and very large changes, deep-context audits, or slower models take longer. In comment-only mode a running audit never holds anything up; in Full review mode the PR simply shows a pending status until the verdict arrives. Higher plan tiers run on priority processing queues.

Does PRGuard read or store my source code?
PRGuard never clones your repository and never keeps your codebase. It works from the file diffs it fetches from GitHub via the API and forwards the relevant changes to your chosen LLM provider for analysis. To run its deterministic security pre-scan, PRGuard also fetches the current contents of the files your change touches and scans them on our own workers — only the resulting findings, not the files, are added to the prompt. The diff is processed in memory for the audit’s duration and is never written to our database, and the pre-scan works on the fetched files in a RAM-backed area that is released as soon as the audit finishes. The current versions of the files an audit fetches are cached for up to 24 hours, so a repeat audit of the same commit doesn’t fetch them again; that cache is not part of the audit record. A VS Code pre-commit check’s upload is held only until that check ends, then deleted. We keep a record of each audit’s findings — including any suggested patch, which quotes only the lines it changes — plus the verdict and metadata (such as PR number, author, and file count), so you have a complete, reviewable audit trail without retaining your code. Everything is scoped to your organisation. If Deep Context is enabled, PRGuard fetches referenced source files from GitHub to sharpen the analysis; only compact skeletons of those files are added to the prompt.
Is my code used to train AI models?

No — not by PRGuard. We don’t build or train models of our own, and we never use your code or governance rules to train anything.

Your data stays scoped to your organisation. Diffs fetched from GitHub are processed in memory for the audit and never written to our database. Files you upload from the VS Code extension are held only until that check finishes, then deleted.

The audit runs through the major AI providers’ commercial APIs, whose current terms exclude data submitted this way from training their models, and we choose those channels deliberately for that reason. Those providers are third parties under their own terms, which are outside our control, so our privacy policy spells out exactly what is sent and to whom.

Can a malicious diff trick PRGuard with hidden instructions?
This is exactly what the gatekeeper is for. Before the main audit runs, every change passes through a separate prompt-injection screen that looks for instructions hidden in the diff — in comments, strings, or filenames — trying to manipulate the reviewer. If it detects an injection attempt, the audit is stopped before the main model ever sees the payload. Read more about how the prompt-injection screen works.
Doesn’t GitHub already scan for leaked secrets?
It does — for strings that match a known provider’s pattern, after they’re already in your history. When both systems flag the same key, that’s independent confirmation, not redundancy. But pattern-matching is one narrow tripwire: it won’t recognise an internal password or token with no famous format, and it will never see a SQL injection, a race condition, a money-handling bug, or a violation of your team’s own standards. PRGuard reads every change like a reviewer — it flags the exact line during review, applies the policies you set in Context Studio (a committed key is rotated, not just moved to an environment variable), and offers the fix. Secret scanning is a smoke alarm; PRGuard aims to stop the fire being merged in the first place.
What GitHub permissions does PRGuard need?
PRGuard installs as a GitHub App on only the repositories you select. It reads your code changes and pull requests to run audits; uses pull-request write access to post its reviews; checks write access to post each audit as a ‘PRGuard audit’ check run, the pass/fail you can make required (commit-status write is kept as a fallback); and contents write access so auto-remediation can open a fix branch or commit a patch you’ve approved. It uses that write access only when you assign a finding to it. You can review its access on the GitHub App page and remove it from any repo at any time.
Which LLM providers can I use?
Anthropic and Google Gemini are both supported. You pick the model for your organisation from a curated list — each one verified to work with PRGuard’s audit pipeline — and can tune review depth against cost on every audit.
Will PRGuard block my PR from merging?
Not unless you ask it to. By default PRGuard runs in comment-only mode — it posts its findings as a review but never requests changes or blocks a merge. If you want it to gate merges, switch the repo to Full review mode and it will request changes on a FAIL, so the PR can’t merge until the issue is addressed. The choice is per repository.
How does pricing work? What does the $10 trial cover?
The $10 trial gives you full platform access and a block of credits to run real audits and explore every feature. After that, each plan includes a monthly credit allowance — larger on higher tiers. Every audit draws down credits based on the LLM tokens it uses, so you only pay for what you run. Need more before your next cycle? Top-up credits are available and roll over. There are no per-seat charges or hidden automation fees, and choosing a more efficient model stretches your credits further.
How many audits does a plan cover?

As a rule of thumb from our live runs, a typical pull-request audit charges on the order of 15–40 credits — small diffs at the low end; large changes, deeper context, or a premium model above it. A developer typically opens a handful of PRs a week, and the plans are cut to that shape: Starter comfortably covers a small team of up to 5, Pro a team of around 15, and Pro Team around 30 — matching each plan’s seat limit. If you audit pushes as well, budget more.

You don’t have to guess, though: the dashboard shows the exact credit cost of every audit from your first trial run, so a week of real usage tells you your own average.

What happens if I run out of credits mid-cycle?
Nothing breaks. Before contacting any LLM, PRGuard runs a pre-flight credit check — if your balance is too low, it skips the audit cleanly rather than running up a charge or failing your pipeline. Top-up credits are available anytime and roll over, and your plan allowance refreshes at the start of each cycle.
Can I cancel anytime? What happens to my credits?
Yes. You manage your subscription through the billing portal — upgrade, downgrade, or cancel whenever you like, with no lock-in. Cancel at the end of your billing period and your remaining plan and top-up credits stay usable until then. Once the subscription ends, no further credits are allocated and any unused credits — plan or top-up — are non-refundable, as set out in our Terms.
Can I suppress findings on code I don't own or intentionally left in?
Yes — if the repo has skip markers enabled. Add [skip prguard] (or [skip ci]) to your PR title or commit message and PRGuard will bypass the audit entirely for that event.
Will PRGuard push commits to my main branch?
Only if you explicitly choose to. Auto-remediation never runs on its own — a developer assigns the finding first. On a pull request the fix lands on that PR’s own branch, so you review it in the PR you already have open; when the change came from a direct push, PRGuard opens a fix pull request from a new prguard/… branch. You can opt in — via a confirmation step — to have a fix committed straight to your default branch instead, but that’s a deliberate choice you make each time; the default is always something you review first.
PRGuard flagged something I disagree with — can I tune it?
Yes — that’s what Context Studio is for. You can write custom rules and instructions — organised by category (roles, system facts, boundaries, and engineering standards) and scoped to your whole organisation or a single repository — that tell PRGuard what to care about and what’s acceptable in your codebase. The next audit picks up your changes automatically.
Where are my Context Studio rules stored?
Context rules (custom instructions, organised by category and scope) are stored in PRGuard's database, scoped to your organisation. They are never written back to your repository. You can edit them anytime in Context Studio, or download the full set with the PRGuard CLI (prguard pull <org-slug>).

Start Governing Your Code Today.

Set up in under 5 minutes.

Built and operated by Unifi Software Development Ltd, a software company registered in England & Wales, number 11054002. Security-first by design — every change is screened for prompt injection, your data stays scoped to your organisation, and every decision is captured in a complete audit trail.