Repository navigation
fix(deps): bump puppeteer to 25.13 to clear zod GHSA-mrhx-c7xc-m3w5 - #7652
Conversation
puppeteer-core 25.13.0 moves chromium-bidi to 157.0.8090-0, which depends on zod ^4.6.5 instead of ^3.24.1. Lifts the engine/producer puppeteer pin from ~25.11.0 to ~25.13.0, keeps one puppeteer-core and one @puppeteer/browsers (3.2.4) across the workspace, and updates both Lambda runtime locks with a targeted npm resolution so only the puppeteer subtree changes. Clears GHSA-mrhx-c7xc-m3w5 in both runtime locks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Edit accuracy: accurate 267 (base branch 267), smooth 78 of thoseThe gate passes. Quarantined, measured but not gated (8)
Unstable (1)
|
jrusso1020
left a comment
There was a problem hiding this comment.
Reviewed at 26971d656834e0b76e24d4141543bc8a6a05a221. No blockers found.
The workspace and both Lambda runtime manifests/locks agree on puppeteer-core 25.13.0. Parsed lock comparison shows only the Puppeteer subtree changes; the unchanged Lambda resolutions remain byte-for-byte equal as JSON values. There are intentional transitive major moves: chromium-bidi 17→157, webdriver-bidi-protocol 0→1, and nested zod 3→4. They follow the new Puppeteer dependency declarations rather than forcing a Zod override across an incompatible range. The renderer continues using CDP; the upstream launcher/CDP delta preserves its existing options. Lambda's explicit Chromium 148 remains unchanged; I did not run a Lambda render.
Validation: frozen install and full build pass; runtimeLock.test.ts 3/3 and focused browser-manager/pool tests 132/132 pass. Both isolated runtime-lock npm ci --ignore-scripts installs pass. Each installed BiDi parser accepts a valid navigate payload and rejects an invalid one; each installed Puppeteer launches cached Chrome 153 and passes DOM, PNG screenshot and CDP checks. The first probe against the obsolete system Chrome 113 timed out; no Lambda Chromium 148 execution was performed. Changed manifests pass formatting. Hosted checks at this head: 94 successful, 9 skipped, 0 pending, 0 failed. Upstream release.
Need: yes, patched BiDi/Zod dependency chain · Size: ok · Reuse: existing runtime lock generator and consistency guard · Simpler: already minimal · Structure: fine (checked shared browser manager and runtime lock staging; no split)
Risk: medium — runtime browser dependency update, including upstream transitive major changes.
Verdict: APPROVE
Reasoning: The dependency and runtime lock contracts remain consistent and no compatibility blocker was found.
— Rames
What
Bumps
puppeteer/puppeteer-corefrom 25.11.0 to 25.13.0, sochromium-bidi(and the zod copy under it) moves to a patched line inbun.lockand in both Lambda runtime locks.puppeteer,puppeteer-corechromium-bidizod(underchromium-bidi)@puppeteer/browsersdevtools-protocolwebdriver-bidi-protocolbun.lockalso picks uptyped-query-selector2.12.3 andmodern-tar0.8.6. Both are required by the new puppeteer line.Why
GHSA-mrhx-c7xc-m3w5 (high): zod
< 4.6.6can run out of memory while it validates oversized constrained collections. The first patched version is 4.6.6.chromium-bidi17.x pinszod ^3.24.1, so no zod 3 release clears the advisory. Puppeteer 25.13.0 is the first release whosechromium-bidi(157.0.8090-0) depends onzod ^4.6.5. This clears Dependabot alerts for zod in:packages/aws-lambda/scripts/runtime-lock/sparticuz/package-lock.jsonpackages/aws-lambda/scripts/runtime-lock/chrome-headless-shell/package-lock.jsonRelated work
No open Renovate PR covers this. Renovate is disabled for
runtime-lock/**, and lock maintenance cannot cross the~25.11.0pin. Thezod4.4.3 copies used by@modelcontextprotocol/*andknipare out of scope here.How
~25.11.0to~25.13.0(puppeteer-core^25.13.0). It stays a single minor line. The workspace still resolves onepuppeteer-core(25.13.0) and one@puppeteer/browsers(3.2.4), which the CLI's^3.2.2range shares. This keeps the single-launcher setup from fix(engine): a render on Windows opens no console windows #6613. The other workspaces'^25.xranges resolve to the same 25.13.0.versionchurn frombun installis left out, andbun install --frozen-lockfileaccepts the lock.lock-runtime.tswrites the same direct pins (puppeteer-core25.13.0,@sparticuz/chromium148.0.0). It deletes and re-resolves the whole lock, though, and that pulled in unrelated transitives published less than a day ago (ws8.23.0,bare-*). Instead, I updated each lock in place withnpm install --package-lock-only --ignore-scripts, starting from the newpackage.json. Only the puppeteer subtree changes, and every other resolution stays as reviewed.overridesentry. Overriding zod to 4.x underchromium-bidi17 would force a major version outside its declared^3.24.1range.lock-runtime.tsalso regenerates thesepackage.jsonfiles, so the override would be dropped.Release age (7-day window; every newly resolved version qualifies):
Test plan
bun install --frozen-lockfileaccepts the lock.bun.lockhas a singlepuppeteer-core@25.13.0 andchromium-bidi/zod@4.6.7.npm ci --ignore-scriptsin a clean copy of each runtime lock.npm lsshowspuppeteer-core@25.13.0 > chromium-bidi@157.0.8090-0 > zod@4.6.7.chromium-bidi's zod-backed protocol parser accepts a validbrowsingContext.navigatepayload and rejects an invalid one, andpuppeteer-coreloads.bun test packages/aws-lambda/scripts/runtimeLock.test.ts(direct pins matchbun.lock).bun run build; engine and producer typecheck; oxfmt check on changed files.🤖 Generated with Claude Code