hardhat
Supply chain provenance
Status for the latest visible version.
Maintainers
Keywords
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| provenance | slsa-provenance | AI (provenance): Hardhat publishes via GitHub Actions CI with SLSA attestation; this is the expected publish pattern going forward. | ai | |
| phantom-deps | phantom-dep:mnemonist | AI (phantom-deps): mnemonist is listed as a runtime dep in package.json; phantom-dep heuristic false positive. | ai | |
| provenance | publisher-changed | AI (provenance): Hardhat v3 is published via GitHub Actions CI with SLSA attestation; automated publisher is expected for this org. | ai | |
| semgrep | semgrep:child-process-import | AI (semgrep): Hardhat legitimately uses child_process for running scripts, compilers, and VS Code extension management — core features. | ai | |
| semgrep | semgrep:hex-decode | AI (semgrep): Hex decoding of Solidity function selectors is core EVM/compiler functionality for stack trace analysis. | ai | |
| semgrep | semgrep:api-obfuscation-reflect | AI (semgrep): Reflect.get() is used inside a Proxy for deep-freezing user config objects — a legitimate JavaScript pattern, not obfuscation. | ai | |
| semgrep | semgrep:shady-links-raw-ip | AI (semgrep): 127.0.0.1:8545 is the default localhost RPC URL for Hardhat Network — expected and documented default configuration. | ai | |
| semgrep | semgrep:dynamic-require | AI (semgrep): Dynamic require is used to load user config files and plugins — a fundamental design feature of Hardhat's extensible config system. | ai | |
| semgrep | semgrep:silent-process-exec | AI (semgrep): Hardhat's analytics.ts spawns a detached Node.js subprocess to report telemetry consent — documented behavior, not a reverse shell or miner. | ai | |
| semgrep | semgrep:silent-process-exec-var | AI (semgrep): Same telemetry consent subprocess as silent-process-exec; legitimate documented Hardhat analytics behavior. | ai | |
| semgrep | semgrep:env-spread | AI (semgrep): process.env spread is used to pass environment to a local Sentry reporter subprocess — standard child process pattern, not exfiltration. Stable for this package. | ai |
Versions (showing 37 of 37)
| Version | Deps | Published |
|---|---|---|
| 3.6.0 | 18 / 12 | |
| 3.5.1 | 18 / 12 | |
| 3.5.0 | 18 / 12 | |
| 3.4.5 | 18 / 12 | |
| 3.4.4 | 18 / 12 | |
| 3.4.3 | 18 / 12 | |
| 3.4.2 | 20 / 13 | |
| 3.4.1 | 20 / 13 | |
| 3.4.0 | 20 / 13 | |
| 3.3.0 | 20 / 13 | |
| 3.2.0 | 20 / 13 | |
| 3.1.12 | 20 / 13 | |
| 3.1.11 | 20 / 13 | |
| 3.1.10 | 20 / 13 | |
| 3.1.9 | 20 / 13 | |
| 3.1.8 | 20 / 13 | |
| 3.1.7 | 20 / 13 | |
| 3.1.6 | 20 / 13 | |
| 3.1.5 | 20 / 13 | |
| 3.1.4 | 20 / 13 | |
| 3.1.1 | 19 / 13 | |
| 3.0.11 | 19 / 13 | |
| 3.0.9 | 19 / 13 | |
| 3.0.8 | 19 / 13 | |
| 3.0.7 | 19 / 13 | |
| 3.0.6 | 18 / 13 | |
| 3.0.5 | 18 / 13 | |
| 3.0.4 | 18 / 13 | |
| 3.0.3 | 18 / 13 | |
| 3.0.2 | 18 / 13 | |
| 3.0.1 | 18 / 13 | |
| 3.0.0 | 18 / 13 | |
| 2.28.6 | 39 / 38 | |
| 2.28.5 | 39 / 38 | |
| 2.28.4 | 39 / 38 | |
| 2.26.4 | 39 / 38 | |
| 2.20.1 | 50 / 40 |
v3.6.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.5.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.5.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.4.5
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.4.4
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.4.3
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.4.2
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.4.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.4.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.3.0
2 findingsSpreading entire process.env into an object — may capture all secrets 65 | log(`Spawning reporter subprocess`); 66 | > 67 | const env = { ...process.env }; 68 | 69 | const subprocess = spawn(process.execPath, args, {
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.2.0
2 findingsThis version was published by a different npm account than previous versions on 2026-03-19. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.12
2 findingsThis version was published by a different npm account than previous versions on 2026-03-11. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.11
2 findingsThis version was published by a different npm account than previous versions on 2026-03-05. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.10
2 findingsThis version was published by a different npm account than previous versions on 2026-02-25. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.9
2 findingsThis version was published by a different npm account than previous versions on 2026-02-19. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.8
2 findingsThis version was published by a different npm account than previous versions on 2026-02-12. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.7
2 findingsThis version was published by a different npm account than previous versions on 2026-02-05. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.6
2 findingsThis version was published by a different npm account than previous versions on 2026-02-02. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.5
2 findingsThis version was published by a different npm account than previous versions on 2026-01-19. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.4
2 findingsThis version was published by a different npm account than previous versions on 2026-01-14. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.1.1
2 findingsThis version was published by a different npm account than previous versions on 2025-12-29. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.0.11
2 findingsThis version was published by a different npm account than previous versions on 2025-11-04. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.0.9
2 findingsPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
[Accepted risk] This version was published by a different npm account than previous versions on 2025-10-23. This could indicate a legitimate maintainer transition or an account compromise.
v3.0.8
2 findingsPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
[Accepted risk] This version was published by a different npm account than previous versions on 2025-10-21. This could indicate a legitimate maintainer transition or an account compromise.
v3.0.7
2 findingsPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
[Accepted risk] This version was published by a different npm account than previous versions on 2025-10-08. This could indicate a legitimate maintainer transition or an account compromise.
v3.0.6
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.0.5
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v3.0.4
2 findingsPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
[Accepted risk] This version was published by a different npm account than previous versions on 2025-09-02. This could indicate a legitimate maintainer transition or an account compromise.
v3.0.3
2 findingsPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
[Accepted risk] This version was published by a different npm account than previous versions on 2025-08-28. This could indicate a legitimate maintainer transition or an account compromise.
v3.0.2
2 findingsPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
[Accepted risk] This version was published by a different npm account than previous versions on 2025-08-27. This could indicate a legitimate maintainer transition or an account compromise.
v3.0.1
2 findingsPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
[Accepted risk] This version was published by a different npm account than previous versions on 2025-08-21. This could indicate a legitimate maintainer transition or an account compromise.
v3.0.0
2 findingsPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
[Accepted risk] This version was published by a different npm account than previous versions on 2025-08-13. This could indicate a legitimate maintainer transition or an account compromise.
v2.28.6
2 findingsThis version was published by a different npm account than previous versions on 2026-02-12. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.28.5
2 findingsThis version was published by a different npm account than previous versions on 2026-02-10. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.28.4
2 findingsThis version was published by a different npm account than previous versions on 2026-01-27. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.26.4
2 findingsThis version was published by a different npm account than previous versions on 2025-10-29. This could indicate a legitimate maintainer transition or an account compromise.
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.20.1
5 findingsSpreading entire process.env into an object — may capture all secrets 42 | ...extraNodeArgs, 43 | ]; > 44 | const envVars = { ...process.env, ...extraEnvVars }; 45 | const childProcess = fork(scriptPath, scriptArgs, { 46 | stdio: "inherit",
Silent detached process — runs invisibly in the background (reverse shells, miners) 274 | ); 275 | > 276 | const subprocess = spawn( 277 | process.execPath, 278 | [reportTelemetryConsentPath, telemetryConsent ? "yes" : "no"],
Silent detached process — runs invisibly in the background (reverse shells, miners) 274 | ); 275 | > 276 | const subprocess = spawn( 277 | process.execPath, 278 | [reportTelemetryConsentPath, telemetryConsent ? "yes" : "no"],
Spreading entire process.env into an object — may capture all secrets 28 | ]; 29 | > 30 | const envVars = { ...process.env, ...extraEnvVars }; 31 | 32 | const childProcess = fork(scriptPath, scriptArgs, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.