fix(deps): override ws to ^8.21.0 to clear HIGH advisory (ops-x5i7)#56
Conversation
bun audit flagged ws >=8.0.0 <8.21.0 HIGH (GHSA-96hv-2xvq-fx4p, memory-exhaustion DoS), pulled in transitively via discord.js and @mariozechner/pi-coding-agent. Add a root "overrides" forcing ws to ^8.21.0, mirroring tpsdev-ai/cli#315 (ops-4ow9). ws 8.21 is a compatible minor bump; build + typecheck stay green. The remaining pi-coding-agent and protobufjs advisories have no upstream fix yet (pi-coding-agent 0.73.1 is latest) and are out of scope for this change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tps-sherlock
left a comment
There was a problem hiding this comment.
Security Review — #56
Verdict: APPROVE ✅
What this fixes
Adds a root "overrides": { "ws": "^8.21.0" } to clear a HIGH advisory (GHSA-96hv-2xvq-fx4p — memory-exhaustion DoS from tiny fragments/data chunks) affecting ws >=8.0.0 <8.21.0. ws is pulled in transitively via discord.js and @mariozechner/pi-coding-agent.
Diff analysis
The change is minimal and surgical:
package.json: Adds"overrides": { "ws": "^8.21.0" }— Bun's native override mechanism, no extra tooling needed.bun.lock: ws bumps from8.20.1→8.21.0. Single package change, no cascading dependency shifts.
Security assessment
- GHSA-96hv-2xvq-fx4p is a real vulnerability: a remote can exhaust server memory by sending tiny WebSocket fragments. For an agent runtime that uses WebSockets for Discord connectivity, this is a relevant attack surface.
- 8.20.1 → 8.21.0 is a compatible minor bump. No API changes, no breaking behavior. The override forces the fix across the entire dependency tree.
- Mirrors tpsdev-ai/cli#315 — same advisory, same mechanism, same resolution. Precedent exists and was already reviewed.
- No new dependencies introduced. The override only constrains an existing transitive dependency to a safer version.
CI status
- Build (TypeScript strict): ✅
- Unit Tests: ✅
- CodeQL SAST: ✅
- Socket Supply Chain: ✅
- Dependency Audit: FAILURE — but this is expected and documented. The PR body explicitly states the remaining
@mariozechner/pi-coding-agentandprotobufjsadvisories have no upstream fix yet (pi-coding-agent 0.73.1 is latest) and are intentionally out of scope. Thewsadvisory is confirmed cleared (bun audit | grep -c GHSA-96hv-2xvq-fx4p→ 0 after).
No findings
Clean, minimal, well-documented. The audit failure is pre-existing and acknowledged — not introduced by this change.
tps-kern
left a comment
There was a problem hiding this comment.
Review: fix(deps): override ws to ^8.21.0 to clear HIGH advisory (ops-x5i7)
Verdict: APPROVE
Architecture & Correctness
The fix is minimal and correct. A root-level "overrides": { "ws": "^8.21.0" } in package.json is the standard Bun/npm mechanism for forcing a transitive dependency to a specific version across the entire dependency tree. ws is pulled in transitively via discord.js and @mariozechner/pi-coding-agent; the override bumps it from 8.20.1 → 8.21.0, which is a compatible minor bump within the 8.x line.
The bun.lock delta confirms only ws changed (8.20.1 → 8.21.0) — no collateral resolution changes.
This mirrors the same fix already applied in tpsdev-ai/cli#315 (bead ops-4ow9), which is the right consistency across repos.
CI
- Build (TypeScript strict): ✓
- Unit Tests: ✓
- CodeQL: ✓
- Socket Supply Chain: ✓
- Dependency Audit: ✗ — but this is pre-existing on
main(verified: the same check fails on the HEAD of main). The PR description explicitly calls out that the remaining advisories (@mariozechner/pi-coding-agent,protobufjs) have no upstream fix yet and are intentionally out of scope. ThewsHIGH advisory (GHSA-96hv-2xvq-fx4p) is the one this PR targets, andbun auditconfirms it's cleared.
Scope discipline
The PR is tightly scoped — only package.json + bun.lock, no code changes. No unnecessary changes. The out-of-scope advisories are documented.
Ship it.
tps-sherlock
left a comment
There was a problem hiding this comment.
Security Review — APPROVE ✅
This is a straightforward dependency override to clear a HIGH advisory on ws.
What's happening
ws (a WebSocket library) is pulled in transitively via discord.js and @mariozechner/pi-coding-agent. bun audit flags ws >=8.0.0 <8.21.0 as HIGH (GHSA-96hv-2xvq-fx4p — memory-exhaustion DoS from tiny fragments/data chunks). The fix adds a root overrides block forcing ws to ^8.21.0:
"overrides": {
"ws": "^8.21.0"
}This is a compatible minor bump (8.20.1 → 8.21.0). The diff is minimal — package.json (overrides block) + bun.lock (ws version bump).
Security assessment
The fix is correct. The override mechanism is the standard Bun/Node way to force a transitive dep version. ws 8.21.0 is the patched release for this advisory. The bump is a compatible minor — no API changes, no breaking behavior.
No new risk. Overrides don't introduce new dependencies or change the dependency tree structure. They just pin a transitive dep to a known-safe version. This mirrors tpsdev-ai/cli#315 which used the same mechanism for the same advisory.
The Dependency Audit CI failure is pre-existing. bun audit still flags @mariozechner/pi-coding-agent (3 advisories: XSS, privilege escalation, race condition), protobufjs (1 moderate), and undici (3 advisories). The PR body explicitly states these have no upstream fix yet (pi-coding-agent 0.73.1 is the latest release) and are intentionally out of scope. The targeted ws advisory is confirmed cleared (verified via bun audit | grep -c GHSA-96hv-2xvq-fx4p → 0). This CI failure is not a regression from this PR.
All other CI checks green: Build (TypeScript strict), Unit Tests, CodeQL, Socket Supply Chain, Socket PR Alerts.
Verdict
APPROVE. Clean, minimal, correct. The override clears the targeted HIGH advisory without introducing new risk. The remaining advisories are pre-existing and blocked on upstream fixes — not this PR's scope.
tps-kern
left a comment
There was a problem hiding this comment.
Review — architecture + correctness lane
Verdict: APPROVE
Change assessment ✅
Minimal, surgical dependency override:
- Adds root
"overrides": { "ws": "^8.21.0" }topackage.json— the correct Bun/npm mechanism for forcing a transitive dependency version. bun.lockupdated:ws8.20.1 → 8.21.0 (compatible minor bump, no breaking changes in the 8.x line).wsis pulled transitively viadiscord.jsand@mariozechner/pi-coding-agent; the override correctly applies across the full tree.
Advisory resolution verified ✅
mainbranch:bun auditreports 16 vulnerabilities (6 high) — includeswsGHSA-96hv-2xvq-fx4p (memory-exhaustion DoS).- This PR:
bun auditreports 15 vulnerabilities (5 high) —wsadvisory is gone. The override does exactly what it claims.
CI — Dependency Audit failure is pre-existing ✅
The Dependency Audit check fails on this PR, but it also fails on main (same job, same exit code 1). The remaining 15 vulnerabilities are:
@mariozechner/pi-coding-agent(3 advisories) — no upstream fix; 0.73.1 is latest release.protobufjs(1 advisory) — no upstream fix.undici(multiple advisories via discord.js + pi-coding-agent) — transitive, not directly overridable without risk.
All explicitly called out as out-of-scope in the PR description. This PR doesn't introduce any new vulnerabilities — it removes one.
Other CI checks ✅
- Build (TypeScript strict): pass
- Unit Tests: pass
- CodeQL: pass
- Socket.dev Supply Chain: pass
- analyze (javascript-typescript): pass
Precedent ✅
Mirrors tpsdev-ai/cli#315 (bead ops-4ow9) — same overrides mechanism for the same advisory. Consistent approach across repos.
— Kern 📐
What
Adds a root
"overrides": { "ws": "^8.21.0" }topackage.jsonto clear thebun auditHIGH advisory forws >=8.0.0 <8.21.0(GHSA-96hv-2xvq-fx4p — memory-exhaustion DoS from tiny fragments / data chunks).wsis pulled in transitively viadiscord.jsand@mariozechner/pi-coding-agent. The override forces a compatible minor bump (8.20.1 → 8.21.0) across the tree.Mirrors tpsdev-ai/cli#315 (bead ops-4ow9), which used the same
overridesmechanism for the same advisory.Verification
bun audit | grep -c GHSA-96hv-2xvq-fx4p→ 1 before → 0 afterbun run build— greenbun run typecheck— greenpackage.json(overrides block) +bun.lock(ws 8.20.1 → 8.21.0)Out of scope
The remaining
@mariozechner/pi-coding-agentandprotobufjsadvisories have no upstream fix yet (pi-coding-agent 0.73.1 is the latest release) and are intentionally left unchanged.Tracked as bead ops-x5i7 (not a GitHub issue).
🤖 Generated with Claude Code