20 August 2026

Full Pentest vs PR Security Review: What Each One Actually Answers

Full Pentest vs PR Security Review: What Each One Actually Answers
5 min. readAv Borg

A full pentest and a PR security review get compared as if one is a lighter version of the other. They are not. They answer different questions, and a team that buys one expecting the other ends up with a blind spot it cannot see.

The question each one asks

A full pentest asks what an attacker can do to this system as it stands. The scope is the agreed target: the application, APIs, authenticated surfaces, infrastructure, or other assets included in the engagement. Its findings are properties of the system as tested.

A PR security review asks something much narrower. Does this change introduce a reachable weakness? The scope is the diff plus whatever the diff touches. Its findings are properties of a change.

Every other difference follows from that one.

Full pentestPR security review
Question it answersWhat can an attacker do to this system as it stands?Does this change introduce a reachable weakness?
ScopeThe agreed application, APIs and infrastructure in scopeThe diff, plus the paths the diff touches
What triggers itA date, a release or a milestoneA pull request opening
Time between a change and it being testedWeeks to monthsMinutes to hours
Cross-service flaws and anything outside the repositoryIn scope, including parts no recent change has touchedMay be missed when the relevant context falls outside the change
Where the finding landsA report, read later by whoever owns the service nowA comment on the pull request, read by its author
What it cannot tell youAnything about the code you merged after it finishedWhether the system as a whole is exploitable

What a pentest sees that a PR review cannot

Some flaws do not exist in any single diff. Service A starts trusting a field that service B quietly stopped validating a quarter earlier. Both changes may have been correct in isolation. A narrowly scoped PR review can miss the interaction. Testing the running system across those service boundaries gives you a way to uncover that class of bug.

The same goes for weaknesses that exist outside the repository. A staging environment left reachable, an old API version still answering, a subdomain pointing at infrastructure nobody owns any more. No diff introduced those, so no diff review will surface them.

And some attack paths need sustained effort. Enumerating identifiers across two tenants for a day, chaining a weak redirect into a token leak into privilege escalation. That is deliberate work against a live system, not a judgement about a changeset.

What a PR review sees that a pentest cannot

Everything you ship after the pentest is outside the scope of that specific assessment. If you deploy daily and assess annually, the version tested by the pentest may have been live for only a small fraction of the year. Every subsequent change creates an opportunity for a regression or a new vulnerability that the original assessment could not have evaluated. This is the gap behind most of what startups get wrong about application security.

Regressions on fixes, too. A permission check gets restored during remediation, then refactored back out six weeks later by someone tidying a controller. The original finding is marked resolved. The vulnerability is back.

Then there is cost. Caught on the diff, the fix can often happen before the code ships. Caught in an assessment later, the same issue may require a ticket, a new release, and a retest.y.

Why it matters where the feedback lands

A finding on an open pull request reaches the person who wrote the line, while they still remember why they wrote it that way. The same finding in a report months later reaches whoever owns that service now, with no context and a backlog already full. The technical content is identical. The odds of it being fixed properly are not.

That is the argument for treating security findings as engineering work rather than a document, and for pushing them into Linear, Jira or GitHub where the rest of the work already lives.

Neither one is a scanner

Automated scanners are useful for finding potential weaknesses at scale. SAST identifies insecure code patterns and data flows, dependency scanners flag known vulnerable components, and DAST probes running applications for common weaknesses.

But a potential weakness is not the same as an exploitable one. A missing authorization check, for example, is different from proving that one user can actually access another user's data.

That is where offensive testing adds value. Pentests test the running system from an attacker's perspective, while code-aware PR reviews use the context of a change to focus testing on exploitability before it reaches production. That is why a scanner can pass a codebase that an actual assessment does not.

How they actually fit together

Depth and cadence are different axes, and you need both. A deep periodic assessment reasons about architecture, chains attack paths, and looks at the parts of your system no changeset has touched in a year. A change-triggered review keeps the gap between deploying code and testing it down to hours rather than months.

That is the split in how Borg is built. Mjolnir runs continuous application pentesting against the running system. Gungnir does code-aware review on changes, running targeted micropentests against the diff and surfacing findings in GitHub. They are separate jobs because they answer separate questions.

The failure mode to avoid

Do not use either one as a reason to skip the other. Shipping PR review and dropping deep assessment leaves you blind to everything cross-service and everything outside the repository. Running the annual assessment and nothing else leaves you blind for eleven months of merges. Both are real gaps. They are just different gaps.

The useful question to ask a vendor is not which one they do. It is what happens to your coverage in the weeks between. If you want to see what that looks like against your own application and your own pull requests, book a walkthrough with Borg.

Ofte stilte spørsmål

Can a PR security review replace an annual pentest?
No, and the reason is scope rather than quality. A PR review reasons about a change and what that change touches, so it cannot see a flaw that only exists because of two changes made months apart in different services, and it cannot see anything that never passed through the repository at all, such as a reachable staging environment. A periodic assessment covers the whole system, including the parts no recent changeset has touched.
What does a PR security review actually check?
It looks at the diff and the paths the diff affects, then tests whether the change introduced something reachable. In practice that means authorisation and ownership checks, tenancy boundaries, new or modified endpoints, and multi-step flows where the order of operations carries a trust assumption. The output is meant to land on the pull request while the author still has the context in their head.
What security testing should run on every pull request?
Cheap checks such as dependency scanning and secret detection can run on everything, because they cost seconds. Exploitability review is worth reserving for changes that move an authorisation decision: authentication and session handling, ownership checks and anything resolving a record by id, tenancy boundaries, new or modified endpoints, payment and entitlement logic, and multi-step flows where the order of operations carries a trust assumption.
How often should a team that deploys daily run a full pentest?
There is no single correct interval, but the arithmetic is worth doing honestly: whatever cadence you pick, every merge after the report closes is untested by it. Teams shipping daily generally treat the periodic assessment as architectural depth and cover the day-to-day risk with testing tied to changes, rather than stretching one assessment to cover a year of merges.
Is a PR security review the same as SAST on a pull request?
They run at the same moment but ask different questions. SAST matches code against known-bad patterns and cannot tell you whether a match is reachable in your application. A PR security review is trying to establish exploitability on the changed paths, which is why it can surface broken access control and business-logic flaws that have no recognisable signature.
If every pull request is reviewed, what is left for a pentest to find?
Everything that does not live in a single diff. A flaw produced by two changes made months apart in different services appears in neither changeset. Nor does an exposed staging environment, an old API version still answering, or an attack path that only opens after several steps in sequence. A periodic assessment also covers the parts of the application nobody has touched in a year, which is precisely where a change-triggered review never looks.

Borg på
sosiale medier

Borg spesialiserer seg på å sikre komplekse digitale systemer med høy risiko.