chore(security): clear 16/17 dependency CVEs (security-fast green)#29
Merged
william-antoline-boon merged 1 commit intoJun 29, 2026
Conversation
pnpm-audit-prod (CI "security-fast") flagged 17 high/critical advisories in production deps. This clears 16, including the lone CRITICAL. Transitive bumps via pnpm-workspace overrides (conservative, in-range, no major): @grpc/grpc-js 1.14.4 · linkify-it 5.0.1 · undici 7.28.0 · vite 8.0.16 · ws 8.21.0 · @vitest/browser 4.1.9 · hono 4.12.18→4.12.27 · form-data 2.5.4→2.5.6 · protobufjs 7.5.6→7.6.4 baileys 7.0.0-rc11 → rc13 (CRITICAL GHSA-qvv5-jq5g-4cgg): - bumped in extensions/whatsapp + release-age exclude - DROPPED patches/[email protected] — rc13 ships all three fixes natively (sequential-await encrypted-stream finish + dispatcher guard) - taught scripts/postinstall-bundled-plugins.mjs to recognize rc13's native dispatcher guard (hoisted `const dispatcher = … ? agent : undefined`) so the runtime hotfix no-ops instead of failing with "unexpected_content" Deferred (1 remaining HIGH): @earendil-works/pi-coding-agent (GHSA-jfgx-wxx8-mp94, LPE on shared Linux). Fix needs pi-* 0.75→0.78+, a BREAKING pi-ai API change (streamSimple/completeSimple/getApiProvider/complete removed) — a separate migration, not a security bump. Trial hosts are single-tenant, so the shared-host LPE is low-risk in our deployment. Verify: pnpm-audit-prod 17→1 · tsgo:core clean · postinstall hotfix no-ops · oxlint clean. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Dependency Changes DetectedThis PR changes dependency-related files. Maintainers should confirm these changes are intentional. Changed files:
Maintainer follow-up:
|
william-antoline-boon
approved these changes
Jun 29, 2026
william-antoline-boon
merged commit Jun 29, 2026
1e12efd
into
fix/transient-edge-block-auto-retry
132 of 135 checks passed
william-antoline-boon
pushed a commit
that referenced
this pull request
Jun 29, 2026
…busy message (#28) * fix(auto-reply): auto-retry transient edge-block exhaustion + honest busy message When the model fallback chain exhausts on a pure-transient condition (every hop rate_limit/overloaded) with no cooldown expiry or usage-limit detail, the cause is almost always an upstream gateway/edge block — e.g. a Cloudflare/Render HTML 429 that 429s every hop because they share one upstream host. Model-level fallback can't help, and the old terminal message ("All models are temporarily rate-limited") was both inaccurate (the models were never rate-limited) and premature (a brief edge blip became a failed conversation). - Retry the full primary→fallback chain up to 3x with exponential backoff (2s/4s/8s) on an *unexplained* pure-transient exhaustion before surfacing anything to the user. Extends the existing single transient-HTTP retry. - Gate excludes a known cooldown expiry and Codex/usage-limit messages so their actionable detail still surfaces immediately rather than being retried away. - Replace the terminal copy with honest, non-revealing wording that signals the automatic retry: "The AI service is briefly busy — retrying automatically…". Deliberately names no provider/edge/cause. Classification is unchanged (HTML-429 still classifies as rate_limit, per upstream openclaw#67517) — this only changes retry behavior and user-facing copy. Tests: message copy (both paths), backoff helper, retry-then-recover, exhaust-then-friendly-message (asserts no cause leakage), and no-retry-when- cooldown-known. Full file 107/107; format/lint/tsgo core+test all green. Co-Authored-By: Claude Opus 4.8 <[email protected]> * fix(auto-reply): longer jittered backoff for transient edge-block retries The initial 2s/4s/8s schedule was wrong for an edge rate-limiter / WAF (Cloudflare in front of the gateway), the dominant trigger for pure-transient chain exhaustion: - Retrying ~2s later almost always lands inside the same rate-limit window, and each retry re-feeds the very counter that is blocking us — fast retries can *prolong* the block rather than ride it out. - A fleet-wide fixed schedule synchronizes retries against one shared gateway host (thundering herd), which itself keeps the limiter tripped. Redesign: - MAX_TRANSIENT_BUSY_RETRIES 3 → 5. - Base 5s, double per attempt, cap 60s/step. - Equal jitter (AWS "equal jitter": half fixed + half random). The fixed half guarantees a retry never fires too soon (no early re-trip); the random half de-synchronizes concurrent sessions sharing the edge. - rng is injectable for deterministic tests. Recovery window grows from ~14s to ~67–135s — long enough to outlast a short WAF/edge block instead of failing fast. Tests: backoff bounds (un-jittered cap, min-jitter floor, [half,full] envelope), retry count = 5. Full file 109/109; format/lint/tsgo core+test green. Co-Authored-By: Claude Opus 4.8 <[email protected]> * chore(security): clear 16/17 high+ dependency advisories (security-fast) (#29) pnpm-audit-prod (CI "security-fast") flagged 17 high/critical advisories in production deps. This clears 16, including the lone CRITICAL. Transitive bumps via pnpm-workspace overrides (conservative, in-range, no major): @grpc/grpc-js 1.14.4 · linkify-it 5.0.1 · undici 7.28.0 · vite 8.0.16 · ws 8.21.0 · @vitest/browser 4.1.9 · hono 4.12.18→4.12.27 · form-data 2.5.4→2.5.6 · protobufjs 7.5.6→7.6.4 baileys 7.0.0-rc11 → rc13 (CRITICAL GHSA-qvv5-jq5g-4cgg): - bumped in extensions/whatsapp + release-age exclude - DROPPED patches/[email protected] — rc13 ships all three fixes natively (sequential-await encrypted-stream finish + dispatcher guard) - taught scripts/postinstall-bundled-plugins.mjs to recognize rc13's native dispatcher guard (hoisted `const dispatcher = … ? agent : undefined`) so the runtime hotfix no-ops instead of failing with "unexpected_content" Deferred (1 remaining HIGH): @earendil-works/pi-coding-agent (GHSA-jfgx-wxx8-mp94, LPE on shared Linux). Fix needs pi-* 0.75→0.78+, a BREAKING pi-ai API change (streamSimple/completeSimple/getApiProvider/complete removed) — a separate migration, not a security bump. Trial hosts are single-tenant, so the shared-host LPE is low-risk in our deployment. Verify: pnpm-audit-prod 17→1 · tsgo:core clean · postinstall hotfix no-ops · oxlint clean. Co-authored-by: Claude Opus 4.8 <[email protected]> --------- Co-authored-by: Claude Opus 4.8 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacked on top of #28 (base =
fix/transient-edge-block-auto-retry). Clears thesecurity-fastCI failure that blocks #28 —pnpm-audit-prodwent from 17 → 1 high/critical advisories, including the lone CRITICAL.Merge order: this PR →
fix/...branch → then #28 →boon.Cleared (16, incl. CRITICAL)
Transitive bumps via
pnpm-workspace.yamloverrides — conservative, in-range, no major bumps:baileys
7.0.0-rc11→rc13(CRITICAL GHSA-qvv5-jq5g-4cgg):extensions/whatsapp+ the release-age exclude list.patches/[email protected]— rc13 ships all three fixes natively (sequential-await encrypted-stream finish + thetypeof agent?.dispatchdispatcher guard).scripts/postinstall-bundled-plugins.mjsto recognize rc13's native dispatcher guard (hoistedconst dispatcher = … ? agent : undefined) so the runtime hotfix no-ops instead of failing withunexpected_content.Deferred (1 remaining HIGH)
@earendil-works/pi-coding-agent(GHSA-jfgx-wxx8-mp94 — predictable temp extension-install paths → LPE on shared Linux hosts). The fix requirespi-*0.75.1 → 0.78.1+, which is a breaking pi-ai API change (streamSimple/completeSimple/getApiProvider/completeremoved — ~20 typecheck errors acrosssrc/agents/**). That's a standalone migration (cf. #12), not a security bump, and was deliberately not bundled here to keep this PR low-risk.Risk acceptance for the deferral: the advisory is a local-privilege-escalation on shared Linux hosts. Boon trial boxes are single-tenant (one customer per EC2 instance), so there is no co-tenant to escalate against — low real-world risk in our deployment. Tracked for a follow-up pi-* migration.
→ After this merges,
security-faston #28 will show 1 advisory (down from 17). If you need it fully zero, the options are the pi-* migration or a documented allowlist entry inpnpm-audit-prod.mjs'sAUDIT_ADVISORY_VERSION_OVERRIDES.Verification
node scripts/pre-commit/pnpm-audit-prod.mjs --audit-level=high: 17 → 1tsgo:core: clean (pi-* reverted to 0.75.1, no API breakage)scripts/postinstall-bundled-plugins.mjs: runs clean (hotfix no-ops on rc13),oxlintclean🤖 Generated with Claude Code
Summary by cubic
Cuts production dependency advisories from 17 to 1 by upgrading
baileysand adding conservativepnpmoverrides; unblocks the security-fast CI on the stacked branch.baileys7.0.0-rc11→7.0.0-rc13inextensions/whatsappand removedpatches/[email protected]. Updatedscripts/postinstall-bundled-plugins.mjsto detect rc13’s native dispatcher guard so the hotfix no-ops.@grpc/[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],@vitest/[email protected],[email protected].pnpm-audit-proddrops to 1 HIGH advisory, deferred for@earendil-works/pi-coding-agent(requires breakingpi-*upgrade). Consider a follow-up migration or an allowlist entry if zero advisories are required.Written for commit 37057b8. Summary will update on new commits.