Skip to content
This repository was archived by the owner on Nov 8, 2026. It is now read-only.

fix(deps): unblock the security update of the MCP Node adapter - #3511

Closed
polylane[bot] wants to merge 1 commit into
mainfrom
polylane/autofix/nev21pcfikma
Closed

polylane[bot] wants to merge 1 commit into
mainfrom
polylane/autofix/nev21pcfikma

Conversation

@polylane

@polylane polylane Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Dependabot could not patch the Node server library that the MCP ingress depends on, so its security update job failed and the affected copy stayed in the built image. This change pins the adapter release that accepts the patched library. The library leaves the affected range, and the update job completes on its next run.

flowchart TD
  A["Advisory GHSA-rmxm-3fg6-px4f published 2026-10-28"] --> B["Dependabot security job for @hono/node-server"]
  B --> C["Resolve the tree from the lockfile"]
  C --> D["Pin: @modelcontextprotocol/node 2.1.1 requires ^1.19.9 - observed"]
  D --> E["security_update_not_possible, run fails - observed"]
  D --> F["@hono/node-server stays 1.19.17 - observed"]
  G["Pins move to 2.1.2 and 2.4.0 - this fix"] --> H["Lockfile resolves @hono/node-server 2.1.6"]
  H --> I["Affected copy leaves the tree"]
Loading

Why this fix

The job failed with security_update_not_possible after it found the earliest fixed release 2.1.3 and the pinned adapter required a range that stops below it. The adapter's next release declares the patched range, so moving both pins to it lets the lockfile resolve the fixed library. The repository checks and the MCP channel tests pass on the new tree. Reachability of the middleware the advisory concerns stayed unproven. The affected copy leaves the tree in any case.

Fix walkthrough

Watch the fix walkthrough

Watch the fix explained (1:26). Recorded for commit 1521d2aa9f881cbebbf169b572790e6fc7bd7fda.

Out of scope
  • The other advisories npm reports for the tree are not addressed here.
  • Whether the MCP ingress mounts the middleware the advisory concerns is still unknown.
  • Dependabot's open group pull request proposes the same two bumps; it becomes redundant for them.

Production impact

The bot image moves to the patched adapter without an identified production path

I checked the switchboard Worker this repository deploys, which served 26,707 requests in the 48 hours to 2026-11-04T11:00Z with an empty Errors by Type series. No source file imports @hono/node-server; the MCP ingress reaches it only through @modelcontextprotocol/node, and 2.1.2 declares the patched range, so the installed pair is the one the publisher supports. The image rebuild on the next deploy is the only production change I can trace, and I found no mechanism by which it degrades the ingress.

switchboard bot Worker · requests per hour

Affected resources

  • switchboard
Checked and not affected (5)
  • switchboard-memory
  • switchboard-resident
  • switchboard-sandbox
  • switchboard-docs
  • switchboard-controlled-acceptance-source

Observability

  • The Worker's Requests, Errors by Type and CPU Time charts. The error series was empty in the 48 hours I read.
  • npm ls @hono/node-server and npm audit on the lockfile, which name the resolved version and any remaining advisory.
  • The MCP ingress logs a failure when its response status is 500 or more (src/channels/mcp.ts), and the deploy preflight refuses while a container rollout is in progress.

Polylane assessed this pull request at 1521d2a.

Causal chain
  • Signal (alert): CI failing: npm_and_yarn in /. for @hono/node-server - Update #1680428670 on coreplanelabs/switchboard@main
  • Surfacing site: coreplanelabs/switchboard GitHub Actions workflow npm_and_yarn in /. for @hono/node-server - Update #1680428670 (workflow 352415341, run 41821000417) at Dependabot job 1680428670, Run Dependabot step, which records security_update_not_possible and exits 1
  • Mechanism: The Dependabot security job resolved the dependency tree, found @hono/node-server at 1.19.17 inside the affected range >= 1.19.10 < 2.1.3 with the earliest fixed version 2.1.3, and recorded security_update_not_possible because the pinned @modelcontextprotocol/node 2.1.1 requires @hono/node-server ^1.19.9. It then exited non-zero and the workflow run failed.
  • Producer: @modelcontextprotocol/node version pin in the coreplanelabs/switchboard manifests, at coreplanelabs/switchboard:package.json#dependencies and coreplanelabs/switchboard:packages/switchboard/package.json#dependencies
  • Trigger: GitHub published advisory GHSA-rmxm-3fg6-px4f for @hono/node-server on 2026-10-28, so the weekly npm_and_yarn job started a security update for the pinned 1.19.17 copy.
  • What happens to the failed unit today: dependabot.yml runs weekly npm_and_yarn updates in /. and opens grouped minor-and-patch pull requests; pi-ai, pi-coding-agent, opencode, effect and sandbox are pinned and must be moved by hand, while the @modelcontextprotocol packages are ordinary dependencies Dependabot proposes to bump (open PR chore(deps): bump the minor-and-patch group with 11 updates #3509).
  • Blast radius: unknown other resource(s), unknown other tenant(s); data at risk: none named
  • Producer evidence:
    • Job log 126543813792: 'Requirements to unlock update_not_possible', '@modelcontextprotocol/node@2.1.1 requires @hono/node-server@^1.19.9', 'The earliest fixed version is 2.1.3.'
    • package-lock.json: node_modules/@hono/node-server 1.19.17; the only record declaring it is node_modules/@modelcontextprotocol/node 2.1.1 with range ^1.19.9
    • package.json line 103 and packages/switchboard/package.json line 38 both pin "@modelcontextprotocol/node": "2.1.1"
    • npm registry manifest for @modelcontextprotocol/node 2.1.2 (published 2026-10-23T18:19Z): dependencies @hono/node-server ^1.19.9 || ^2.1.3, peer @modelcontextprotocol/server ^2.4.0
    • GitHub advisory GHSA-rmxm-3fg6-px4f (CVE-2026-118663, medium) affects >= 1.19.10 < 2.1.3 and is the sole reason 1.19.17 is flagged
3 files changed (+25/-25)
  • package-lock.json: modified, +21/-21
  • package.json: modified, +2/-2
  • packages/switchboard/package.json: modified, +2/-2

View autofix


Generated by Polylane. You can ask follow-ups by mentioning @polylane in a comment.

Co-authored-by: polylane[bot] <277585245+polylane[bot]@users.noreply.github.com>
@polylane polylane Bot added polylane severity:medium Polylane autofix severity: medium labels Nov 4, 2026
@boristane

Copy link
Copy Markdown
Contributor

Closing: Switchboard is being decommissioned and the repository archived (coreplanelabs/infrastructure#268).

@boristane boristane closed this Nov 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

polylane severity:medium Polylane autofix severity: medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant