Bug Description
The Hermes Agent venv ships with a uv.lock file that explicitly pins three packages at versions with known security vulnerabilities. Any pip-based fix (pip-audit --fix or pip install --upgrade) is transient — the next time
uv sync runs (which happens on gateway restart, system reboot, or Hermes self-repair), the packages are downgraded back to the vulnerable pinned versions. This was verified across a full system reboot — packages reverted on gateway restart.
Steps to Reproduce
1. Install Hermes Agent v0.18.2 via git on a clean system
2. Run pip-audit inside the venv:
.hermes/hermes-agent/venv/bin/pip-audit
3. Observe 8 vulnerabilities in 3 packages
4. Fix them: pip-audit --fix (or pip install --upgrade cryptography starlette python-multipart)
5. Verify zero vulns: pip-audit → clean
6. Reboot the system (or restart hermes-gateway which triggers uv sync)
7. Run pip-audit again → 8 vulnerabilities are back
8. Check uv.lock to confirm pinned versions:
grep -A1 'name = "cryptography"' .hermes/hermes-agent/uv.lock | grep version
→ version = "46.0.7"
Expected Behavior
- uv.lock should pin secure versions of all dependencies
- pip-audit should report zero known vulnerabilities in a fresh install
- Version pins in pyproject.toml should use compatible-release ranges instead of exact pins when possible, so security fixes can land without manual lock file updates
Actual Behavior
uv.lock hard-pins:
cryptography ==46.0.7
starlette ==1.0.1
python-multipart ==0.0.27
Pip-audit output after fresh sync:
Found 8 known vulnerabilities in 3 packages
Name Version ID Fix Versions
cryptography 46.0.7 GHSA-537c-gmf6-5ccf 48.0.1
starlette 1.0.1 PYSEC-2026-249 1.3.1
starlette 1.0.1 PYSEC-2026-248 1.3.0
starlette 1.0.1 CVE-2026-48818 1.1.0
starlette 1.0.1 CVE-2026-48817 1.1.0
python-multipart 0.0.27 CVE-2026-53540 0.0.31
python-multipart 0.0.27 CVE-2026-53539 0.0.30
python-multipart 0.0.27 CVE-2026-53538 0.0.30
After pip install --upgrade cryptography starlette python-multipart:
ERROR: pip's dependency resolver: hermes-agent 0.18.2 requires cryptography==46.0.7,
but you have cryptography 49.0.0 which is incompatible.
Packages install at secure versions but conflict with declared dependency.
Next uv sync reverts to vulnerable versions.
Affected Component
Configuration (config.yaml, .env, hermes setup)
Messaging Platform (if gateway-related)
N/A (CLI only)
Debug Report
Vulnerable pins confirmed in uv.lock:
cryptography ==46.0.7
starlette ==1.0.1
python-multipart ==0.0.27
Operating System
Debian GNU/Linux 13 (trixie), aarch64
Python Version
Python 3.11.15 (Hermes venv) / Python 3.13.5 (system)
Hermes Version
Hermes Agent v0.18.2 (2026.7.7.2)
Additional Logs / Traceback (optional)
Root Cause Analysis (optional)
The fix requires:
- Bumping the locked versions in uv.lock (uv lock --upgrade-package cryptography --upgrade-package starlette --upgrade-package python-multipart)
- Relaxing exact pins in pyproject.toml to allow compatible security updates (e.g., cryptography>=46.0.7 instead of ==46.0.7)
- Adding pip-audit or a similar CVE scanner to CI to catch regressions
Proposed Fix (optional)
1. Run uv lock --upgrade-package cryptography --upgrade-package starlette --upgrade-package python-multipart to bump uv.lock
2. Relax exact pins in pyproject.toml where possible:
- cryptography>=46.0.7 instead of ==46.0.7
- starlette>=1.0.1 instead of ==1.0.1
- python-multipart>=0.0.27 instead of ==0.0.27
3. Add pip-audit to CI workflow (e.g., .github/workflows/security.yml) to run on PRs and cron schedule
4. Consider adding a Dependabot or Renovate config to auto-bump security-critical packages
Are you willing to submit a PR for this?
Bug Description
The Hermes Agent venv ships with a uv.lock file that explicitly pins three packages at versions with known security vulnerabilities. Any pip-based fix (pip-audit --fix or pip install --upgrade) is transient — the next time
uv sync runs (which happens on gateway restart, system reboot, or Hermes self-repair), the packages are downgraded back to the vulnerable pinned versions. This was verified across a full system reboot — packages reverted on gateway restart.
Steps to Reproduce
Expected Behavior
Actual Behavior
uv.lock hard-pins:
cryptography ==46.0.7
starlette ==1.0.1
python-multipart ==0.0.27
Affected Component
Configuration (config.yaml, .env, hermes setup)
Messaging Platform (if gateway-related)
N/A (CLI only)
Debug Report
Vulnerable pins confirmed in uv.lock: cryptography ==46.0.7 starlette ==1.0.1 python-multipart ==0.0.27Operating System
Debian GNU/Linux 13 (trixie), aarch64
Python Version
Python 3.11.15 (Hermes venv) / Python 3.13.5 (system)
Hermes Version
Hermes Agent v0.18.2 (2026.7.7.2)
Additional Logs / Traceback (optional)
Root Cause Analysis (optional)
The fix requires:
- Bumping the locked versions in uv.lock (uv lock --upgrade-package cryptography --upgrade-package starlette --upgrade-package python-multipart)
- Relaxing exact pins in pyproject.toml to allow compatible security updates (e.g., cryptography>=46.0.7 instead of ==46.0.7)
- Adding pip-audit or a similar CVE scanner to CI to catch regressions
Proposed Fix (optional)
Are you willing to submit a PR for this?