Skip to content

llmAntidote v3.1.0

Choose a tag to compare

@GroveMinting GroveMinting released this 11 Oct 01:30
· 8 commits to main since this release
340d747

Hardens the runtime policy path and adds enforced fleet admission, validated against a real Hermes v0.21.6 install.

Highlights

  • Capability classification (llm_antidote/capabilities.py): a versioned classifier reasons about what a tool can do, not only its argument text. Outbound connector/message tools and unknown plugin tools are treated as egress-capable.
  • Safe/sensitive roots: reads outside operator-configured safe_read_roots require approval even for unrecognized filenames; sensitive_roots always do.
  • Pending taint reservation: sensitive reads reserve access atomically before execution and outbound calls check pending-in-flight or completed taint, closing the concurrent-read decision window.
  • Enforced fleet admission: a signed fleet policy and verified deployed-model binding are required at plugin startup; signed runtime.mode/taint_ttl_minutes are authoritative and conflicting local overrides are refused. Tool calls are blocked when the served model route stops matching the admitted model.
  • fleet runtime-verify: an external supervisor gate for environments where a failed plugin register leaves the host running unguarded.
  • Spark endpoints: explicit --trusted-host plaintext HTTP opt-in (loopback default retained, redirects refused).

Packaging fixes

  • Moved development tooling to requirements-dev.txt; the previous [dev] extra was folded into Hermes' --all-extras install and conflicted with its pinned pytest.
  • Relaxed the cryptography pin so the plugin co-installs with the version Hermes ships (previously excluded 50.0.1).

Compatibility

  • Python 3.11+; Hermes Agent 0.21.x.
  • New settings: safe_read_roots, sensitive_roots, and the admission_* family (see docs/FLEET_ADMISSION.md).

Validation

  • hermes plugins validate / doctor --ci: pass (6 hooks).
  • Runtime hook E2E via real Hermes dispatch and enforced-mode admission (signed strict, route-swap block, tamper fail-closed, external gate exit 1).
  • pytest: 143 passed; ruff check . clean.

Full details in CHANGELOG.md.