v0.7.0
Requires tessera-mesh>=0.7.0.
Added
LLMGuardrailcircuit breaker exposed on/healthzand a newGET /v1/metrics/guardrailendpoint. Operators can now alert onbreaker.state != "closed"or risingbreaker.total_opens.- Persistent hash-chained audit log via
audit_log_path(and optionalaudit_log_seal_keyfor truncation detection). Backed bytessera.audit_log.JSONLHashchainSink. NewGET /v1/audit/verifywalks the chain and returnsvalid/first_bad_seq/seal_valid. - Replay system over the audit log:
GET /v1/audit/casesfiltered case listing with current label per casePOST /v1/audit/labelset ground-truth label, persists to diskGET /v1/audit/labelsdump label mapGET /v1/replay/candidateslist built-in candidatesPOST /v1/replay/runreplay against a candidate, return stats and per-case results- Built-in
current_policycandidate rebuilds aContextfrom the recorded segments and runsPolicy.evaluate.
- SSRF guard wired into the evaluator after destructive_guard / supply_chain and before YARA. New endpoint
POST /v1/ssrf/check. Three new config flags:enable_ssrf_guard,ssrf_blocked_hostnames,ssrf_allowlist_hostnames. guardrail_redact_before_judge: bool = Truetoggle. Default preserves the invariant that no live secret reaches the judge endpoint; opt-out only when the operator trusts the judge at the same level as the application LLM. The choice is recorded in each guardrail event detail underredacted_input.- Policy builder workflow:
POST /v1/policy/builder/runreturns scored proposals from the deterministic analyzer ranked bynet_fixes(fixed - regressed)POST /v1/policy/builder/llmreturns LLM-generated proposals (constrained template set), optionally scored. Reuses the same Anthropic / OpenAI client and model that backs the LLMGuardrail.
- Static URL pattern rules gate. Fast deterministic allow / deny that runs before SSRF and scanners. New endpoint
POST /v1/url-rules/check. Two new config flags:enable_url_rules,url_rules(list of dicts withrule_id,pattern,kind,action, optionalmethods, optionaldescription).
Changed
LLMGuardrailparse failures now raise so the circuit breaker counts them.scan_and_labelsnapshotsoutput_textbefore any redaction phase so the raw form survives subsequent mutation.
Verified
- 224 passing tests; 2 pre-existing async-fixture failures unrelated to this release.
Install
pip install agentmesh-mesh==0.7.0