Audit

Audit your dependencies without leaving the window.

Real scanners, run locally, with an agent that can then do the upgrades and show you the diff.

Download for macOS
v0.1.33 · .dmg · Apple Silicon & Intel
Signed & notarized by Apple · opens without a Gatekeeper warning
sha256 698955a0187bc039f4c74f5d05a9f10fbb27376a45788a0a241d1326b73873c7
Download for Windows instead
$curl -fsSL https://lucidtrain.com/install.sh | sh

The Audit tab discovers dependency manifests across your repository, runs whichever scanners are installed on your machine, and merges the results into one report you can read per backend. It prefers osv-scanner because it covers every ecosystem from lockfiles, and falls back to the per-ecosystem tools: npm audit, cargo audit and pip-audit. Snyk and Socket are used when their CLIs are present. Clicking Apply fixes puts the agent into an editing mode where it makes the upgrades in your working tree, which you review as a normal diff.

What it is and what it is not

Worth being exact about the boundary, because the category name is crowded. This reads dependency manifests and lockfiles, not your source code. It will tell you that a package you depend on has a known vulnerability. It will not find an injection flaw, a broken authorisation check or a hardcoded credential in a file you wrote, because it never opens those files. For that you want a static analysis tool, and the two are complements rather than substitutes.

Bring your own scanners

The scanners are not bundled. Each backend is probed on PATH before it runs, and a missing one becomes an entry telling you what to install rather than a silent gap in the report. That keeps the download small and means you are running the same scanner versions your CI runs, but it does mean a machine with none of them installed gets an inventory and the agent-config findings rather than a vulnerability list.

Manifest discovery across the repository

It walks the tree for package.json, Cargo.toml, go.mod, pyproject.toml, Pipfile, requirements files, Gemfile, composer.json, pom.xml, Gradle build files and pubspec.yaml, pairing each with its lockfile when one exists. A monorepo with several ecosystems in it produces one report covering all of them rather than one run per subdirectory.

The fix step is a diff, not a pull request

Apply fixes hands the findings to the agent with editing tools enabled, and the upgrades land in your working tree. There is no branch, no commit and no pull request, which means you review the change the same way you review any other agent edit, and you decide what to do with it. If you want a PR, you make one, because the changes are simply there in your checkout.

Reading the report honestly

Severity comes from whatever the underlying scanner reported. Some of them do not report one, so findings can arrive graded unknown, and unknown does not mean safe. The per-backend tabs exist so you can see which tool said what rather than trusting a merged number that hides disagreement between them.

Backends and what they cover

BackendCoversNeeds installed
osv-scannerEvery ecosystem, from lockfilesosv-scanner
npm auditnpmnpm
cargo auditRust cratescargo-audit
pip-auditPythonpip-audit
SnykMulti-ecosystemsnyk, authenticated
SocketSupply chain signalssocket
Agent configMCP server trustNothing, built in
FAQ

Questions

Does it scan my code for vulnerabilities?

No. It reads dependency manifests and lockfiles. Flaws in code you wrote are the job of a static analysis tool, which this is not.

Do I have to install the scanners?

Yes, and that is deliberate. Backends are probed on PATH and a missing one tells you what to install. Installing osv-scanner alone gets you the broadest coverage.

Does it open a pull request with the fixes?

No. It edits your working tree after you ask it to, and you review the diff. Branching and committing stay your decision.

Why do some findings say unknown severity?

Because the scanner that produced them did not report one. It is a gap in the upstream data rather than a judgement that the finding is minor.

Related

Last updated