Skip to content

chore(deps): sync mcp 1.28.1 + cryptography 50.0.0 to develop, pin mcp below 2.0 - #385

Merged
Paulo Lacerda (placerda) merged 3 commits into
developfrom
chore/sync-security-deps-to-develop
Aug 7, 2026
Merged

Paulo Lacerda (placerda) merged 3 commits into
developfrom
chore/sync-security-deps-to-develop

Conversation

@placerda

Copy link
Copy Markdown
Contributor

Brings the two Dependabot security fixes that were merged into main (#356, #362) onto develop, and prevents this class of mistake from recurring.

Why develop was missing these

Dependabot security updates always open against the repository default branch (main) and ignore target-branch: "develop" in .github/dependabot.yml. That config is already correct - it governs scheduled version updates only, and there is no option that redirects security updates.

Retargeting with gh pr edit --base develop is not a reliable fix: Dependabot resets the base back to main the next time it rebases the branch. That is exactly what happened to #356 and #362 - they were retargeted, CI ran green against develop, Dependabot then rebased and silently restored base: main, and the subsequent squash merges landed on main.

Net effect right now: main is ahead of develop by these 2 commits. This PR restores parity.

What is included

Commit Change
02e1a11 mcp 1.27.1 -> 1.28.1 (cherry-pick of #356), closes alerts #36/#35/#34
b0d42e3 cryptography 48.0.1 -> 50.0.0 (cherry-pick of #362), closes alert #44
6cbf8bf Pin mcp floor to 1.28.1; document security-update targeting in dependabot.yml

Both cherry-picks applied cleanly onto current develop (which already has the nltk #381 and aiohttp #382 lockfile updates).

Risk assessment

cryptography 48 -> 50 (two major versions) - reviewed, low risk. This is the only bump here with a direct import. src/agentops/agent/server/auth.py uses load_pem_public_key, ec.EllipticCurvePublicKey, public_key.verify(..., ec.ECDSA(hashes.SHA256())) and InvalidSignature. The 49.x/50.x breaking changes are FFDH deprecation and stricter DER / SCT / OCSP / CRL / PKCS#7 parsing - none of which this code path touches (it is EC-only, and parses a PEM public key rather than certificates). The identical lockfile passed the full CI matrix on #362 (lint, mypy, coverage, build-vsix, tests on ubuntu+windows x 3.11/3.12/3.13) before it was merged.

mcp 1.27.1 -> 1.28.1 - low risk, patch-level within the pinned <2 range. Passed the full matrix on #356.

mcp floor raised to >=1.28.1, upper bound kept at <2. This deliberately supersedes #359, which proposed widening to <3. mcp 2.0.0 is already published and is a breaking rewrite (FastMCP -> MCPServer, new Client, removed APIs); upstream explicitly advises keeping a <2 bound until you migrate. src/agentops/mcp/server.py imports from mcp.server.fastmcp import FastMCP, so <3 would have resolved to an incompatible major. Note that #359's green checks were not meaningful evidence: CI runs uv sync --group dev, which never installs the mcp extra, so tests/unit/test_mcp_server.py skips via _HAS_MCP.

Follow-up for maintainers

main currently carries security fixes that are not in any tagged release. Worth cutting a patch release (or a main -> develop sync per docs/release-process.md) so the branches do not drift further.

dependabot Bot and others added 3 commits August 7, 2026 11:42
Bumps [mcp](https://github.com/modelcontextprotocol/python-sdk) from 1.27.1 to 1.28.1.
- [Release notes](https://github.com/modelcontextprotocol/python-sdk/releases)
- [Changelog](https://github.com/modelcontextprotocol/python-sdk/blob/main/RELEASE.md)
- [Commits](modelcontextprotocol/python-sdk@v1.27.1...v1.28.1)

---
updated-dependencies:
- dependency-name: mcp
  dependency-version: 1.28.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [cryptography](https://github.com/pyca/cryptography) from 48.0.1 to 50.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](pyca/cryptography@48.0.1...50.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 50.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…-update targeting

Raises the mcp extra floor to >=1.28.1 (matching the version synced from main)
and keeps the <2 upper bound: mcp 2.0.0 is a breaking rewrite that replaces
FastMCP with MCPServer, and src/agentops/mcp/server.py targets the 1.x API.

Also documents in .github/dependabot.yml why security PRs land on main despite
target-branch: develop, and the correct way to re-cut them.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@placerda
Paulo Lacerda (placerda) merged commit d2c023a into develop Aug 7, 2026
12 checks passed
@placerda
Paulo Lacerda (placerda) deleted the chore/sync-security-deps-to-develop branch August 7, 2026 14:50
Paulo Lacerda (placerda) added a commit that referenced this pull request Aug 7, 2026
Dependabot security updates always target the default branch and ignore
`target-branch: develop` in dependabot.yml. Two of them (#356 mcp, #362
cryptography) squash-merged straight into `main`, leaving `main` two
commits ahead of `develop`.

Their content was already cherry-picked into `develop` via #385, and
`develop` has since moved further ahead:

  package       develop    main
  aiohttp       3.14.3     3.14.1
  cryptography  50.0.0     50.0.0
  mcp           1.28.1     1.28.1
  nltk          3.10.0     3.9.4

So `develop` is a strict superset. What was missing was only the
ancestry link, and that gap is not cosmetic: `git merge-tree
origin/main origin/develop` reproduces a real CONFLICT in `uv.lock`.
The next `release/vX.Y.Z` -> `main` merge would have hit that conflict.

This uses `-s ours` deliberately. Both main-only commits touch `uv.lock`
and nothing else, and `develop` already carries equal-or-newer versions
of every package they bumped, so discarding their tree loses nothing.
The merge exists to advance the merge-base, not to move files.

Verified after merging: `git diff HEAD origin/develop` is empty (no file
changed) and `git log origin/develop..origin/main` is empty (ancestry
closed).

Refs #366

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bcb9c0b6-d506-46dc-90d2-8120413166ee
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