← Home

@usebruno/cli

5
Versions
License
No
Install Scripts
Missing
Provenance

Supply chain provenance

Status for the latest visible version.

No SLSA provenance npm registry signatures gitHead linked

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

anoopmd

Keywords

APItestingautomationclicommand-linebrunoHTTP requestsrest-apiapi-clientapi-automationrequest-handlingmock-apihttp-clientasyncpromisejavascriptnodejsautomation-toolpostman-alternativeapi-scripting

Accepted risks

Findings the reviewer chose to accept rather than block on.

SourceRuleReasonAccepted byWhen
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 finding
LOW No provenance attestation provenance

Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.

v3.4.0

1 finding
LOW No provenance attestation provenance

Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.

v3.3.0

2 findings
HIGH env-spread: src/commands/run.js:847 semgrep

Spreading 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 | };

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v3.2.2

2 findings
HIGH env-spread: src/commands/run.js:847 semgrep

Spreading 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 | };

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v3.2.1

2 findings
HIGH env-spread: src/commands/run.js:847 semgrep

Spreading 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 | };

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.