Skip to content

fix(deps): patch @modelcontextprotocol/sdk to 1.32.0 - #1153

Open
tobyhede wants to merge 1 commit into
mainfrom
fix/cip-4887-modelcontextprotocol-sdk
Open

tobyhede wants to merge 1 commit into
mainfrom
fix/cip-4887-modelcontextprotocol-sdk

Conversation

@tobyhede

@tobyhede tobyhede commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Patches @modelcontextprotocol/sdk from 1.29.0 to 1.32.0, which fixes Dependabot alert #247 (GHSA-6qxp-vccf-f47h / CVE-2026-104850). That advisory covers OAuth client credentials leaking to an authorization server chosen by a malicious MCP server. Affected range is >= 1.12.0 < 1.31.0.

Why a direct dependency rather than an override

@modelcontextprotocol/sdk is not a direct dependency anywhere in the repo. Its only source is the auto-installed peer of @anthropic-ai/claude-agent-sdk (^1.29.0). The latest claude-agent-sdk (0.3.296) still declares ^1.29.0, so bumping the parent doesn't help. pnpm overrides rewrite peer ranges, not peer resolutions. So this uses the same approach as the existing @anthropic-ai/sdk pin (alert #128): add an explicit ^1.32.0 dependency to @cipherstash/wizard, which forces the peer to resolve to the patched version.

  • languages/typescript/packages/wizard/package.json: adds "@modelcontextprotocol/sdk": "^1.32.0". This is a peer-resolution pin only, because wizard never imports it.
  • pnpm-lock.yaml: changes only the MCP SDK version.
  • pnpm-workspace.yaml: adds a comment next to the existing peer-pin note.
  • .changeset/wizard-mcp-sdk-security-pin.md: patch changeset, because wizard's published manifest changes.
  • e2e/tests/supply-chain.e2e.test.ts: asserts that every resolved @modelcontextprotocol/sdk is >= 1.31.0, mirroring the @anthropic-ai/sdk assertion.

1.32.0 was published 2026-10-02, so it is past the 7-day minimumReleaseAge. 1.32.1 is not yet. The lockfile was re-resolved under the repo config. Two unrelated cooldown demotions from that re-resolve were reverted by hand (express-rate-limit 8.7.1→8.7.0 and acorn 8.19.0→8.18.0). As a result the lockfile diff touches only @modelcontextprotocol/sdk, and pnpm install --frozen-lockfile passes.

Is a code change needed for OAuth usage?

No. The advisory says that for some usages upgrading is not enough: bundled providers need expectedIssuer, and stored credentials may lack issuer. Those cases only apply to code that uses the SDK's OAuth client. I searched the repo for @modelcontextprotocol, authProvider, withOAuth, fetchToken, ClientCredentialsProvider, PrivateKeyJwtProvider, OAuthClientProvider, expectedIssuer, createSdkMcpServer and mcpServers, and found no matches outside node_modules. Nothing in this repo uses the MCP SDK's OAuth client, and wizard does not configure MCP servers. The dependency bump alone is sufficient.

Verification

  • pnpm install --frozen-lockfile: passes
  • e2e/tests/supply-chain.e2e.test.ts: 29/29 pass, including the new assertion
  • @cipherstash/wizard: typecheck and build pass. test has 325 passed. Two suites (interface.test.ts) fail to load locally because the @cipherstash/auth native binding isn't built in a fresh worktree. That is an environment issue unrelated to this change, and CI builds the binding.
  • No @modelcontextprotocol/sdk < 1.31.0 remains in pnpm-lock.yaml. e2e/wasm/deno.lock does not reference it.

Summary by CodeRabbit

  • Security
    • Updated the wizard’s MCP SDK dependency to a patched release, addressing a reported security vulnerability.

@tobyhede
tobyhede requested a review from a team as a code owner October 12, 2026 01:07
@changeset-bot

changeset-bot Bot commented Oct 12, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 472cbf0

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 11 packages
Name Type
@cipherstash/wizard Patch
@cipherstash/e2e Patch
stash Patch
@cipherstash/stack-drizzle Patch
@cipherstash/stack-prisma Patch
@cipherstash/stack-supabase Patch
@cipherstash/stack Patch
@cipherstash/basic-example Patch
@cipherstash/bench Patch
@cipherstash/prisma-example Patch
@cipherstash/test-kit Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-12T01:09:30.584617Z 472cbf0 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 8b22701b-adb3-40d9-bb1f-62209dd92fe1

📥 Commits

Reviewing files that changed from the base of the PR and between 1e9fba3 and 472cbf0.


⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml

📒 Files selected for processing (4)
  • .changeset/wizard-mcp-sdk-security-pin.md
  • e2e/tests/supply-chain.e2e.test.ts
  • languages/typescript/packages/wizard/package.json
  • pnpm-workspace.yaml

Included review availability: This review used your included allowance. 2 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.



📝 Walkthrough

Walkthrough

The wizard package adds @modelcontextprotocol/sdk as a direct dependency. A supply-chain test checks that resolved versions are at least 1.31.0. The changeset and workspace comments document the dependency pin.

Changes

MCP SDK dependency pin

Layer / File(s) Summary
Pin and validate the MCP SDK version
languages/typescript/packages/wizard/package.json, e2e/tests/supply-chain.e2e.test.ts, .changeset/wizard-mcp-sdk-security-pin.md, pnpm-workspace.yaml
The wizard package adds @modelcontextprotocol/sdk at ^1.32.0. The supply-chain test rejects missing resolved versions or versions below 1.31.0. The changeset and workspace comments document the pin and advisory.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Other

Suggested reviewers: auxesis


Merge Risk: ⚪ Minimal · up to 472cb

The workspace resolves the MCP SDK to a version above the stated security floor, and the added check guards against vulnerable resolutions. No material merge risk is identified.

Pre-merge checks | Passed 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: updating @modelcontextprotocol/sdk to the patched 1.32.0 release.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant