Check a package before install
check-packageChecks whether a dependency (npm, PyPI, RubyGems or Packagist/Composer, or a GitHub Action used in a workflow) is on the DugganUSA malicious-package deny-list or has published advisories. Suited to a pre-install step in an agent or a CI pipeline, against slopsquatting and hijacked-package attacks.
Returns a crisp, machine-actionable verdict: {ecosystem, package, version, malicious, verdict:"block"|"allow"|"review", reason, advice, source}. malicious:true = the exact package is on our OSV-curated deny-list (230k+ named-not-heuristic entries across npm + PyPI + RubyGems; RubyGems coverage is thin and Packagist has NO deny-list entries at all, so on those two the OSV lookup and reputation signals are the whole check). malicious:false = not on our known-bad list — absence is NOT proof of safety, so still pin and review new deps. If a version is supplied and the entry is version-scoped, the check is version-aware; all-versions-malicious packages block on any version. With a version, it also checks OSV for published vulnerabilities in that exact version (known_vulnerabilities): a reputable package with known CVEs returns verdict:"review", never block.
One tool call, no auth.
Examples: {"ecosystem":"npm","name":"cxp-jquery"} → malicious:true, verdict:block. {"ecosystem":"pypi","name":"requests"} → malicious:false, verdict:allow. {"ecosystem":"rubygems","name":"rest-client","version":"1.6.13"} → RubyGems check, version-scoped. {"ecosystem":"github-actions","name":"tj-actions/changed-files@v45.0.7"} → owner/repo@ref (or name owner/repo + version); the 2025 compromise advisory makes this verdict:review. Pin a full commit SHA for the strongest check.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The package name to check. | |
| version | No | Optional exact version for version-aware checking. | |
| ecosystem | Yes | Package ecosystem: npm, pypi, rubygems (aliases gem, gems, ruby), packagist (aliases composer, php; name = vendor/package), or github-actions (aliases actions, gha; name = owner/repo or owner/repo@ref, version = the uses: ref: an exact tag or a full commit SHA). |