@hubspot/cli
The official CLI for developing on HubSpot
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
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| semgrep | semgrep:env-bulk-read | AI (semgrep): Filtering npm_config_ keys from env for child process — legitimate CLI pattern, not exfiltration. | ai | |
| phantom-deps | phantom-dep:inquirer | AI (phantom-deps): inquirer is declared as a runtime dep and used via dynamic imports in a CLI; phantom-dep heuristic is a false positive here. | ai | |
| semgrep | semgrep:api-obfuscation-reflect | AI (semgrep): Reflect.get used in a Proxy handler for terminal rendering — legitimate pattern, not obfuscation. | ai | |
| semgrep | semgrep:env-spread | AI (semgrep): Spreading process.env into child process spawn is standard CLI behavior for passing environment context. | ai | |
| phantom-deps | phantom-dep:js-yaml | AI (phantom-deps): js-yaml is listed in dependencies and @types/js-yaml in devDependencies; likely used indirectly or via config files. | ai | |
| typosquat | typosquat.levenshtein:joi | AI (typosquat): Scoped @hubspot/cli package; no relation to unscoped 'joi'. False positive from edit-distance heuristic. | ai | |
| semgrep | semgrep:base64-decode | AI (semgrep): Decoding base64 component IDs for internal ID parsing; no malicious payload pattern. | ai |
Versions (showing 14 of 14)
| Version | Deps | Published |
|---|---|---|
| 8.8.0 | 30 / 30 | |
| 8.7.0 | 30 / 30 | |
| 8.6.0 | 30 / 30 | |
| 8.5.0 | 30 / 30 | |
| 8.4.0 | 30 / 30 | |
| 8.3.0 | 30 / 30 | |
| 8.2.0 | 30 / 30 | |
| 8.1.0 | 31 / 30 | |
| 8.0.0 | 29 / 30 | |
| 7.11.3 | 27 / 30 | |
| 7.11.2 | 27 / 30 | |
| 7.11.1 | 27 / 30 | |
| 7.10.0 | 28 / 30 | |
| 7.9.0 | 28 / 30 |
v8.8.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v8.7.0
2 findingsThis version was published by a different npm account than previous versions on 2026-05-20. This could indicate a legitimate maintainer transition or an account compromise.
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v8.6.0
2 findingsThis version was published by a different npm account than previous versions on 2026-05-05. This could indicate a legitimate maintainer transition or an account compromise.
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v8.4.0
4 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/HubSpot/hubspot-cli/blob/5aaee3a52050bb9c352f995e52e414a207058405/commands/mcp/start.js#L32 30 | const child = spawn(`node`, args, { 31 | stdio: 'inherit', > 32 | env: { 33 | ...process.env, 34 | HUBSPOT_MCP_AI_AGENT: aiAgent || 'unknown',
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/HubSpot/hubspot-cli/blob/5aaee3a52050bb9c352f995e52e414a207058405/lib/theme/cmsDevServerProcess.js#L106 104 | fs.copyFileSync(sourceRunnerPath, targetRunnerPath); 105 | // Set environment variables to pass configuration to the runner script > 106 | const env = { ...process.env }; 107 | env.CMS_DEV_SERVER_SRC = absoluteSrc; 108 | env.CMS_DEV_SERVER_DEST = dest;
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/HubSpot/hubspot-cli/blob/5aaee3a52050bb9c352f995e52e414a207058405/mcp-server/utils/command.js#L29 27 | return execAsync(finalCommand, { 28 | cwd: path.resolve(directory), > 29 | env: { 30 | ...process.env, 31 | },
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v8.3.0
4 findingsSpreading entire process.env into an object — may capture all secrets Source: https://github.com/HubSpot/hubspot-cli/blob/7b1ac8c84d1b01abe8d38c8ba03f900e055909da/commands/mcp/start.js#L33 31 | const child = spawn(`node`, args, { 32 | stdio: 'inherit', > 33 | env: { 34 | ...process.env, 35 | HUBSPOT_MCP_AI_AGENT: aiAgent || 'unknown',
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/HubSpot/hubspot-cli/blob/7b1ac8c84d1b01abe8d38c8ba03f900e055909da/lib/theme/cmsDevServerProcess.js#L105 103 | fs.copyFileSync(sourceRunnerPath, targetRunnerPath); 104 | // Set environment variables to pass configuration to the runner script > 105 | const env = { ...process.env }; 106 | env.CMS_DEV_SERVER_SRC = absoluteSrc; 107 | env.CMS_DEV_SERVER_DEST = dest;
Spreading entire process.env into an object — may capture all secrets Source: https://github.com/HubSpot/hubspot-cli/blob/7b1ac8c84d1b01abe8d38c8ba03f900e055909da/mcp-server/utils/command.js#L29 27 | return execAsync(finalCommand, { 28 | cwd: path.resolve(directory), > 29 | env: { 30 | ...process.env, 31 | },
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v8.2.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v8.1.0
2 findingsThis version was published by a different npm account than previous versions on 2026-03-03. This could indicate a legitimate maintainer transition or an account compromise.
Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v8.0.0
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v7.11.3
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v7.11.2
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v7.11.1
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v7.10.0
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v7.9.0
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.