Repository navigation
fix(keycardai-mcp, keycardai-oauth): raise httpx2, aiohttp and cryptography floors to patched versions - #353
Merged
Merged
Conversation
…st releases past their advisories httpx2>=2.5.0 and aiohttp>=3.11.11 let consumers resolve httpx2 2.9.1 (GHSA-f2fp-rgf2-35cp, GHSA-7mj9-2mp8-4m2p, GHSA-h4x7-gw46-3wm6, GHSA-pf96-p4fj-6566, GHSA-8xx6-hgc6-gc2m) and aiohttp 3.14.1 (GHSA-mfx4-hv73-q22v, GHSA-mq44-7p77-q5h7, GHSA-cq5v-8q36-5273). The root uv.lock moves httpx2 and httpcore2 to 2.13.1, aiohttp to 3.14.5 and cryptography to 50.0.2 through uv lock --upgrade-package, so no other entry changes. Co-Authored-By: Larry Osakwe <larry@keycard.ai>
…past GHSA-g6cj-pr64-35w5 cryptography>=45.0.7 let consumers resolve 48.0.1 (GHSA-m2h6-j472-rp4c, fixed in 49.0.0; GHSA-g6cj-pr64-35w5, fixed in 50.0.0). cryptography 50 supports Python 3.9 through 3.14 and keycardai-oauth uses only rsa.generate_private_key and the serialization module, none of which changed. The fastmcp lock and the four example locks move cryptography to 50.0.2 through uv lock --upgrade-package. Co-Authored-By: Larry Osakwe <larry@keycard.ai>
Contributor
Author
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Larry-Osakwe
approved these changes
Oct 15, 2026
Larry-Osakwe
left a comment
Contributor
There was a problem hiding this comment.
Consolidates the open Socket advisories and raises the published floors for runtime dependencies. Merging with a merge commit so both package commits release.
This was referenced Oct 15, 2026
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
Socket's ten PRs (#321 to #330) each edit a uv.lock, which is not published, so consumers kept resolving the vulnerable versions through our pyproject floors. This PR raises the floors in the two runtime packages and moves every lock the Socket PRs touched.
Merge with a merge commit, not squash, or only one package releases: the two commits are scoped
fix(keycardai-mcp)andfix(keycardai-oauth)and each cuts its own release.httpx2>=2.5.0httpx2>=2.12.0httpx2>=2.12.0httpx2>=2.12.0aiohttp>=3.11.11aiohttp>=3.14.3aiohttp>=3.14.3cryptography>=45.0.7cryptography>=50.0.0cryptography>=50.0.0Supersedes #321, #322, #323, #324, #325, #326, #327, #328, #329, #330.
cryptography 50
cryptography>=50.0.0holds. 50.0.0 declaresrequires_python >=3.9(not 3.9.0/3.9.1) with classifiers for 3.9 through 3.14, so it covers ourrequires-python >=3.10. keycardai-oauth touches cryptography in one file,packages/oauth/src/keycardai/oauth/server/private_key.py:rsa.generate_private_key,serialization(PEM/DER encodings) andPublicFormat. The 49.0.0 backwards-incompatible list (x86_64 macOS and 32-bit Windows wheels, the deprecated*_KEY_TYPESaliases, ChaCha20 nonce counting, X.509 certificates with NULL ECDSA/DSA parameters) and the 50.0.0 notes touch none of those. GHSA-g6cj-pr64-35w5 is inpkcs7_decrypt_derand its PEM/S/MIME variants; keycardai-oauth does not call PKCS#7 anywhere (rg pkcs7|PKCS7|EnvelopedData packages/oauth/srcis empty), so the floor move closes the advisory for consumers' resolvers rather than a code path of ours.Lockfiles
No full regenerate. Each lock was moved with
uv lock --upgrade-packagenaming only the four packages (cryptography alone for packages/fastmcp and the four example locks), which rewrites only those entries, theirrequires-distspecifiers and what they pull in: yarl 1.23.0 to 1.25.1 (aiohttp 3.14.5's floor) and a newhttpx2-jsfetch 1.0entry withhttpcore2gainingmarker = "sys_platform != 'emscripten'"(httpx2 2.13's own dependency split). No other entry or marker changed. The root lock sits in the mcp commit because it carries both packages' specifier changes.Verified from the lock:
uv sync --all-packages --all-extras --frozenthenpython -c "import httpx2, httpcore2, aiohttp, cryptography"prints2.13.1 2.13.1 3.14.5 50.0.2.Verification
Run with the session's
KEYCARD_CLIENT_ID/KEYCARD_CLIENT_SECRETunset (credential discovery picks them up and fails one fastmcp test unrelated to this change).pytest: exit 0, no failures (this suite prints no summary line)pytest -q: 561 passedjust check(ruff): All checks passedjust typecheck(ty, every package): All checks passedjust test-coverage: exit 0; oauth 561 passed, starlette 89 passed, mcp 575 passed / 18 skipped, a2a 47 passed, langchain 102 passed / 2 skipped, temporal 93 passed, fastmcp 93 passed, every coverage floor reachedscripts/check_sibling_floors.pywithPACKAGE=mcp(keycardai-oauth 0.33.0, keycardai-starlette 0.14.2): 575 passed, 18 skipped;PACKAGE=fastmcp(keycardai-oauth 0.29.0): 93 passedLink to Devin session: https://app.devin.ai/sessions/bbc062cf32b548ef9c4b8b444d2ec67f
Open in Devin Desktop: https://app.devin.ai/desktop/session/bbc062cf32b548ef9c4b8b444d2ec67f?variant=devin
Requested by: @Larry-Osakwe