@usebruno/cli
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 |
|---|---|---|---|---|
| semgrep | semgrep:env-spread | AI (semgrep): Bruno CLI intentionally passes process.env to collection scripts; this is documented behavior for an API testing tool. | ai | |
| typosquat | typosquat.levenshtein:joi | AI (typosquat): Scoped package @usebruno/cli is not a typosquat of joi; edit-distance match is a false positive. | ai | |
| phantom-deps | phantom-dep:chai | AI (phantom-deps): chai is a test assertion library used in Bruno collection scripts at runtime, not imported directly by the CLI source. | ai | |
| phantom-deps | phantom-dep:@usebruno/lang | AI (phantom-deps): Same-org scoped package; likely used transitively or in config; stable false positive for this package. | ai |
Versions (showing 5 of 5)
| Version | Deps | Published |
|---|---|---|
| 3.4.1 | 27 / 0 | |
| 3.4.0 | 27 / 0 | |
| 3.3.0 | 27 / 0 | |
| 3.2.2 | 27 / 0 | |
| 3.2.1 | 27 / 0 |
v3.4.1
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.4.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v3.3.0
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/usebruno/bruno/blob/e3e298e494f1800fa128a9c4514406d3212d98a2/src/commands/run.js#L847 845 | const dotEnvPath = path.join(collectionPath, '.env'); 846 | const dotEnvExists = await exists(dotEnvPath); > 847 | const processEnvVars = { 848 | ...process.env 849 | };
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v3.2.2
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/usebruno/bruno/blob/13b455f076f92946788bcfd3172218bac34be411/src/commands/run.js#L847 845 | const dotEnvPath = path.join(collectionPath, '.env'); 846 | const dotEnvExists = await exists(dotEnvPath); > 847 | const processEnvVars = { 848 | ...process.env 849 | };
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v3.2.1
2 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/usebruno/bruno/blob/4f1f0a06e3c29e834a94782a37837565d66fc087/src/commands/run.js#L847 845 | const dotEnvPath = path.join(collectionPath, '.env'); 846 | const dotEnvExists = await exists(dotEnvPath); > 847 | const processEnvVars = { 848 | ...process.env 849 | };
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.