Skip to content

llmAntidote v3.2.1

Choose a tag to compare

@GroveMinting GroveMinting released this 11 Oct 03:16
· 6 commits to main since this release
8b97531

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 global call_id map. Two sessions that reuse a tool_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/patch carrying more than max_scan_bytes of content is allowed again, while oversized terminal/execute_code still blocks.
  • Route-config footgun: enforced mode with required model binding and an empty admission_model_name now refuses admission with admission.model_route_unconfigured rather than skipping the route check. /antidote status prints 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_code read+exfil residual and the enforced-mode pre_api_request dependency; align the documented coverage floor with CI (80% branch).

Verification

  • pytest: 185 passed; coverage 81.7% (branch).
  • ruff check . and mypy: 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.