npm / pnpm / 12.15.0

pnpm 12.15.0

Source
https://github.com/pnpm/pnpm
Artifact scanned
pnpm-12.15.0.tgz (npm tarball · 1.0 MB · SHA-256 f5173f6127cc…)
Compared with
pnpm-12.14.0.tgz (0 signals introduced since)
Files
8 scanned, 6 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 2 info
Scan time
3.8 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 1 of 1 warn and critical signal; 1 demoted to info.
Disclude version
4.3.0
Scanned (UTC)
2026-10-23 18:57

Signals

Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.

  1. info high-complexity CHANGELOG.md:3004:101

    compression ratio 0.848 is >2σ above file mean 0.693 (raw pass, confidence 0.50)

      - Peer-resolution variants of one package version now collapse onto a single copy (ports pnpm v11's `depPathByPkgId` mapping) instead of conflict-nesting a copy under every dependent — on peer-variant-heavy graphs (such as `bit`'s) the old behavior also made the per-path walk explode.
  2. info warn → info by review dynamic-import bin/pnpm.mjs:79:44

    dynamic `import(...)` with a non-literal specifier (ast pass, confidence 0.65)

      console.error(`Downloading the pnpm ${version} binary for ${process.platform}-${process.arch}...`)
      const { downloadPnpmExecutable } = await import(GET_PNPM).catch((err) => {
        fail(`This copy of the pnpm package is missing the downloader it needs: ${err.message}`)
      })
    likely benign LLM, confidence 0.80 pnpm's CLI launcher dynamically imports a downloader module (via a GET_PNPM constant) to fetch the pnpm binary for the current platform.
    Reasoning

    The dynamic import targets GET_PNPM, a module-level constant that the snippet does not show, and the surrounding code is pnpm's own launcher. It downloads the pnpm binary for the current platform and fails with a clear message if the downloader module is missing. That is a plausible bootstrap pattern for a package manager, not obfuscation. The residual doubt is that the specifier is non-literal and its value is not visible here, so a tampered constant could redirect the import.

Reproduce This Scan

Run disclude locally to verify. These commands scan the published file; the "new in this release" marks come from comparing it with the previous release's file, which they don't repeat. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.

cargo install disclude --version 4.3.0
curl -fsSL -o pnpm-12.15.0.tgz https://registry.npmjs.org/pnpm/-/pnpm-12.15.0.tgz
printf '%s  %s\n' f5173f6127cc505cdb36ec17719fe54a8511c6fd8560c7ceb4bf7c73e3b4458b pnpm-12.15.0.tgz | shasum -a 256 -c -
mkdir pkg && tar -xzf pnpm-12.15.0.tgz -C pkg --strip-components 1
disclude scan --untrusted --severity info pkg