Repository navigation
llmAntidote v3.2.1
Follow-up corrections to the v3.2.0 hardening pass, from a fresh review. Validated against a running Hermes 0.21.6 install.
Fixes
- Pending call-id collision (fail-open): pending reservations are now tracked per session (
SessionRisk.pending_ids) instead of in one globalcall_idmap. Two sessions that reuse atool_call_id(per-session counters, resumed sessions) each keep their own reservation and can no longer drop or cross-release the other's. - Large-write block (regression): the oversized-arguments gate now applies to the scanned (content-excluded) text for write tools.
write_file/patchcarrying more thanmax_scan_bytesof content is allowed again, while oversizedterminal/execute_codestill blocks. - Route-config footgun: enforced mode with required model binding and an empty
admission_model_namenow refuses admission withadmission.model_route_unconfiguredrather than skipping the route check./antidote statusprints the route reason and registration logs the enforcement configuration (warning when unconfigured); the plugin still registers so the host is never left silently unguarded. - Docs: name the single-call
terminal/execute_coderead+exfil residual and the enforced-modepre_api_requestdependency; align the documented coverage floor with CI (80% branch).
Verification
pytest: 185 passed; coverage 81.7% (branch).ruff check .andmypy: clean.pip-audit -r requirements.txt: no known vulnerabilities.- CI matrix (3.11/3.12/3.13), manifest validation, and the real-Hermes e2e job (standalone + enforced) all green.
Compatibility
- Drop-in upgrade from 3.2.0. Python 3.11+; Hermes Agent 0.21.x.
Full details in CHANGELOG.md.