Skip to content

chore(deps): update Python security floors - #69892

Closed
bbasketballer75 wants to merge 1 commit into
NousResearch:mainfrom
bbasketballer75:chore/python-security-dependencies
Closed

bbasketballer75 wants to merge 1 commit into
NousResearch:mainfrom
bbasketballer75:chore/python-security-dependencies

Conversation

@bbasketballer75

@bbasketballer75 bbasketballer75 commented Jul 23, 2026

Copy link
Copy Markdown

Summary

  • rebase the dependency remediation onto current main
  • raise the required Python security floors without expanding the base install unnecessarily
  • keep security pins synchronized across project extras and lazy-install routes
  • constrain the build backend to setuptools>=83,<84
  • regenerate uv.lock from current metadata instead of replaying an older lockfile

Updated floors include cryptography 48.0.1, Pillow 12.3.0, MCP 1.28.1, Starlette 1.3.1, python-multipart 0.0.32, pytest 9.0.3, setuptools 83.0.0, Click 8.3.3, Pygments 2.20.0, httplib2 0.32.0, pyasn1 0.6.4, pydantic-settings 2.14.2, and msgpack 1.2.1.

pydantic-settings remains limited to the dev/MCP/computer-use/Teams extras and matching lazy routes; it is not promoted into the core install. Fal and Google security floors are likewise mirrored in their lazy-install entries so an already-installed vulnerable transitive package cannot survive a feature refresh.

Relationship to #68648

#68648 is the earlier security-floor proposal and has valuable metadata coverage, but its current head is still conflicting with main in pyproject.toml and tests/test_project_metadata.py. This branch is the current-main, clean-merge fallback and incorporates its valid bounded-setuptools and lazy-install parity concerns.

Verification

  • selected core/dev/web/MCP/Google/Fal/Teams pip-audit: no known vulnerabilities
  • uv lock --check: passed
  • dependency/lazy-install regression selection: 25 passed, 207 deselected
  • broader metadata/computer-use run: 231 passed with one unrelated native-Windows JSON path failure
  • Ruff: passed
  • git diff --check: passed

Hermes intentionally blocks wheel/sdist publication, so uv build exits through the repository's explicit distribution guard; this is not a setuptools failure.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Hermes Agent’s Python dependency “security floors” and lockfile to ensure installs (including extras) resolve to audited, patched versions while keeping build metadata consistent with current main.

Changes:

  • Bumps multiple pinned/floored dependencies (notably cryptography, Pillow, mcp, starlette, python-multipart, pytest, click, Pygments, pydantic-settings) and refreshes uv.lock.
  • Adds msgpack==1.2.1 to the fal extra and syncs select lazy-install pins (dashboard/vision/computer-use).
  • Constrains the build backend requirement to setuptools>=83,<84.

Reviewed changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated 2 comments.

File Description
pyproject.toml Raises security floors, adjusts extras (including fal), and tightens build-system.requires.
uv.lock Regenerated lockfile reflecting the updated dependency metadata and versions.
tools/lazy_deps.py Updates lazy-install pins for dashboard, vision fallback, and computer-use MCP stack.
tests/tools/test_computer_use.py Updates assertions to match the new lazy MCP/starlette pins.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pyproject.toml
@@ -149,14 +154,14 @@ exa = ["exa-py==2.10.2"]
firecrawl = ["firecrawl-py==4.17.0"]
parallel-web = ["parallel-web==0.4.2"]
# Image generation backends
fal = ["fal-client==0.13.1"]
fal = ["fal-client==0.13.1", "msgpack==1.2.1"]

@bbasketballer75 bbasketballer75 Jul 23, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in 4c7b608. The image.fal lazy-install entry now carries msgpack==1.2.1, matching the fal extra. The selected core/dev/web/MCP/Google/Fal/Teams audit is clean, and the eager/lazy parity selection passes 25 tests.

Comment thread pyproject.toml
Comment on lines +105 to +110
"click==8.3.3",
"Pygments==2.20.0",
"pydantic-settings==2.14.2",
# Keep lean installs above the patched dashboard request-stack floors.
"fastapi>=0.133.1,<1",
"starlette>=1.3.1,<2",

@bbasketballer75 bbasketballer75 Jul 23, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in 4c7b608. pydantic-settings is no longer a core dependency; its patched floor is limited to the dev/MCP/computer-use/Teams extras and mirrored lazy routes that actually consume it. Google httplib2/pyasn1 and Fal msgpack floors are mirrored the same way. Lock validation, audit, Ruff, and parity tests pass.

@alt-glitch alt-glitch added type/security Security vulnerability or hardening comp/tools Tool registry, model_tools, toolsets area/config Config system, migrations, profiles P3 Low — cosmetic, nice to have dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code needs-decision Awaiting maintainer decision before any implementation sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades labels Jul 23, 2026
@alt-glitch

Copy link
Copy Markdown
Contributor

This was generated by AI during triage.

Related: this is the current-main successor to closed #69871 and overlaps open #68648 plus the broader dependency-floor cluster. Its lazy-install alignment and package/lock choices differ, so this remains a maintainer policy choice rather than a duplicate.

@bbasketballer75
bbasketballer75 force-pushed the chore/python-security-dependencies branch from 7c81b04 to 4c7b608 Compare July 23, 2026 14:28
@bbasketballer75

Copy link
Copy Markdown
Author

Closing as superseded by #68648 (open, broader scope 'raise vulnerable dependency floors'). Per @alt-glitch's earlier triage comment, this overlaps the broader dep-floor cluster. Keeping #68648 as the canonical place to converge this work.

@bbasketballer75
bbasketballer75 deleted the chore/python-security-dependencies branch July 29, 2026 04:55
@bbasketballer75
bbasketballer75 restored the chore/python-security-dependencies branch August 1, 2026 02:36
@bbasketballer75

Copy link
Copy Markdown
Author

Correction to the closing note above, for the record.

The note says "Closing as superseded by #68648 (open, broader scope)". #68648 has since closed without merging (by @martinramos002-bot, merged: false), so the PR this was closed against no longer exists as a live alternative. The chain now reads: #69871 closed -> "superseded by #69892"; #69892 closed -> "superseded by #68648"; #68648 closed. Every link is closed and none of the floors landed through it.

For accuracy: 113 of this PR's 189 distinctive added lines are already present in main's uv.lock, so part of the work did land — just not via the PR named in the note.

If the remaining dependency floors still matter, one consolidated PR is the workable shape rather than reviving the chain.

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

Labels

area/config Config system, migrations, profiles comp/tools Tool registry, model_tools, toolsets dependencies Pull requests that update a dependency file needs-decision Awaiting maintainer decision before any implementation P3 Low — cosmetic, nice to have python:uv Pull requests that update python:uv code sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades type/security Security vulnerability or hardening

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants