← Home

@opensip-tools/cli

OpenSIP Tools CLI — codebase analysis from the command line

24
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

opensip

Accepted risks

Findings the reviewer chose to accept rather than block on.

SourceRuleReasonAccepted byWhen
phantom-deps phantom-dep:@opensip-tools/graph-go AI (phantom-deps): Same-org plugin loaded dynamically; matches existing accepted pattern for other graph-* siblings. ai
phantom-deps phantom-dep:@opensip-tools/graph-java AI (phantom-deps): Same-org plugin loaded dynamically; matches existing accepted pattern for other graph-* siblings. ai
phantom-deps phantom-dep:@opensip-tools/graph-python AI (phantom-deps): CLI dynamically loads same-org language plugins; phantom dep is expected. ai
phantom-deps phantom-dep:@opensip-tools/graph-rust AI (phantom-deps): CLI dynamically loads same-org language plugins; phantom dep is expected. ai
phantom-deps phantom-dep:@opensip-tools/checks-universal AI (phantom-deps): CLI dynamically loads same-org check plugins; phantom dep is expected. ai
phantom-deps phantom-dep:@opensip-tools/graph-typescript AI (phantom-deps): CLI dynamically loads same-org language plugins; phantom dep is expected. ai
phantom-deps phantom-dep:@opensip-tools/checks-typescript AI (phantom-deps): CLI dynamically loads same-org check plugins; phantom dep is expected. ai
semgrep semgrep:env-spread AI (semgrep): Fires in e2e test helper passing process.env to child process — standard test pattern, not a secret leak. ai
semgrep semgrep:etc-passwd-access AI (semgrep): Fires in error-handling test constructing a mock EACCES error string — no actual /etc/passwd access. ai
phantom-deps phantom-dep:glob AI (phantom-deps): glob is a declared dep used in config/build context; stable false positive for this package. ai
phantom-deps phantom-dep:@opensip-tools/simulation AI (phantom-deps): Same-org scoped dep; likely used indirectly or via dynamic import in CLI flows. ai
typosquat typosquat.levenshtein:joi AI (typosquat): Scoped package @opensip-tools/cli; Levenshtein match to 'joi' is a false positive with no brand impersonation. ai

Versions (showing 24 of 24)

Version Deps Published
2.3.3 35 / 6
2.3.2 35 / 6
2.3.1 35 / 6
2.3.0 35 / 6
2.1.0 35 / 6
2.0.1 24 / 6
2.0.0 24 / 6
1.3.1 19 / 6
1.3.0 19 / 6
1.2.0 19 / 6
1.0.10 18 / 6
1.0.9 18 / 6
1.0.8 18 / 6
1.0.7 18 / 6
1.0.6 18 / 6
1.0.5 18 / 6
0.6.1 10 / 6
0.6.0 10 / 6
0.5.0 10 / 6
0.4.0 10 / 6
0.3.0 10 / 6
0.2.5 10 / 6
0.2.4 10 / 6
0.1.0 8 / 5

v2.3.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.

v2.3.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.

v2.3.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.

v2.3.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.

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

v2.0.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.

v2.0.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.

v1.3.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.

v1.3.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.

v1.2.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.

v1.0.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.

v1.0.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.

v1.0.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.

v1.0.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.

v1.0.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.

v1.0.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.

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

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

v0.5.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.

v0.4.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.

v0.3.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.

v0.2.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.

v0.2.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.

v0.1.0

7 findings
HIGH env-spread: src/__tests__/e2e.test.ts:28 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/opensip-ai/opensip-tools/blob/aec9240c2f5285e400999bee967729c5c2dab2a6/src/__tests__/e2e.test.ts#L28 26 | encoding: 'utf-8', 27 | timeout: 60_000, > 28 | env: { ...process.env, NO_COLOR: '1' }, 29 | }); 30 | return { stdout, exitCode: 0 };

HIGH env-spread: src/__tests__/e2e.test.ts:43 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/opensip-ai/opensip-tools/blob/aec9240c2f5285e400999bee967729c5c2dab2a6/src/__tests__/e2e.test.ts#L43 41 | encoding: 'utf-8', 42 | timeout: 60_000, > 43 | env: { ...process.env, NO_COLOR: '1' }, 44 | }); 45 | return { stdout, exitCode: 0 };

HIGH etc-passwd-access: src/__tests__/error-handling.test.ts:82 semgrep

Accessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/opensip-ai/opensip-tools/blob/aec9240c2f5285e400999bee967729c5c2dab2a6/src/__tests__/error-handling.test.ts#L82 80 | 81 | it('detects EACCES permission denied errors', () => { > 82 | const err = new Error('EACCES: permission denied, open /etc/shadow'); 83 | const suggestion = getErrorSuggestion(err); 84 | expect(suggestion).not.toBeNull();

HIGH etc-passwd-access: src/__tests__/persistence.test.ts:61 semgrep

Accessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/opensip-ai/opensip-tools/blob/aec9240c2f5285e400999bee967729c5c2dab2a6/src/__tests__/persistence.test.ts#L61 59 | 60 | it('strips dots (used in path traversal)', () => { > 61 | // ../../etc/passwd -> .. collapsed first, then individual special chars replaced 62 | const result = storeModule.sanitizeForFilename('../../etc/passwd'); 63 | expect(result).not.toContain('/');

HIGH etc-passwd-access: src/__tests__/persistence.test.ts:62 semgrep

Accessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/opensip-ai/opensip-tools/blob/aec9240c2f5285e400999bee967729c5c2dab2a6/src/__tests__/persistence.test.ts#L62 60 | it('strips dots (used in path traversal)', () => { 61 | // ../../etc/passwd -> .. collapsed first, then individual special chars replaced > 62 | const result = storeModule.sanitizeForFilename('../../etc/passwd'); 63 | expect(result).not.toContain('/'); 64 | expect(result).not.toContain('.');

HIGH etc-passwd-access: src/__tests__/persistence.test.ts:170 semgrep

Accessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/opensip-ai/opensip-tools/blob/aec9240c2f5285e400999bee967729c5c2dab2a6/src/__tests__/persistence.test.ts#L170 168 | describe('path traversal prevention', () => { 169 | it('saveSession uses basename to prevent directory traversal in recipe names', () => { > 170 | const session = makeSession({ recipe: '../../etc/passwd' }); 171 | const filepath = storeModule.saveSession(session); 172 | // The filepath should stay within the sessions directory

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.