PkgRadar

Package evidence

[email protected]

Install Lifecycle Remote Or Exec: postinstall="node -e \"if(process.env.CI==='true'||process.env.MARTIN_SUPPRESS_POSTINSTALL==='1'){process.exit(0)};const lines=['','MartinLoop installed. First-run guided flow:',' npx -y martin-loop@latest start',' npx -y martin-loop@latest demo',' npx -y martin-loop@latest run \\\"your objective\\\" --verify \\\"npm test\\\"','','Governed runs are default. MartinLoop auto-checks doctor, session-start, and preflight, then executes when the environment is ready.'];console.log(lines.join('\\\\n'));\""

Trust signals

Why this verdict

PkgRadar discounts a release’s score when public reputation argues against novel malware. The verdict above already reflects these — the panel just explains what was applied.

Versions published
27
First published
Apr 2026
Publisher
GitHub ActionsTrusted automation · −70% score

Effective trust discount applied: 70% (max across signals — discounts don’t stack). New install-lifecycle deltas vs the previous release would clear the discount.

Recommended action

Block this update

Static evidence trips multiple high-signal indicators. Quarantine the release until the publisher validates the change or you can rule out the indicators below.

Block this release in CIcurl · GitHub Actions

Fail the build when this package version is added or upgraded. Replace $PKGRADAR_TOKEN with a Pro / Team API key from your dashboard.

curl -fsS https://pkgradar.com/gate/npm \
  -H "Authorization: Bearer $PKGRADAR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"specs":["[email protected]"],"fail_on":"high"}'

GitHub Actions step:

- name: PkgRadar gate
  run: |
    curl -fsS https://pkgradar.com/gate/npm \
      -H "Authorization: Bearer ${{ secrets.PKGRADAR_TOKEN }}" \
      -H "Content-Type: application/json" \
      -d '{"specs":["[email protected]"],"fail_on":"high"}'
Artifact bytes136,887
Previous version0.3.2
Published2026-06-09T04:43:18.583Z
SHA-2567760de31d67a93a8a0acb6c105c7577d5074e1c39a68d5b37f425121f8528533

Why flagged

What the scanner saw

New Lifecycle Script Vs Previous: postinstall added in 0.3.3 vs 0.3.2: "node -e \"if(process.env.CI==='true'||process.env.MARTIN_SUPPRESS_POSTINSTALL==='1'){process.exit(0)};const lines=['','MartinLoop installed. First-run guided flow:',' npx -y martin-loop@latest start',' npx -y martin-loop@latest demo',' npx -y martin-loop@latest run \\\"your objective\\\" --verify \\\"npm test\\\"','','Governed runs are default. MartinLoop auto-checks doctor, session-start, and preflight, then executes when the environment is ready.'];console.log(lines.join('\\\\n'));\""

Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.

Availability ledger

available

high
Last checked
highRisk
75Score
0.3.3Version
Status history (1 event)
  1. newavailable · risk high · score 75 · status changed

Evidence

Static findings

2 static · 1 from release diff · showing high-signal first.

SeverityKindPathDetailPoints
highNew Lifecycle Script Vs Previouspackage.jsonpostinstall added in 0.3.3 vs 0.3.2: "node -e \"if(process.env.CI==='true'||process.env.MARTIN_SUPPRESS_POSTINSTALL==='1'){process.exit(0)};const lines=['','MartinLoop installed. First-run guided flow:',' npx -y martin-loop@latest start',' npx -y martin-loop@latest demo',' npx -y martin-loop@latest run \\\"your objective\\\" --verify \\\"npm test\\\"','','Governed runs are default. MartinLoop auto-checks doctor, session-start, and preflight, then executes when the environment is ready.'];console.log(lines.join('\\\\n'));\""40
highInstall Lifecycle Remote Or Execpackage.jsonpostinstall="node -e \"if(process.env.CI==='true'||process.env.MARTIN_SUPPRESS_POSTINSTALL==='1'){process.exit(0)};const lines=['','MartinLoop installed. First-run guided flow:',' npx -y martin-loop@latest start',' npx -y martin-loop@latest demo',' npx -y martin-loop@latest run \\\"your objective\\\" --verify \\\"npm test\\\"','','Governed runs are default. MartinLoop auto-checks doctor, session-start, and preflight, then executes when the environment is ready.'];console.log(lines.join('\\\\n'));\""30
Show all 3 findings (low-signal and informational)
SeverityKindPathDetailPoints
highNew Lifecycle Script Vs Previouspackage.jsonpostinstall added in 0.3.3 vs 0.3.2: "node -e \"if(process.env.CI==='true'||process.env.MARTIN_SUPPRESS_POSTINSTALL==='1'){process.exit(0)};const lines=['','MartinLoop installed. First-run guided flow:',' npx -y martin-loop@latest start',' npx -y martin-loop@latest demo',' npx -y martin-loop@latest run \\\"your objective\\\" --verify \\\"npm test\\\"','','Governed runs are default. MartinLoop auto-checks doctor, session-start, and preflight, then executes when the environment is ready.'];console.log(lines.join('\\\\n'));\""40
highInstall Lifecycle Remote Or Execpackage.jsonpostinstall="node -e \"if(process.env.CI==='true'||process.env.MARTIN_SUPPRESS_POSTINSTALL==='1'){process.exit(0)};const lines=['','MartinLoop installed. First-run guided flow:',' npx -y martin-loop@latest start',' npx -y martin-loop@latest demo',' npx -y martin-loop@latest run \\\"your objective\\\" --verify \\\"npm test\\\"','','Governed runs are default. MartinLoop auto-checks doctor, session-start, and preflight, then executes when the environment is ready.'];console.log(lines.join('\\\\n'));\""30
lowInstall-time lifecycle scriptpackage.jsonpostinstall="node -e \"if(process.env.CI==='true'||process.env.MARTIN_SUPPRESS_POSTINSTALL==='1'){process.exit(0)};const lines=['','MartinLoop installed. First-run guided flow:',' npx -y martin-loop@latest start',' npx -y martin-loop@latest demo',' npx -y martin-loop@latest run \\\"your objective\\\" --verify \\\"npm test\\\"','','Governed runs are default. MartinLoop auto-checks doctor, session-start, and preflight, then executes when the environment is ready.'];console.log(lines.join('\\\\n'));\""5

Manifest

Package metadata

Scripts22
  • bench:buildpnpm --filter @martin/benchmarks build
  • bench:evalpnpm --filter @martin/benchmarks eval
  • bench:report:ralphypnpm --filter @martin/benchmarks report:ralphy
  • bench:testpnpm --filter @martin/benchmarks test
  • buildpnpm --filter @martin/contracts build && pnpm --filter @martin/core build && pnpm --filter @martin/adapters build && pnpm --filter @martin/benchmarks build && pnpm --filter @martin/cli build && pnpm --filter @martinloop/mcp build && node ./scripts/build-public-facade.mjs
  • lintpnpm -r lint
  • mcp:pack:smokepnpm --filter @martinloop/mcp smoke:pack
  • mcp:published:smokepnpm --filter @martinloop/mcp smoke:published
  • mcp:published:smoke:packpnpm --filter @martinloop/mcp smoke:published:pack
  • oss:validatenode ./scripts/oss-boundary.mjs
  • postinstallnode -e "if(process.env.CI==='true'||process.env.MARTIN_SUPPRESS_POSTINSTALL==='1'){process.exit(0)};const lines=['','MartinLoop installed. First-run guided flow:',' npx -y martin-loop@latest start',' npx -y martin-loop@latest demo',' npx -y martin-loop@latest run \"your objective\" --verify \"npm test\"','','Governed runs are default. MartinLoop auto-checks doctor, session-start, and preflight, then executes when the environment is ready.'];console.log(lines.join('\\n'));"
  • prepackpnpm build && node ./scripts/root-release-guard.mjs --pack
  • public:copy-scannode ./scripts/public-copy-scan.mjs
  • public:git-surfacenode ./scripts/public-git-surface-guard.mjs
  • public:smokenode ./scripts/public-facade-smoke.mjs
  • release:matrix:localnode ./scripts/release-matrix.mjs
  • release:root:guardnode ./scripts/root-release-guard.mjs --pack
  • release:validate-localnode ./scripts/rc-validation.mjs
  • release:validate-local:installnode ./scripts/rc-validation.mjs --install
  • release:validate:platformsnode ./scripts/release-matrix.mjs
  • run:clipnpm --filter @martin/cli dev
  • testpnpm -r --workspace-concurrency=1 test && node --test scripts/tests/*.mjs
Dependencies7
  • @open-policy-agent/opa-wasm^1.10.0
  • @opentelemetry/api-logs^0.214.0
  • @opentelemetry/exporter-logs-otlp-http^0.214.0
  • @opentelemetry/resources^2.6.1
  • @opentelemetry/sdk-logs^0.214.0
  • @opentelemetry/semantic-conventions^1.38.0
  • ts-morph^21.0.0