← Home

@openscout/agent-sessions

Browser-safe session boundary for OpenScout agent sessions

16
Versions
License
No
Install Scripts
Missing
Provenance

Supply chain provenance

Status for the latest visible version.

No SLSA provenance npm registry signatures No source commit

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

arach

Accepted risks

Findings the reviewer chose to accept rather than block on.

SourceRuleReasonAccepted byWhen
semgrep semgrep:env-spread AI (semgrep): Spreading process.env into subprocess spawn is standard for CLI wrapper adapters; no exfiltration path. ai
semgrep semgrep:shady-links-raw-ip AI (semgrep): 127.0.0.1 is localhost for a local server; not a shady external IP. ai

Versions (showing 16 of 16)

Version Deps Published
0.2.64 0 / 3
0.2.63 0 / 3
0.2.62 0 / 3
0.2.61 0 / 3
0.2.60 0 / 3
0.2.58 0 / 3
0.2.57 0 / 3
0.2.56 0 / 3
0.2.55 0 / 3
0.2.54 0 / 3
0.2.53 0 / 3
0.2.52 0 / 3
0.2.51 0 / 3
0.2.50 0 / 3
0.2.49 0 / 3
0.2.48 0 / 3

v0.2.64

5 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.63

5 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.62

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.61

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.60

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.58

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.57

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.56

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.55

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.54

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.53

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.52

6 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:513 semgrep

Spreading entire process.env into an object — may capture all secrets 511 | 512 | const codexExecutable = await resolveCodexExecutable(); > 513 | const childEnv = { 514 | ...process.env, 515 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

HIGH env-spread: src/codex-launch-config.test.ts:9 semgrep

Spreading entire process.env into an object — may capture all secrets 7 | const args = buildScoutMcpCodexLaunchArgs({ 8 | currentDirectory: "/Users/arach/dev/openscout", > 9 | env: { 10 | ...process.env, 11 | OPENSCOUT_SETUP_CWD: "/Users/arach",

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.

v0.2.51

5 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:514 semgrep

Spreading entire process.env into an object — may capture all secrets 512 | const child = spawn(codexExecutable, ["app-server", ...options.launchArgs], { 513 | cwd: options.cwd, > 514 | env: { 515 | ...process.env, 516 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

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.

v0.2.50

5 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:514 semgrep

Spreading entire process.env into an object — may capture all secrets 512 | const child = spawn(codexExecutable, ["app-server", ...options.launchArgs], { 513 | cwd: options.cwd, > 514 | env: { 515 | ...process.env, 516 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

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.

v0.2.49

5 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:514 semgrep

Spreading entire process.env into an object — may capture all secrets 512 | const child = spawn(codexExecutable, ["app-server", ...options.launchArgs], { 513 | cwd: options.cwd, > 514 | env: { 515 | ...process.env, 516 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

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.

v0.2.48

5 findings
HIGH env-spread: src/adapters/claude-code.ts:112 semgrep

Spreading entire process.env into an object — may capture all secrets 110 | this.process = Bun.spawn(["claude", ...args], { 111 | cwd: this.config.cwd, > 112 | env: { ...process.env, ...this.config.env }, 113 | stdin: "pipe", 114 | stdout: "pipe",

HIGH env-spread: src/adapters/codex.ts:514 semgrep

Spreading entire process.env into an object — may capture all secrets 512 | const child = spawn(codexExecutable, ["app-server", ...options.launchArgs], { 513 | cwd: options.cwd, > 514 | env: { 515 | ...process.env, 516 | ...(this.config.env ?? {}),

HIGH env-spread: src/adapters/opencode.ts:68 semgrep

Spreading entire process.env into an object — may capture all secrets 66 | this.serverProcess = Bun.spawn(["opencode", ...args], { 67 | cwd: this.config.cwd, > 68 | env: { ...process.env, ...this.config.env }, 69 | stdout: "pipe", 70 | stderr: "pipe",

HIGH env-spread: src/adapters/pi.ts:87 semgrep

Spreading entire process.env into an object — may capture all secrets 85 | this.process = Bun.spawn(["pi", ...args], { 86 | cwd: this.config.cwd, > 87 | env: { ...process.env, ...this.config.env }, 88 | stdin: "pipe", 89 | stdout: "pipe",

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.