Vulkro for Salesforce
Know where your Salesforce security stands before the review, the handoff, or the merge.
Whether you are submitting a managed package, handing an org back to a client, or merging to production, Vulkro for Salesforce reviews your Apex, Lightning, Flows, metadata, and live-org settings in the language the AppExchange security reviewer uses. It runs on your machine, reads zero customer records, and uses no AI in detection, so the same code gives the same result every time. Client code never leaves your laptop, so your audit tool is not a third-party data processor on anyone's NDA.
- Scans run locally
- Nothing uploaded
- No AI in the scan
- Reads zero customer records
- 14-day full trial
$ vulkro-sf asrr ./force-app # example output AppExchange Security Review readiness ------------------------------------------ VERDICT: GAPS 4 pass, 2 gap, 0 not-evaluated [GAP ] SF-ASRR-001 Secure coding and injection defence (3) [PASS] SF-ASRR-002 Sensitive data protection [PASS] SF-ASRR-003 Sharing and access control [PASS] SF-ASRR-004 Client-side and UI security [GAP ] SF-ASRR-005 Integrations and external callouts (1) [PASS] SF-ASRR-006 Least-privilege metadata and automation
01 / The flagship report
Know the Security Review verdict before you pay for one.
The readiness report is the artifact: every finding rolled up into the published Partner Security Review requirement categories, each scored pass, gap, or not-evaluated, and one verdict, READY or GAPS. CRUD and FLS gaps and sharing mistakes, among the top reasons a review is rejected, are exactly what the underlying detectors target.
The review landscape changed in June 2025, when Salesforce retired Chimera, the free scanner it had provided for partner web apps. Partners now assemble their own pre-submission toolchain, which makes a readiness report generated on your own machine the step you control: run it before you queue, fix what it names, and attach the result to the submission.
The readiness verdict
The engineer's gate
The file you hand off
A failed Security Review costs the per-submission fee Salesforce charges, the resubmission queue, and the release you had planned around it. Finding the blockers on your own machine first is the cheap path.
Nine areas of risk, dozens of checks each. One command runs all of them on your machine. Pick yours to jump to the detail.
Agentforce and AI agents
Apex code
Lightning: LWC and Aura
Flows
Access and sharing
Org configuration
Secrets and credentials
Data exposure
AppExchange readiness
One command checks all nine, entirely on your machine.
02 / What crosses the wire
The scan uploads nothing. Here is the only thing that touches our servers.
No source code, no findings, and no file names ever leave your machine. Your Apex, metadata, and business records are read locally and stay local.
Vulkro for Salesforce does require a verified account, and the account layer makes one kind of network call: a usage heartbeat, sent at most once a day. It carries a short, fixed set of usage fields, up to eight in total, and nothing else:
- productwhich edition sent it (vulkro or vulkro-sf)
- install ida random, anonymous identifier, never your machine id
- versionthe scanner version
- operating systemfor example macos, linux, or windows
- timestampwhen the heartbeat was sent
- scan counterhow many scans ran since the last heartbeat, a single number
- device tokenonly when you are signed in, so the server can refresh your license lease; never your machine id
- language setonly when a scan ran: the short language tokens it detected (for example apex or javascript), never a path, a file name, or source
That is the whole list. The heartbeat never carries your code, your file paths, your findings, or a single customer record. For a regulated or air-gapped engagement, a machine-bound license file replaces the account sign-in, and offline mode (VULKRO_OFFLINE=1) turns off every outbound call, the heartbeat included, so the scanner runs with no network at all.
03 / The surface nobody else reviews
Your org runs AI agents now. They are code too, so review them like code.
An AI agent in your org reads record fields, grounds on your data, and calls your Apex. Attacker text planted in a Description field becomes an instruction; an action bound to a without-sharing class becomes a data leak. ForcedLeak proved the class is real. Vulkro ships 15+ detectors for exactly this surface, and reviews both the compiled agent metadata your org runs and the Agent Script source you author.
The ForcedLeak pack
Compiled agent metadata
Agent Script source
New in SF v0.5.0
Live-org AI inventory
New in SF v0.5.0
AI-origin audit
A knowledge bundle that keeps up
04 / Verified fixes for Apex
The model drafts the fix. The deterministic re-scan gives the verdict.
vulkro-sf fix --ai asks a local model for a minimal Apex patch, then judges it without trusting it. A fix is verified only when a fresh deterministic re-scan no longer reports the finding, no new finding appears in the file, and the file still parses. That is the whole claim: it does not say your build compiles or your tests pass. Anything less is refused with a reason, and a refusal changes nothing.
$ vulkro-sf fix --ai ./force-app [HIGH] apex_soql_injection classes/LeadSearch.cls:12 draft: static query with a :bind variable parse check: ok re-scan: finding no longer reported, no new findings verified. Run again with --write to apply the diff.
The tier drafts patches only where the correct remediation idiom is well defined: CRUD and FLS enforcement, sharing declarations, and SOQL injection. Findings outside those classes are never sent to a model, and without --ai no model runs at all. The rest of Vulkro AI (local) ships in this edition too: a vulkro-sf ai command group and scan --ai-explain, advisory, local through Ollama, and never a change to a deterministic scan result.
05 / How it finds real risks
It follows your data across Apex, then tells you if it is safe.
A pattern scanner flags anything that looks like a database call and buries you in false alarms. Vulkro follows the actual path a piece of untrusted input takes through your Apex, and only raises an alarm when it reaches something dangerous with no access check in between. Fewer false alarms, and the serious risks caught.
Same input. The only difference is whether an access check sits in the path, and that is exactly what Vulkro follows. The same follow-the-data engine reviews the path from an AI agent action into your Apex.
The same approach powers the Apex, Lightning, Flow, and access checks below. Same code, same result, every time. No AI in detection, no guessing.
06 / The depth
Built for the checks a reviewer actually rejects on.
CRUD and FLS gaps and sharing mistakes are among the top reasons an AppExchange Security Review is rejected, and Vulkro for Salesforce targets them directly.
109
Salesforce detector modules
70+
Well-Architected anti-pattern rules
15+
Agentforce and AI-agent detectors
These are coverage counts, not a score. The Salesforce edition is not measured against our core benchmark, because that corpus is JavaScript, TypeScript, Python, and Go. The Salesforce proof is the per-rule documentation and the checklist mapping, plus the cross-class resolution you can see in the report itself.
Interprocedural Apex taint
LWC-to-Apex cross-language bridge
A live-org audit that stays hands-off
07 / Your code
The code your team wrote.
The flaws in your own Apex, Lightning, and Flows are the ones a reviewer rejects and an attacker hits first.
Apex code
Lightning: LWC and Aura
Flows
08 / Access, configuration, and secrets
Who can reach what, and how the org is set up.
Most Salesforce incidents were not code bugs. They were an over-broad profile, a connected app with the wrong scope, or a setting nobody wrote down. Vulkro reviews all of it.
Access and sharing
Org configuration
Secrets and credentials
Data exposure
All of this runs on your machine. Vulkro for Salesforce reads your code and settings only, and never reads your customer data.
09 / The proof
Built from the breaches that actually hit Salesforce.
Each check maps to the weak spot behind a real, published Salesforce incident. You are catching the patterns that already cost other teams real customers.
ForcedLeak, the first Agentforce breach
Drift OAuth token theft
Gainsight OAuth abuse
Experience Cloud guest user exposure
ShinyHunters vishing campaigns
Reviewer-aligned. Reads zero customer records. Runs on your machine. Licensed the same way as the core scanner: per seat, directly through our team.
10 / Not just Salesforce
The same offline engine scans your other code.
Your services outside Salesforce have their own risks: broken access, injected input, leaked keys, risky dependencies, and the new risks your AI coding tools bring in. Those ship in the core Vulkro scanner, built on the same offline engine, so nothing you run ever leaves your machine.
What the core scanner covers
Your application
Secrets and personal data
Dependencies and supply chain
AI development surface
Infrastructure
11 / What it does not do
Where this edition is the wrong tool, we say so.
If it is not on this page, assume this edition does not check it yet, and tell us what you need. Covers Agentforce and Agent Script, Apex, Lightning (LWC and Aura), Flow, Visualforce, and your org configuration.