fix: harden skill bundles and plugin API security - #19275
fix: harden skill bundles and plugin API security#19275abhinav11082001-stack wants to merge 2 commits into
Conversation
|
Likely duplicate of #9925 |
teknium1
left a comment
There was a problem hiding this comment.
Thanks for the security-focused work. Most production fixes in this branch are already present on current main: binary bundle hashing is handled in tools/skills_hub.py:3573-3586; plugin API containment has discovery and mount-time checks in hermes_cli/web_server.py:16111-16145 and 16666-16775; Docker cleanup uses bounded argv-based subprocess.run calls in tools/environments/docker.py:1407-1459.
Problems
- The changed
pyproject.tomlmessaging line removesdiscord.py[voice]. Current main intentionally installs that extra inpyproject.toml:161andtools/lazy_deps.py:162; voice-channel joining depends on those dependencies (gateway/run.py:12764-12803,plugins/platforms/discord/adapter.py:2852). This would regress an active supported feature.
Suggested changes
- Re-scope any remaining dependency remediation onto current pins while retaining the voice extra, and verify the audit plus Discord voice dependency path.
- Do not carry forward the runtime fixes already implemented on main.
This is an automated hermes-sweeper review.
| dev = ["debugpy>=1.8.0,<2", "pytest>=9.0.2,<10", "pytest-asyncio>=1.3.0,<2", "pytest-xdist>=3.0,<4", "mcp>=1.2.0,<2", "ty>=0.0.1a29,<0.0.22", "ruff"] | ||
| messaging = ["python-telegram-bot[webhooks]>=22.6,<23", "discord.py[voice]>=2.7.1,<3", "aiohttp>=3.13.3,<4", "slack-bolt>=1.18.0,<2", "slack-sdk>=3.27.0,<4", "qrcode>=7.0,<8"] | ||
| dev = ["debugpy>=1.8.0,<2", "pytest>=9.0.3,<10", "pytest-asyncio>=1.3.0,<2", "pytest-xdist>=3.0,<4", "mcp>=1.2.0,<2", "ty>=0.0.1a29,<0.0.22", "ruff"] | ||
| messaging = ["python-telegram-bot[webhooks]>=22.6,<23", "discord.py>=2.7.1,<3", "aiohttp>=3.13.4,<4", "slack-bolt>=1.18.0,<2", "slack-sdk>=3.27.0,<4", "qrcode>=7.0,<8"] |
There was a problem hiding this comment.
Removing [voice] drops the dependency path needed for the current Discord voice-channel feature. Current main deliberately retains discord.py[voice] in both the messaging extra and tools/lazy_deps.py; please preserve voice support and address any remaining dependency concern with a compatible current-lock resolution.
Summary
Test Plan
venv/bin/python -m pytest tests/hermes_cli/test_web_server_host_header.py tests/tools/test_docker_environment.py tests/tools/test_skills_hub_bundle_hash.py -q -o 'addopts='(36 passed)venv/bin/python - <<'PY' ... ast.parse(...) ... PYfor modified Python files (OK)git diff --check(clean)uv audit --locked --no-progress --color never(no known vulnerabilities)npm audit --package-lock-only --audit-level=lowinui-tuiandwebsite(0 vulnerabilities)Notes
-q -o 'addopts='but timed out after 600s with unrelated existing failures/skips before completion, so the gate is targeted regression tests plus Python/Node audits.messagingextra now depends ondiscord.pywithout thevoiceextra to avoid the vulnerablePyNaCl<1.6transitive pin fromdiscord.py[voice].