Skip to main content
New: Vulkro Cloud for Salesforce, a hosted workspace for your team. Available by invitation: register your interestView docs

The review, before you pay for the slot

.

Vulkro for Salesforce reads what your team built on Salesforce, plus the live org, the way a Security Review reads them, on your own machine. It tells you whether the package is ready before you pay for the review slot, and what the org looks like after the deploy. Nothing is uploaded.

Ten minutes on your own machine. 14-day trial, no card.

// the pre-submission gates //How the review works ›
Pre-submission gates./force-app
  1. FAILNo SOQL or runtime injection3
  2. FAILCRUD and FLS enforced5
  3. PASSNo secrets in source or metadata
  4. PASSSharing declared
  5. PASSNo cleartext HTTP endpoints
  6. PASSModern cryptography
  7. FAILLightning component security1
  8. PASSVisualforce security
  9. PASSLeast-privilege metadata
  10. — —Flow securitynot evaluated

exit 1 a failing gate stops the pipeline, before you pay for the slot.

What a failed round costs_

The scanners the review process runs execute inside Salesforce's pipeline, after you have already submitted. Three facts about that round, stated carefully.

About half, the figure partners cite

Salesforce publishes no first-pass failure rate. The number partners quote most often for first submissions is about half, and it is an industry estimate, not an official one.

A paid listing pays per attempt

On a paid listing, every submission is another fee. The most common reason for a failed round is missing CRUD or field-level checks, which is exactly what a scan finds first.

Two to three weeks of turnaround

Each round takes two to three weeks. A ten-minute check on your own machine, before you submit, is the cheapest one you will ever run.

The readiness verdict_

Six requirement categories, each scored pass, gap or not evaluated, against the real failure causes. Not evaluated is never counted as a pass. The same report exists as a file you can hand to a reviewer or a client.

// the readiness checklist //The readiness checklist ›
vulkro-sf asrr . --format tableexit 1
NOT READY

9 blocking gaps across 3 of 6 requirement categories. 1 category not evaluated.

Package
Acme Billing Suite
Version
3.4.0
Basis
checklist pinned 2026-Q2
AppExchange Security Review requirement categories, each scored pass, gap or not evaluated, with a count of blocking items
Requirement categoryCriterionStatusBlockingHighestFirst citation
Secure coding and injection defenceSF-ASRR-001gap3CRITforce-app/main/default/classes/InvoiceController.cls:214 builds SOQL from a page parameter.
Sensitive data protection and cryptographySF-ASRR-002pass0noneNo key, token or credential literal in package source or metadata.
Sharing and access controlSF-ASRR-003gap5HIGHforce-app/main/default/classes/QuoteService.cls:88 writes without a CRUD or FLS check.
Client-side and UI securitySF-ASRR-004gap1MEDforce-app/main/default/lwc/quoteViewer/quoteViewer.js:63 assigns a record value to innerHTML.
Integrations and external calloutsSF-ASRR-005pass0noneEvery callout routes through a Named Credential over TLS.
Least-privilege metadata and automationSF-ASRR-006not evaluated0unknownNo profile or permission set metadata was retrieved in this scan, so nothing was scored.

Readiness assessment against the published AppExchange Security Review requirements. It is not an official review outcome: Salesforce Product Security decides that. A category no detector covered on this scan reads not evaluated, does not block, and still needs checking by hand.

The Security Review readiness checklist, run against your own package. Every gap cites the file and the line.

What it reads_

Code, components, Flow, the metadata that wires them, and the running org. A value the browser controls is followed from a Lightning component into Apex and on to the query or the record write it reaches.

  • Apex

    Every way in (@AuraEnabled, @HttpPost, @InvocableMethod, @RemoteAction), the queries, record writes and outbound calls each one reaches, the sharing declaration, and whether a permission check stands in the way.

  • Lightning Web Components

    Public properties, URL reads, wire adapters and imported Apex methods, with a value the browser controls followed across the boundary into Apex.

  • Aura and Visualforce

    Components, controllers and helpers, the server actions they call, and the places a record value lands in markup the user can influence.

  • Flow

    Flow logic, subflow links and Apex actions, plus the guest-user paths that turned public sites into data leaks at other companies.

  • The metadata that wires it

    Profiles, permission sets, sharing rules, connected apps, named and external credentials, remote sites, CORS and CSP entries, and Agentforce topics and actions.

  • The live org

    Permissions, MFA coverage, session settings, sharing rules, connected apps, login history and Trust status, read through your own Salesforce login. Settings only, never your records.

The live org_

A permission set edited in Setup, a connected app approved last week, a session policy relaxed for one integration: none of it is in your repository.

Settings, not records

The audit reads the running org through your own login. Settings only, and never your records.

What Setup changed

A permission set edited by hand, a connected app approved last week, a session policy relaxed for one integration.

What it could not read

A check your user could not run reads "not evaluated", with what to grant so it runs next time.

// the live-org posture audit //
vulkro-sf org report --target-org acme-prodexit 1
Target orgacme-prodNA142 - production - API 62.0 - read-only connected user
1pass
2gap
1not evaluated
4checks run
Live-org posture checks, each with a status of pass, gap or not evaluated
CheckRuleStatusSeverityEvidence
MFA enforcementvulkro-sf org mfaSF-MFA-001gapCRIT2 of 61 active users can log in with a password alone (no MFA, no SSO).
Guest user accessvulkro-sf org guest-liveSF-GUEST-LIVE-001gapHIGHGuest profile for site partner-portal holds Read on Contact and Opportunity.
Session settingsvulkro-sf org sessionSF-SESSION-002passnoneTimeout 30 min, sessions locked to login IP, clickjack protection on.
Health check scorevulkro-sf org health-checkSF-HEALTH-CHECK-001not evaluatedunknownAPI returned 403 for this user. Grant View Setup and Configuration, then re-run.

Agentforce and AI agents_

Every action an Agentforce agent can take is followed to what it touches: record data, or a call that leaves the org.

Every action, followed

What each action touches: record data, or a call that leaves the org.

The ones that skip sharing

Actions bound to classes that skip sharing, and bundles with no least-privilege guard.

Source and compiled

Agents grounded on untrusted text are flagged in the authoring source and in the compiled metadata.

// the agent surface, as the console draws it //
vulkro-sf scan force-app/main/defaultagent actions
agent surfaceBilling support2 actions, 2 reach data or an external call
  • edge resolved from action metadata
  • reaches record data
  • call that leaves the org

The Billing support topic binds four actions. Two of them read Invoice, Account and Contact records, and one reaches a callout that leaves the org carrying values the agent controls. The graph is resolved from the topic and action metadata in the checkout: no action is invoked.

Actions bound to the Billing support agent entry point
ActionTypeReachesFindingDeclared at
LookupInvoiceapexInvoice__c, ContactMEDVULK-4090force-app/main/default/classes/InvoiceController.cls:118
SummarizeAccountapexAccount, Contactno findingforce-app/main/default/classes/AccountSummary.cls:64
// the live-org posture audit //
vulkro-sf org report --target-org acme-prodexit 1
Target orgacme-prodNA142 - production - API 62.0 - read-only connected user
1pass
2gap
1not evaluated
4checks run
Live-org posture checks, each with a status of pass, gap or not evaluated
CheckRuleStatusSeverityEvidence
MFA enforcementvulkro-sf org mfaSF-MFA-001gapCRIT2 of 61 active users can log in with a password alone (no MFA, no SSO).
Guest user accessvulkro-sf org guest-liveSF-GUEST-LIVE-001gapHIGHGuest profile for site partner-portal holds Read on Contact and Opportunity.
Session settingsvulkro-sf org sessionSF-SESSION-002passnoneTimeout 30 min, sessions locked to login IP, clickjack protection on.
Health check scorevulkro-sf org health-checkSF-HEALTH-CHECK-001not evaluatedunknownAPI returned 403 for this user. Grant View Setup and Configuration, then re-run.

Also in the box_

The parts that turn a scan into a working day: what a guest can see, what a change will break, a fix you can trust, and the places you already work.

  • Guest exposure report

    One report of everything a guest user can reach on a public site: pages, Apex, Flows and records, with the setting that opened each one.

  • Change safety before deploy

    Where a component is used, what breaks if it goes, what a change touches, and how big a deploy is, scored. Static and best-effort, and it says so.

  • Fixes with the detector as the judge

    An optional local AI model drafts an Apex fix; it is applied only when a fresh check agrees the problem is gone. The model never decides what is true.

  • In your editor and your AI assistant

    The Salesforce edition of the extension underlines problems in Apex, Lightning and Flow files as you type. A skill and an MCP server let Claude Code and other assistants ask for a check.

  • The console, plain words

    Every problem in a dashboard on your machine, with a view of what changed since the last check and an impact view showing how far a problem reaches across the org.

  • Evidence and inventory

    A package inventory of your managed and unlocked packages with known vulnerabilities, compliance mapping for SOC 2, PCI, HIPAA and GDPR, and a shareable org posture report.

Stated here rather than discovered on day two.

  1. Never read. No Accounts, Opportunities, Leads, Cases, custom-object rows or attachments. The org audit reads settings and definitions through your own login, which you can revoke at any time.
  2. A review of code, metadata and settings that names the weak spot and cites the file and the line. It does not attack a running org or prove an exploit.
  3. Every surface can report a third state: a category with no coverage, or an org check your user could not run, reads not evaluated. It is never counted as a pass, and the row says what to grant.
  4. Apex, Lightning, Flow, Visualforce, metadata and the org. Your Node, Python, Go, Java, C or PHP services are Vulkro, the code scanner, on the same engine.

Run it on your own package.

It runs on your machine, nothing is uploaded, and you will know in ten minutes whether the package is ready. Your first sign-in starts a 14-day trial of the full product, no card.

Licensing

Licences are per seat with unlimited orgs and everything included. Subscribe from your account and cancel any time, or ask our team for a quote.

Vulkro is a product of Reveriext.

reveriext.com

Visit Reveriext