cpx
Copy file globs, watching for changes.
Supply chain provenance
Status for the latest visible version.
Without SLSA provenance there is no cryptographic link between this tarball and the public source — the axios compromise (March 2026) relied on exactly this gap.
Maintainers
Keywords
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| source-diff | obfuscated-file:lib/copy.js | AI (source-diff): Babel-transpiled output (build script: `babel src --out-dir lib`). Long lines are transpilation artifacts, not obfuscation. Code is fully readable. | ai | |
| source-diff | source-size-tripled | AI (source-diff): Expected growth from adding Babel-compiled lib/ output and new features between major versions. | ai | |
| typosquat | typosquat.levenshtein:pg | AI (typosquat): cpx is a long-established file copy/watch utility with no semantic relationship to pg (PostgreSQL). The name is a natural abbreviation for 'copy extended'. Clear false positive. | ai | |
| dependencies | unvetted-dep:cp | AI (dependencies): The cp dependency is appropriate for a file-copying utility. This is a stable, expected dependency for this package's purpose. | ai | |
| semgrep | semgrep:child-process-import | AI (semgrep): cpx is a CLI file-copy tool; using child_process/spawn is expected and documented behavior for this package. | ai | |
| semgrep | semgrep:dynamic-require | AI (semgrep): Dynamic require is used to load user-specified transform plugins (-t flag), an intentional and documented feature of cpx. | ai |
Versions (showing 15 of 15)
| Version | Deps | Published |
|---|---|---|
| 1.5.0 | 11 / 19 | |
| 1.4.0 | 11 / 19 | |
| 1.3.2 | 11 / 16 | |
| 1.3.1 | 10 / 15 | |
| 1.3.0 | 10 / 15 | |
| 1.2.1 | 10 / 8 | |
| 1.2.0 | 10 / 8 | |
| 1.1.6 | 9 / 7 | |
| 1.1.5 | 9 / 7 | |
| 1.1.4 | 9 / 7 | |
| 1.1.3 | 9 / 7 | |
| 1.1.2 | 9 / 7 | |
| 1.1.1 | 9 / 6 | |
| 1.1.0 | 9 / 6 | |
| 1.0.0 | 7 / 5 |
v1.5.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.4.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.3.2
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.3.1
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.3.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.2.1
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.2.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.1.6
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.1.5
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.1.4
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.1.3
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.1.2
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.1.1
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.1.0
2 findingsNewly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.0.0
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.