← Home

@cleocode/adapters

Unified provider adapters for CLEO (Claude Code, OpenCode, Cursor)

51
Versions
MIT
License
No
Install Scripts
Verified
Provenance

Supply chain provenance

Status for the latest visible version.

SLSA provenance attestation npm registry signatures No source commit

Maintainers

kryptobaseddev

Accepted risks

Findings the reviewer chose to accept rather than block on.

SourceRuleReasonAccepted byWhen
semgrep semgrep:env-spread AI (semgrep): Intentional env-merge pattern in a spawn wrapper for CLI adapters; not credential exfiltration. ai
provenance publisher-changed AI (provenance): Publisher changed to GitHub Actions as part of a legitimate CI/CD migration; SLSA provenance attestation confirms integrity. Repo URL still points to original maintainer's org. ai
semgrep semgrep:etc-passwd-access AI (semgrep): All instances are in test files asserting /etc/passwd is DENIED by path allowlist logic — security tests, not credential harvesting. ai
semgrep semgrep:silent-process-exec AI (semgrep): Spawns the 'opencode' CLI tool, which is a documented provider target of this adapter package. Core functionality, not a reverse shell or miner. ai
semgrep semgrep:silent-process-exec-var AI (semgrep): Same spawn call as silent-process-exec — spawning 'opencode' CLI is the intended adapter functionality for this package. ai

Versions (showing 51 of 287)

View all versions
Version Deps Published
2026.6.12 6 / 3
2026.6.11 6 / 3
2026.6.10 6 / 3
2026.6.9 6 / 3
2026.6.8 6 / 3
2026.6.7 6 / 3
2026.6.6 6 / 3
2026.6.5 6 / 3
2026.6.4 6 / 3
2026.6.3 6 / 3
2026.6.2 6 / 3
2026.6.1 6 / 3
2026.6.0 6 / 3
2026.5.134 6 / 3
2026.5.133 6 / 3
2026.5.132 6 / 3
2026.5.131 6 / 3
2026.5.130 6 / 3
2026.5.129 6 / 3
2026.5.128 6 / 3
2026.5.127 6 / 3
2026.5.126 6 / 3
2026.5.125 6 / 3
2026.5.124 6 / 3
2026.5.123 6 / 3
2026.5.122 6 / 3
2026.5.121 6 / 3
2026.5.120 6 / 3
2026.5.114 6 / 3
2026.5.113 6 / 3
2026.5.112 6 / 3
2026.5.111 6 / 3
2026.5.110 6 / 3
2026.5.109 6 / 3
2026.5.108 6 / 3
2026.5.107 6 / 3
2026.5.106 6 / 3
2026.5.105 6 / 3
2026.5.104 6 / 3
2026.5.103 6 / 3
2026.5.102 6 / 3
2026.5.101 6 / 3
2026.5.100 6 / 3
2026.5.99 6 / 3
2026.5.98 6 / 3
2026.5.97 6 / 3
2026.5.96 6 / 3
2026.5.95 6 / 3
2026.5.94 6 / 3
2026.5.93 6 / 3
2026.5.92 6 / 3

v2026.6.12

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.11

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.10

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.9

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.8

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.7

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.6

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.5

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.4

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.3

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.2

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.1

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.6.0

1 finding
INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.134

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.133

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.132

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.131

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.130

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.129

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.128

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.127

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.126

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.125

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.124

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.123

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.122

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.121

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.120

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.114

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.113

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.112

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.111

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.110

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.109

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.108

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.107

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.106

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.105

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.104

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.103

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.102

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.101

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.100

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.99

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.98

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.97

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.96

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.95

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.94

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.93

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.

v2026.5.92

2 findings
HIGH env-spread: src/providers/claude-code/spawn.ts:126 semgrep

Spreading entire process.env into an object — may capture all secrets 124 | const optionsEnv = context.options?.env as Record<string, string> | undefined; 125 | if (optionsEnv !== undefined && Object.keys(optionsEnv).length > 0) { > 126 | spawnOpts.env = { ...process.env, ...optionsEnv }; 127 | } 128 |

INFO Has SLSA provenance attestation provenance

Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.