← Home

@hubspot/cli

The official CLI for developing on HubSpot

14
Versions
Apache-2.0
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

camdenphalenbandersonalsorberdeen-hubspotharminder01bkrainer-hsjhilkeratanasiukksvirkou-hubspotbrodgers16jsinesservice-ccsevdavis_hubspottfinley_hsjyeager_hubspotarota-hubspothemangthakkarmshannon_hspsteeleidem-hsamead_hsjnorthridge_hubspotelingyrtscalesrseguraakuhl-hubspotjonmiller_hsjrosa838joeydjedeen-hsbmatto_hsbmadgettmjeanjevensonuserkrysbvandyckjblake_hubspothweaverhubspotankimobreesebrwilsonbent0b0xbash-hsasun1234blamattina_hubspotchiragchadhajazzyclimberjmcdermott

Accepted risks

Findings the reviewer chose to accept rather than block on.

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

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

v8.7.0

2 findings
HIGH Publisher changed: jyeager_hubspot → chiragchadha (on 2026-05-20) provenance

This 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.

LOW No provenance attestation provenance

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

v8.6.0

2 findings
HIGH Publisher changed: chiragchadha → jyeager_hubspot (on 2026-05-05) provenance

This 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.

LOW No provenance attestation provenance

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

v8.4.0

4 findings
HIGH env-spread: commands/mcp/start.js:32 semgrep

Spreading 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',

HIGH env-spread: lib/theme/cmsDevServerProcess.js:106 semgrep

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;

HIGH env-spread: mcp-server/utils/command.js:29 semgrep

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 | },

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.

v8.3.0

4 findings
HIGH env-spread: commands/mcp/start.js:33 semgrep

Spreading 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',

HIGH env-spread: lib/theme/cmsDevServerProcess.js:105 semgrep

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;

HIGH env-spread: mcp-server/utils/command.js:29 semgrep

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 | },

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.

v8.2.0

1 finding
LOW No provenance attestation provenance

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

v8.1.0

2 findings
HIGH Publisher changed: camdenphalen → brodgers16 (on 2026-03-03) provenance

This 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.

LOW No provenance attestation provenance

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

v8.0.0

1 finding
LOW No provenance attestation provenance

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

v7.11.3

1 finding
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.

v7.11.2

1 finding
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.

v7.11.1

1 finding
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.

v7.10.0

1 finding
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.

v7.9.0

1 finding
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.