@opensip-tools/cli
OpenSIP Tools CLI — codebase analysis from the command line
Supply chain provenance
Status for the latest visible version.
Maintainers
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| 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 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.3.2
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.3.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.3.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.1.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.0.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v2.0.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.3.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.3.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.2.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.0.10
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.0.9
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.0.8
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.0.7
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.0.6
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v1.0.5
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v0.6.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v0.6.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v0.5.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v0.4.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v0.3.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v0.2.5
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v0.2.4
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v0.1.0
7 findingsSpreading 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 };
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 };
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();
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('/');
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('.');
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
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.