fix: bump MCP and Pillow security pins - #72587
christopherrobin88 wants to merge 1 commit into
Conversation
Update MCP and Pillow pins across project metadata, lazy dependency allowlist, and uv.lock so runtime lazy installs cannot revert the patched versions. Update the computer-use pin contract test accordingly. Verified with targeted project metadata, lazy dependency, vision, and computer-use pin tests; Python security audit reports zero findings.
|
Superseded for the MCP 1.28.1 security package-owner lane by canonical survivor PR #73219 at head 91d3644fc43fe827f67a1915454afb33889beca5. Closing this duplicate candidate to keep exactly one reviewable MCP survivor; no merge/deploy/runtime sync performed. |
|
MCP package-owner lane note: canonical survivor is #73219 at head 91d3644fc43fe827f67a1915454afb33889beca5. This PR remains open because this account is not authorized to close it (GraphQL ClosePullRequest permission denied), but it is superseded for jarvis-os/t_9a6eac24 / t_44d6ed91 MCP 1.28.1 review routing. No merge/deploy/runtime sync performed. |
teknium1
left a comment
There was a problem hiding this comment.
Thanks for identifying that the manifest, lazy installer, and lockfile must move together. The underlying issue remains present on current main: pyproject.toml:125, pyproject.toml:165, pyproject.toml:230, pyproject.toml:241, tools/lazy_deps.py:280, and tools/lazy_deps.py:287 still use Pillow 12.2.0 / MCP 1.26.0.
Problems
- The changed
test_feature_registered_in_allowlisthunk no longer has a current-main target:rgfinds no such test on HEAD, while the current computer-use lazy-install tests are attests/tools/test_computer_use.py:762-792. GitHub reports this PR asCONFLICTING. - The MEMBER discussion identifies overlapping remediation paths in #63942 and the MCP survivor route. These changes share
pyproject.toml,tools/lazy_deps.py, anduv.lock, so they need one consolidated current-main resolution.
Suggested changes
- Salvage the pin changes against current main and regenerate the lock there.
tests/test_project_metadata.py:196-238already enforces that exact lazy pins match the committed lock resolution. - Recreate any desired feature-specific computer-use assertion in the current test layout rather than applying the removed test hunk.
Automated hermes-sweeper review.
| from tools import lazy_deps | ||
| assert lazy_deps.feature_specs("tool.computer_use") == ( | ||
| "mcp==1.26.0", | ||
| "mcp==1.28.1", |
There was a problem hiding this comment.
This test target no longer exists on current main (rg finds no test_feature_registered_in_allowlist), while the current lazy-MCP tests are at tests/tools/test_computer_use.py:762-792. Recreate the assertion in the current test layout during consolidation.
|
Closing as superseded/redundant: main now carries the full security floor for both lanes — mcp==1.28.1 across [dev]/[mcp]/[computer-use] and Pillow==12.3.0 (commits a7efeb0 'fix(sec): update mcp to 1.28.1' and abcd213 'fix(sec): update pillow to 12.3.0', landed 2026-07-30). Maintainer teknium1 confirmed the same for the MCP lane when closing #73219 (2026-08-01). No merge/deploy/runtime mutation performed. |
|
Maintainer closure request: this PR is fully redundant — its entire diff (Pillow==12.3.0 + mcp==1.28.1) is already on main via commits a7efeb0 ('fix(sec): update mcp to 1.28.1') and abcd213 ('fix(sec): update pillow to 12.3.0'), both landed 2026-07-30. Verified live today: main pyproject.toml pins mcp==1.28.1 in [dev]/[mcp]/[computer-use] and Pillow==12.3.0 as a core dep; uv.lock resolves pillow 12.3.0. The sycamoregroupltd account lacks ClosePullRequest permission (GraphQL closePullRequest denied), so please close this PR as superseded/redundant — same disposition teknium1 applied to #73219 on 2026-08-01. No merge/deploy/runtime mutation performed. |
Summary
Why
A direct
pip installof MCP/Pillow is not durable in Hermes becausetools/lazy_deps.pycan reassert pinned optional dependency versions on first real tool use. This keeps pyproject metadata, lazy dependency allowlist, tests, and lockfile in sync.Verification
scripts/run_tests.sh tests/test_project_metadata.py tests/tools/test_lazy_deps.py tests/tools/test_lazy_deps_durable_target.py tests/tools/test_vision_tools.py tests/tools/test_vision_native_fast_path.py→ 204 passed, 0 failed.scripts/run_tests.sh tests/tools/test_computer_use.py::TestLazyMcpInstall::test_feature_registered_in_allowlist→ 1 passed, 0 failed.computer_usecapture succeeded after the MCP bump and MCP remained at 1.28.1.pip check→ no broken requirements.hermes security audit --json→ 0 findings across 147 components.Notes
An unrelated existing Linux GNOME window-selection test in
tests/tools/test_computer_use.pystill fails when the whole file is run. It touches code outside this dependency bump and is not addressed here.