xyz for VS Code · 0.5.1

Every dependency, checked at the version you ship.

The full tree from your lockfile, malicious releases and actively exploited advisories first, fixed in one reviewed step.

JavaScript / npm Python / PyPI Go .NET / NuGet npm, PyPI, Go and NuGet
the editor, with real verdicts

VS Code with the GitHub Light Default theme; every verdict, advisory and fix version shown is what CyberXYZ returns for that exact version

The problem

The worst thing in your tree often has no CVE yet.

A CVE scanner waits for an advisory. A malicious release runs its install script the minute it lands, on a laptop or a runner, often before any advisory exists.

The extension leads with the verdict, in words, from the same engine that blocks installs at the proxy.

the hover card, illustrated with a real verdict
12 "faker": "6.6.6" blocked
faker@6.6.6 Block
  • decisionKnown-malicious release
  • reasonProtestware: the maintainer removed the working code
  • advisoryGHSA-5w9c-rv96-fr7g · high
  • fixed versionnone upstream
  • optionsremove it (confirmed twice) · ignore with a reason and expiry
CyberXYZ · the proxy's decision, in the editor
How findings are ranked

A malicious release outranks any CVE.

Findings arrive in whatever order the scan returns them. The extension re-sorts every time: malicious and blocked releases, then behaviour signals, then actively exploited (KEV), then severity. The Issues view, the status bar and the Problems panel share that order.

the issues view, re-sorting worst-first
CYBERXYZ scanning workspace
ISSUES5
  1. faker@6.6.6Malicious · 1 advisory · direct
  2. durabletask@1.4.1Malicious · direct
  3. react-server-dom-webpack@19.0.0Alert · 2 advisories (1 KEV) · fix: 19.0.8 · direct
  4. jsonwebtoken@8.5.1Alert · 4 advisories · fix: 9.0.0 · direct
  5. lodash@4.17.20Alert · 4 advisories · fix: 4.18.1 · via html-webpack-plugin → lodash
1malicious and blocked2behaviour signals3actively exploited (KEV)4by severity

the Issues view in VS Code with the GitHub Light Default theme; every verdict is what CyberXYZ returns for that exact version

Fix All

One confirmation. Nothing you didn't tick.

Every fix in one list, grouped by file. Major versions and removals start unticked.

fix all, the real multi-select

two ticked; the major bump and the removal are left for you; the count drops as fixes apply

fix history, as the fixes apply

Then Fix History. Every applied fix, the lock command's result and what it cleared, kept on your machine and exportable as JSON. The tree is re-checked when the lock command finishes.

How Fix All plans a fix

Issues in the storefront workspace, before and after one Fix All

malicious or KEVhigh advisoriesfixed
before4
  1. faker 6.6.6malicious
  2. react-server-dom-webpack 19.0.0KEV
  3. jsonwebtoken 8.5.14 advisories
  4. lodash 4.17.204 advisories
after2
  1. faker 6.6.6no clean release: removal left for you
  2. react-server-dom-webpack→ 19.0.8
  3. jsonwebtoken 8.5.1fix is 9.0.0, a MAJOR: left for you
  4. lodash→ 4.18.1 (lockfile)
the two changes ticked in Fix All above clear 2 of the 4 issues; the unticked removal and major bump stay open until you choose them. Real verdicts for every version.
the tree, from the lockfile
package-lock.jsonparsed locally
  • storefront
  • ├─ express@4.21.2 ✓
  • ├─ faker@6.6.6 ✗ malicious
  • ├─ html-webpack-plugin@4.5.2 ✓
  • │ ├─ tapable@1.1.3 ✓
  • │ └─ lodash@4.17.20 ! 4 advisories
  • └─ jsonwebtoken@8.5.1 ! 4 advisories

Every package, at the version that installs

package-lock, yarn, pnpm, Poetry, uv, Pipfile.lock, pip-compile, go.sum and NuGet lockfiles, direct and transitive. Tree trimmed here.

hover on the import
src/auth.tslast scan, no network call
import express from "express";
import jwt from "jsonwebtoken";
jsonwebtoken 8.5.1 · npm · direct dependency of package.json
Alert
4 advisories: GHSA-27h2-hvpr-p74q high, GHSA-8cf7-32gw-wr33 high, …
Fix: upgrade to 9.0.0

Hovers where you import it

On import lines in JavaScript, TypeScript, Python and Go, and on every manifest line.

an ignore that expires
.cyberxyz/ignore.jsontoday 2027-01-01
{ "package": "jsonwebtoken",
  "advisory": "GHSA-8cf7-32gw-wr33",
  "reason": "RS256 keys only",
  "expires": "2026-12-31" }
! expired: GHSA-8cf7-32gw-wr33 is back in Issues for jsonwebtoken@8.5.1

Ignore with a reason and an expiry

One advisory, one version or every version, in a file your team commits. Past the date, the finding comes back.

Why CyberXYZ

Keep your scanner. Add the layer it can't be.

Different jobs on the same supply chain. Run them together.

// cve-only sca and ide scanners

Report known advisories

  • ✓ Known CVEs and advisories in your dependencies
  • ✓ Severity scores and fix versions
  • ✗ Nothing to report until an advisory exists
  • ✗ Reports after the install has already run
// cyberxyz

The install-time verdict, in the editor

  • ✓ Malicious releases first, then behaviour signals, then KEV, then severity
  • ✓ Every package at its lockfile-exact version, transitive included
  • ✓ Fix All in one confirmation, major versions opt-in
  • ✓ The same verdict the proxy enforces at install, fail-closed, on laptops and CI
  • ✓ Fleet visibility and fix requests from your organization
  • ✓ The same checks for AI coding agents through MCP and an install hook
Connected to the platform

Your editor, on the team's map.

Signed in, the extension reports to your organization. Developers keep the last word on their own code.

what flows between the editor and the dashboard
VS Code
// your editor
workspace scanat most every 12 h
flagged packagesdashboardXYZ Scan page
✓ summary
fix appliedFix All or quick fix
manifestlock commanddashboard
✓ reported
heartbeatdaily
extensiondashboardMachines
✓ version
fix requestfrom an admin
dashboardyour filesyou confirm
review & apply
right-clickany package
org install loglast 90 daysmachines
who has it
What the organization features do
Privacy

What leaves your machine, in full.

Three settings turn the organization uploads off. Signing out stops every call.

Privacy details

sent, only while signed in

  • Package names, versions and ecosystems
  • A summary of flagged packages, with workspace-relative paths
  • A daily heartbeat: extension and editor version, OS, hostname
  • Applied fixes and your answers to fix requests

never sent

  • Source code and file contents
  • Absolute paths, .env files and secrets
  • Your ignore file and your settings
  • Telemetry
npmpackage.json · package-lock, shrinkwrap, yarn, pnpm
PyPIrequirements, pyproject, Pipfile · poetry, uv, pip-compile
Gogo.mod · go.sum
NuGet*.csproj · packages.lock.json

Not parsed by the extension: Maven, Gradle, Cargo, RubyGems and Composer. A single Maven package can be checked from the terminal with xyz check PACKAGE VERSION -e maven. Full limits

Get started

Installed and signed in in under a minute.

$code --install-extension cyberxyz.cyberxyz-vulnerability-scanner
  1. InstallFrom the Marketplace, or search CyberXYZ Supply Chain Scanner in the Extensions view.
  2. Sign in with your browserRun CyberXYZ: Sign In and approve the one-time code with your usual sign-in, MFA, SSO or passkey. No key to copy.
  3. Open a projectThe workspace is scanned when it opens. CyberXYZ: Get Started walks you through the rest.
VS Code 1.80 or newer · included in every plan, see pricing · no account yet? app.cyberxyz.io · the terminal twin is xyz Scanner
// book a demo

Watch it block a real attack. Then run it on your own installs.

Book 15 minutes. We run real packages through CyberXYZ while you watch, including axios 1.14.1, a hijacked release that dropped remote-control malware in March 2026, and show you exactly what your team would see. Then we connect one laptop or one pipeline for a 30-day proof of value.

What happens next

  1. 01A 15-minute callReal packages, real verdicts, and your questions.
  2. 02Connect one laptop or one pipelineOne setup command, or one line in CI. Under an hour.
  3. 03A 30-day proof of value on your own installsEvery signal, no card.

Not ready for a call?

Check any package, free, and see the verdict we would give it.

npm

Try faker@6.6.6ua-parser-js@0.7.29express@4.21.2

Thanks! We'll be in touch.

Check your inbox. We'll reach out within 24 hours.

Where should we send the invite?

  • 15 minutes
  • Video call
  • Times in your time zone

We reply within 24 hours to set a time.

We only use these details to arrange the call. Privacy policy