puppeteer@25.9.0
A high-level API to control headless Chrome over the DevTools Protocol
AI Security Review
scanned 29d ago · by lpm-firewall-aiThe postinstall path is the ordinary Puppeteer browser installer and stops when skipDownload is set. Source shows no self-install chain, secret theft, or unrelated remote execution.
Decision evidence
public snapshot- package.json postinstall only runs node install.mjs; other scripts are local wireit build tasks.
- install.mjs imports puppeteer/internal/node/install.js and calls downloadBrowsers, warning and exiting if the build is missing.
- downloadBrowsers returns immediately when configuration.skipDownload is set, then installs Chrome, Chrome headless shell, or Firefox through @puppeteer/browsers.
- dependencies pin puppeteer-core 25.9.0 and @puppeteer/browsers 3.2.1; this package does not depend on its own name.
- No child_process, eval, Function, or credential reads appear in this package; configuration only reads PUPPETEER_* and npm proxy env vars.
- postinstall still downloads browser binaries unless PUPPETEER_SKIP_DOWNLOAD or an executable path skips it, which is the documented Puppeteer install behavior.
Source & flagged code
6 flagged · loading sourcePackage defines install-time lifecycle scripts.
package.jsonView on unpkgInstall-time lifecycle script is not statically allowlisted and needs review.
package.jsonView on unpkgpackage.json postinstall only runs node install.mjs; other scripts are local wireit build tasks.
package.jsonView on unpkg · L38Findings
Affected versions and remediation
This report applies to puppeteer@25.9.0.
See all versions of puppeteer for other recorded verdicts.
- Review the evidence and your use of puppeteer@25.9.0 before allowing it. Restrict the permissions described in this report.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
Evidence last updated: .
Think this verdict is wrong? Dispute it on GitHub or read how reports are produced.