@onmars/lunar
CLI for Lunar — install globally and run 'lunar' to start your AI companion
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
Keywords
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| semgrep | semgrep:etc-passwd-access | AI (semgrep): String literal in test assertion, not actual file access; stable FP for this package. | ai |
Versions (showing 20 of 20)
| Version | Deps | Published |
|---|---|---|
| 0.15.1 | 10 / 0 | |
| 0.15.0 | 10 / 0 | |
| 0.14.0 | 10 / 0 | |
| 0.13.0 | 10 / 0 | |
| 0.12.2 | 10 / 0 | |
| 0.12.1 | 10 / 0 | |
| 0.12.0 | 10 / 0 | |
| 0.11.4 | 9 / 0 | |
| 0.11.3 | 9 / 0 | |
| 0.11.2 | 9 / 0 | |
| 0.11.1 | 9 / 0 | |
| 0.11.0 | 9 / 0 | |
| 0.10.3 | 9 / 0 | |
| 0.10.2 | 9 / 0 | |
| 0.10.1 | 9 / 0 | |
| 0.10.0 | 9 / 0 | |
| 0.9.1 | 9 / 0 | |
| 0.9.0 | 9 / 0 | |
| 0.8.0 | 9 / 0 | |
| 0.4.7 | 10 / 0 |
v0.15.1
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/1fea9bcdd54c089970667ec4f9acb2894d881039/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.15.0
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/fb2457812b83e655510736a12b135cb0d1da184c/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.14.0
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/267370e2de381fb7bb82d766042109e031e928e4/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.13.0
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/38f7eee243c07647bcfb89549b976ff0309ddbb5/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.12.2
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/a154fdca67388c7f49d35d20dc1354f884708e98/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.12.1
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/cee9d9f30fa06fe3500b6b8877667cea5f3732fc/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.12.0
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/b581c54280320aee0d526897abc5aa8033ddf874/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.11.4
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/6b102aafc2ce9138c80d6bb98ec8e0f3e4720564/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.11.3
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/374c1740ec5085ce1131f9802403be0fb81c4be3/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.11.2
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/abad2a52f834115f16c7fbbe0f85803b4bab6360/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.11.1
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/7c29c0915c46290e12a7995f39c3789386c71fe2/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.11.0
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/46381b1844bb250c93e7ecc73a1ede7888eb6263/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.10.3
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/3b2e96ba5747c9329640c6a31bea232a9e04d400/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.10.2
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/9ab2a3091679b4d7c4004182d2eb5fd7fa26a1f7/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.10.1
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/8cc7803eecd2b7bf98fa5eaf68ff9d888537ffb2/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.10.0
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/22a62664606a2937a0cde71ce13d030d26d430ff/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.9.1
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/b21572c25621b2d778ad9d2e017f35474858fd33/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.9.0
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/dfe9b83e22911dd262b113f9aabb2b636ac8cf1f/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.8.0
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/594a06fa4b1b2beff859cc25eefed55f25bd1c7a/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.4.7
2 findingsAccessing /etc/passwd or /etc/shadow — credential harvesting on Linux Source: https://github.com/onmars-tech/lunar/blob/03605e375197f6c9c52f1bbf75a4830df9ee08ff/src/__tests__/errors.test.ts#L198 196 | describe('known error: permission denied', () => { 197 | it('matches EACCES', async () => { > 198 | const { errorOutput } = await runWithError('Error: EACCES: permission denied, open /etc/shadow') 199 | 200 | expect(errorOutput).toContain('Permission denied')
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.