@openscout/agent-sessions
Browser-safe session boundary for OpenScout agent sessions
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-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 findingsSpreading 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",
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 ?? {}),
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.63
5 findingsSpreading 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",
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 ?? {}),
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.62
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.61
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.60
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.58
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.57
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.56
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.55
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.54
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.53
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.52
6 findingsSpreading 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",
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 ?? {}),
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",
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.51
5 findingsSpreading 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",
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 ?? {}),
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.50
5 findingsSpreading 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",
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 ?? {}),
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.49
5 findingsSpreading 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",
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 ?? {}),
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.48
5 findingsSpreading 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",
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 ?? {}),
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",
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",
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.