Read the code before you run it.
$ vulkro inspect <path> · docs/cli/inspect
A vulnerability is a mistake. Malicious code is a decision: an author who wants the install hook to run, the payload to stay unreadable, and the exfiltration to look like telemetry. Most scanners only look for mistakes. Vulkro Inspect looks for decisions.
You inherit other people's decisions constantly now. Your AI assistant suggests a package and you install it. A contractor hands over a repo. A candidate sends a take-home exercise. An acquisition brings a codebase nobody on your team has read. Inspect is the step between "we received the code" and "we ran the code":
vulkro inspect ./the-repo-you-were-about-to-run
It runs entirely on your machine, like everything Vulkro ships. The code you are inspecting is often exactly the code you do not want to upload anywhere.
What it looks for
Inspect ships a dedicated malicious-code rule family, documented rule by rule in the rules reference:
- Install-time execution: package hooks and setup scripts that run code at install, before you ever call the library.
- Obfuscated payloads: encoded blobs, staged decoders, and string-assembly patterns whose purpose is to be unreadable.
- Exfiltration sinks: network calls that ship environment variables, credentials, or files to places no library needs.
- Backdoor shapes: hidden endpoints, magic-value bypasses, and eval-of-input constructions.
- Dependency deception: the confusable names and hallucinated-package patterns your AI assistant is most likely to fall for.
Findings come with the file, the line, the mechanism, and the reason it looks deliberate, so a human can make the trust decision with the evidence in front of them.
What it refuses to claim
Inspect never certifies code as clean. A quiet report means the named checks found nothing, on the day you ran them. That is a useful, honest signal, and it is all any static inspection can truly promise. Treat a loud report as a reason to stop; never treat a quiet one as a guarantee.
Where it runs
- On a repo or directory:
vulkro inspect <path>, before first run. - In the agent loop: the licensed engine's MCP surface exposes inspection to your AI assistant, so the code it is about to add can be checked in the same session that suggested it.
- With optional local AI: an
--aitier adds a plain-language explanation of suspicious blobs, on your machine, and never changes what the deterministic rules found. See how Vulkro uses AI.
For the package-level front door (the name your assistant just made up, the typosquat one keystroke away), the free Vulkro Labs tools cover npm, PyPI, and crates.io before the install. Inspect picks up where they stop: the code itself.
Where it fits
Inspect is a capability of the licensed Vulkro scanner, in both flagships: the core scanner for application code and Vulkro for Salesforce for the packages and metadata entering an org. The CLI reference documents every flag and exit code.