Features • Installation • Usage • Running depx • JSON • Join Discord
depx is a fast, passive supply-chain intelligence CLI. It tells you whether a package is known malicious (hijacked publishes, credential stealers, install-script backdoors) by matching against OpenSSF Malicious Packages data (MAL-*, OSV format) and a live intelligence feed curated from X (Grok API), refreshed hourly.
It answers four questions in seconds:
- What got compromised recently? The live feed of newly disclosed malicious packages.
- Is this specific package safe to install? Check any package before you add it.
- Have I already installed anything malicious on my system? Audit local lockfiles and SBOMs.
- Do my GitHub organization's projects ship any malicious packages? Scan whole orgs and repos.
- Intelligence dashboard: default view with activity, ecosystems, impacted namespaces, and disclosure age.
- Compromised package feed: time-ordered cards via
depx feed(or--listfor one line per result). - Local dependency audit: scan lockfiles & SBOMs against a compiled local index.
- GitHub org & repo audit: pull dependency-graph SBOM exports and audit at scale.
- CI-ready: stable exit codes,
--require-cleangate, SARIF export, and a versioned JSON envelope. - Instant package verdicts: check any
ecosystem:nameref, bare name, or piped list. - False-positive control:
--exclude-pkgfile to suppress known-good packages from audit findings. - Fast & passive: local cache, background sync; read-only, never touches your apps.
curl -sfL https://raw.githubusercontent.com/projectdiscovery/depx/main/scripts/install.sh | shDownloads the latest release for your OS/arch (or builds with go install as fallback). The script verifies the binary and updates your shell PATH when needed.
From source (requires Go 1.25+):
git clone https://github.com/projectdiscovery/depx.git
cd depx
make build
./bin/depx --helpOr install with Go directly:
go install github.com/projectdiscovery/depx/cmd/depx@latestPrebuilt binaries are also on the GitHub releases page.
depx --helpCore commands and flags:
Usage:
depx [flags]
depx [command]
Available Commands:
feed Show recently disclosed malicious packages (cards)
audit Audit dependencies for malicious packages (default: $HOME)
github Audit GitHub repositories via dependency-graph SBOM
search Search known malicious packages by name (local index)
id Lookup advisory by ID
version Show version and check for updates
update Update depx to the latest version
Global flags:
-j, --json Machine-readable JSON output
-V, --version Show version and exit
-e, --ecosystem string Restrict lookup to one ecosystem (npm, PyPI, Go, ...)
-v, --verbose Extra audit/github detail
--silent Suppress banner and version info
--no-color Disable ANSI colors
--config string Config file path
--update Update depx to the latest version
--disable-update-check Disable the update check
Default command (intelligence dashboard):
--since string Feed time window (default "3d")
-n, --limit int Dashboard/feed entry cap on default command
depx feed:
--since string Feed time window (default "3d")
-n, --limit int Result limit
--list One header line per result
depx search:
-n, --limit int Max results shown (default 25)
--list One header line per result
depx audit / depx github:
--require-clean Exit 1 if any malicious package is found
--exclude-pkg string File of ecosystem:package lines to exclude from findings
-o, --output string Write export file(s) to this path or basename
--output-format string Comma-separated export formats: json, csv, txt (default: json)
--sarif-export string Write SARIF 2.1.0 report to this path
--sbom-export string Write audited dependency SBOM (audit only)
--sbom-format string SBOM format: cyclonedx (default) or spdx
depx github:
-n, --limit int Max repos for org/user targets (default 100 with token, 10 without)
depx id:
--raw Raw OSV record onlydepx # dashboard for last 3 days
depx --since 7d # widen the time window
depx -e npm # npm-only dashboard
depx feed # card feed (no dashboard)
depx feed --list # one line per advisory
depx -j # JSON for dashboards / pipelinesScans lockfiles and SBOMs against a local malicious-package index, instant after the first run. With no path, depx sweeps $HOME for projects and global installs.
depx audit # sweep $HOME for projects + global installs
depx audit ./my-app # a single project tree
depx audit ./bom.cdx.json # a CycloneDX / SPDX fileSupports npm, PyPI, Go, Cargo, RubyGems, Maven/Gradle lockfiles plus CycloneDX / SPDX SBOMs.
Suppress false positives. When a package is flagged that you've verified is safe, pass --exclude-pkg (on audit or github) a file of newline-separated ecosystem:package entries to drop from findings:
depx audit ./my-app --exclude-pkg .depxignore
depx github google --exclude-pkg .depxignore# .depxignore: packages to exclude from findings
npm:internal-tool
PyPI:requests
*:shared-lib # '*' matches any ecosystem
Uses GitHub's dependency-graph SBOM exports. Set GITHUB_TOKEN for private repos and org discovery.
depx github projectdiscovery/depx
depx github google
depx githubUnauthenticated GitHub access is rate-limited to ~60 requests/hour, so without a token org/user scans default to 10 repos (vs 100 with a token). Set GITHUB_TOKEN, GH_TOKEN, or DEPX_GITHUB_TOKEN (or raise it explicitly with -n) to scan more.
depx npm:lodash
depx id MAL-2026-4343
depx search redhat--require-clean exits non-zero the moment a malicious package is found.
depx audit . --require-clean # fail the build if anything is malicious
depx github google --require-clean -j| Exit code | Meaning |
|---|---|
0 |
Clean / success |
1 |
--require-clean and malicious packages found |
2 |
Usage error |
3 |
Upstream unavailable |
Every -j response uses a stable, versioned envelope so it's safe to build on.
{
"schema_version": "1",
"command": "check",
"depx_version": "v0.1.0",
"data": {
"total": 1,
"results": [
{
"ref": "npm:evil-pkg",
"purl": "pkg:npm/evil-pkg",
"verdict": "malicious",
"confidence": "high",
"ids": ["MAL-2026-4343"],
"package_ecosystem": "npm",
"package_name": "evil-pkg",
"registry_url": "https://www.npmjs.com/package/evil-pkg",
"advisories": [
{
"id": "MAL-2026-4343",
"url": "https://github.com/ossf/malicious-packages/blob/main/osv/npm/MAL-2026-4343.json",
"summary": "Malicious code in evil-pkg (npm)",
"modified_at": "2026-06-01T12:00:00Z",
"published_at": "2026-06-01T10:00:00Z"
}
]
}
]
}
}A clean package returns "verdict": "clean". Bare-name checks may include checked_ecosystems, matched_ecosystems, and found_ecosystems when searching all ecosystems.
Schemas live in schema/v1/.
depx is distributed under the MIT License.
Join our Discord • built with ❤️ by the ProjectDiscovery team
