The scary diff is real.
On September 21, a commit in the Zod repository added a preinstall hook to the package manifest. The added script queried public Ethereum services, fetched a second location, downloaded more code, and tried to execute it during installation.[1]
GitHub's npm incident note calls the loader malicious. It says the related Zod changes did not reach npm publishing. The repository removed the bad changes later that day.[2]
A red commit proves a red commit. It does not identify the bytes a registry served three weeks later.
The tag contains history, not every old file.
Hacker News resurfaced the malicious commit after Zod 4.6.6 shipped. The release page lists that commit in the version's history. It also lists the cleanup commit that reverted it before the tagged release tip.[3]
That is why a release note can mention a malicious ancestor while the final tree excludes the malicious file. A commit list answers what happened on the branch. The tag answers which tree the release names. The registry archive answers which bytes the package manager can download.
The archive is the installable object.
At 09:04 UTC on October 12, the npm registry named 4.6.6 as Zod's latest version. We fetched the versioned archive once without installing it. The file measured 1,141,937 bytes, contained 840 entries, and had SHA-256 312553620ac82cbb25d505100fbb41c1e219b3cd6979cf93c3a1b4dd5b79e039.[4]
The archive's package manifest identified version 4.6.6. It had no preinstall script. Its member list had no meta.test.mjs. Those checks address the loader shown in the September commit. They do not prove that every file in the package is safe or that the package behaves correctly.
Provenance is a route, not a verdict.
The registry metadata links 4.6.6 to an npm provenance attestation. npm says provenance can establish where and how a package was built. npm also says the attestation does not guarantee that a package has no malicious code.[5]
Keep both facts. The attestation helps connect the archive to a build route. The archive inspection checks the exact bytes for the reported loader. Neither replaces code review, runtime tests, or a release decision.
The sight glass below turns those records into one release note. It does not install Zod, run its code, verify every archive member, or approve the version.