CSP-1See your code the way an AI attacker does

Your code has vulnerabilities AI can exploit today.

The good news is CodeSecPilot can find them today. And it is critical that you do that right now. Because AI moved the cost of attack to near zero. Ten years ago, it took an ITSEC expert to find vulnerabilities in your code. Today, all it takes is someone with access to AI to find all the vulnerabilties in your code and ruin your organisation.

§1How it worksPlanned workflow · illustrative

Run thousands of agents to review your codebase

We run thousands of agents within multiple models and multiple methodologies to ensure we find all vulnerabilities in your code.

MCMaya Chen
First pass: 2,000 agents assess the codebase
4 models · in parallel
Agents2,000all finished
Files1,284indexed · 0 executed
Candidate findings38to re-assess
billing-api @ 8f3c2a1
FileAgents reading
  1. 2api/routes/invoices.py
  2. api/routes/exports.py
  3. 1api/routes/reports.py
  4. 1api/auth/session.py
  5. 2api/auth/reset.py
  6. 2api/webhooks/payments.py
  7. api/jobs/reminders.py
  8. api/models/invoice.py
  9. 1api/cache/keys.py
  10. 1api/routes/health.py
  11. api/templates/email.py
  12. 1api/payments/refunds.py
  13. 1tests/fixtures/keys.py
  14. api/db/session.py
Agents · model
  • Nothing found
  • Candidate found
  • Claude Opus 4.6
  • Claude Sonnet 4.6
  • gpt-oss-120b · open-source
  • gpt-oss-20b · open-source
§3The trapFig. 2 · Illustrative

Found ≠ exploitable

Find vulnerabilities that are actually exploitable

Most organisations get paralyzed after seeing a list of security vulnerabilities. But the reality is that not all vulnerabilities can be exploited by attackers. Companies that are on tight schedules with over-extended roadmaps can rely on CodeSecPilot to help them navigate what really needs to be patched : exploitable attacks with real potential of dammages. Not theoretical vulnerabilities, real problems that can lead to real disasters.

First pass: scanagents read every file

1,906files read · 2,317vulnerabilities found

  1. CriticalPossible SQL injectionreports/export.py:203
  2. HighCross-site scriptingweb/templates/search.html:88
  3. HighOutdated dependency · body-parserpackage-lock.json
  4. MediumWeak hash algorithmlib/crypto/legacy.py:14
  5. HighHard-coded credentialtests/fixtures/env.py:5
  6. MediumAuthorization bypassapi/routes/invoices.py:41
  7. LowInefficient regexutils/validate.ts:31

Second pass: exploitabilitya new agent re-assesses each one

2,317vulnerabilities → 2,302not exploitable · 15real attack path

  1. SQL injection in report sortnew agent · re-assessingNot exploitablesort value checked against a fixed list
  2. Any signed-in customer can open another company's invoicesnew agent · re-assessingExploitableEasy
  3. Hard-coded key in test fixturenew agent · re-assessingNot exploitabletest code only, never deployed
  4. The export page runs database commands an attacker writesnew agent · re-assessingExploitableModerate
  5. Anyone can download another customer's files by editing a file namenew agent · re-assessingExploitableEasy
  6. Open redirect after sign-innew agent · re-assessingNot exploitableonly fixed relative paths allowed
  7. + 12 more with a real attack pathnew agent · re-assessingExploitable

2,302 not exploitable · kept in History

Fig. 2 · From 2,317 vulnerabilities to 15 with a real attack pathIllustrative · fictional findings

CodeSecPilot is designed to trace how an attacker would reach your data and explain it in words your developer and your CEO both understand, so the right person fixes the right thing first.

§4Need-to-knowPlanned team controls · Fig. 3

Need-to-know only

Keep your vulnerability list confidential.

CodeSecPilot handles the vulnerability list access on a need-to-know basis only: no single developer holds the entire list with all details.

CodeSecPilot assigns each vulnerability to the right developer and developers see only what they really need. Admins and managers see summaries, but not the technical details.

CSP-1 · Fig. 3

03 / 03Admins see the risk, not the exploit.A routing agent sends each one to the developer who owns the code.Each developer reads only their first vulnerability.

Fig. 3 · The need-to-know workflowIllustrative · fictional people and findings
§5Patch verificationPlanned fix verification · Fig. 4

Make sure vulnerabilities are really patched

CodeSecPilot verifys the original exploit path on a regular basis so you're sure the vulnerability is really patched. Nothing is worse than thinking a vuln is patched, when in reality it's still present in your systems

SOSam Okafor
HighCSP-142billing-apiVerified fixed
Any signed-in customer can open another company's invoices
Commitb71e09dScope invoice lookup to tenant+4−1maya.chen
Verified
CLIcodesecpilot verify CSP-142 --ref b71e09d
MCPverify_finding { "finding": "CSP-142", "ref": "b71e09d" }
Exploit path re-checked at b71e09doriginal exploit path
Invoice lookup now requires the signed-in companyapi/routes/invoices.py:43–46
Every other path to db.invoices.get checked: 2 found, both scopedapi/routes/exports.py:88 · api/jobs/reminders.py:31
Independent second model agrees
Verified fixed at b71e09d3/3 checks passed · the exploit path is gone
Before8f3c2a1 · L43
43 invoice = db.invoices.get(id=invoice_id)
Afterb71e09d · L43–46
43 invoice = db.invoices.get(
44 id=invoice_id,
45 tenant_id=user.tenant_id,
46 )
HighCSP-143auth-serviceReopened
A password reset link keeps working after it has been used
Commitc42d9e0Mark reset token as used+2−1sam.okafor
Checked
CLIcodesecpilot verify CSP-143 --ref c42d9e0
MCPverify_finding { "finding": "CSP-143", "ref": "c42d9e0" }
Exploit path re-checked at c42d9e0original exploit path
Token is now marked as usedsrc/auth/reset.ts:21
The check and the update are two separate steps: two requests sent at the same moment can both succeedsrc/auth/reset.ts:19–21
Still openReopened to Sam Okafor with the new evidence and the complete patch
src/auth/reset.tsc42d9e0 · L19–22
19 const record = await db.resetTokens.findOne({ token });
20 if (!record || record.usedAt || record.expiresAt < new Date()) throw new InvalidToken();
21 await db.resetTokens.update({ token }, { usedAt: new Date() });
22 await users.setPassword(record.userId, newPassword);

Two requests that both read line 19 before either reaches line 21 both pass line 20. The complete patch claims the token in one atomic findOneAndUpdate, then revokes every session.

RuleCloses only when the exploit path is gone. A scan that stops reporting it does not close it.
§6Security metricsPlanned reporting · Fig. 5

How long do your vulnerabilities stay open?

Every vulnerability carries two dates: the scan that found it and the verification that closed it. CodeSecPilot turns them into the figures your board asks for: how many are open, how fast your team fixes them, which repositories carry the risk, and whether the backlog is shrinking.

Only exploitable vulnerabilities count, and one counts as fixed only once its patch is verified.

Counted
Exploitable vulnerabilities only
Fixed
When the patch is verified
Time to fix
From the scan that found it to the verified patch
Scope
Each repository, or all of them

github.com/northstarAll repositoriesLast 6 months

Open now
42 high · 2 medium
Median time to fix
6daysHigh 3 days · Medium 11 days
Oldest open
23daysCSP-143 · auth-service
Fixed
27of 31found in 6 months

Found and fixed, by month

Found and fixed, by month
FoundFixedStill open
May927
Jun658
Jul787
Aug456
Sep345
Oct234

By repository

RepositoryOpenFixedMedian time to fixOldest open
billing-api10 high · 1 medium94 days6 days
auth-service21 high · 1 medium78 days23 days
payments-gateway11 high · 0 medium65 days12 days
web-app00 high · 0 medium47 days—
data-pipeline00 high · 0 medium113 days—
All repositories42 high · 2 medium276 days23 days
Fig. 5 · Security metricsIllustrative · fictional repositories
§10 · Start

The vulnerability is already there. Find it before someone else does.

CodeSecPilot is in private preview. Explore the illustrative review, exploit paths and proposed fixes while hosted scans are being qualified.