Regeln & json-logic-Referenz
Auswertungsreihenfolge: Regeln laufen pro Connection nach aufsteigender priority; die erste passende aktive Regel gewinnt. Ohne Treffer gilt die Default-Policy: Enforce = halten (fail-closed), Monitor = durchlassen + Flag. Tools im Zustand neu/geändert sind immer freigabepflichtig, außer eine Regel sagt explizit Deny.
Auswertungskontext#
Jede Bedingung wird gegen dieses Objekt geprüft:
{
"tool": { "name": "...", "readOnlyHint": true, "destructiveHint": false },
"args": { ... }, // die Argumente des Calls
"agent": { "id": "...", "label": "..." },
"meta": { "hour_utc": 14, "weekday": 3, // UTC
"hour_local": 16, "weekday_local": 3, // Zeitzone der Organisation
"calls_last_hour": 12, "same_tool_calls_last_5m": 3 }
}Beispiele#
// Zahlungen über 500 halten
{ ">": [{ "var": "args.amount" }, 500] }
// außerhalb der Geschäftszeiten (08–18 Ortszeit) ablehnen
{ "or": [{ "<": [{ "var": "meta.hour_local" }, 8] },
{ ">=": [{ "var": "meta.hour_local" }, 18] }] }
// Bursts halten: mehr als 20 Calls pro Stunde
{ ">": [{ "var": "meta.calls_last_hour" }, 20] }
// nur bestimmte Empfänger erlauben
{ "in": [{ "var": "args.to" }, ["ACME Supplies", "ACME Logistics"]] }
// immer (Tool-Policies nutzen das)
trueUnterstützte Operatoren#
Bedingungen sind Standard-json-logic — die Engine unterstützt den vollen Operator-Satz von jsonlogic.com. Die in der Praxis wichtigsten:
| Kategorie | Operatoren |
|---|---|
| Zugriff | var (Pfad wie args.amount), missing, missing_some |
| Vergleich | == === != !== > >= < <= |
| Logik | and or ! !! if |
| Listen & Strings | in cat substr merge |
| Arithmetik | + - * / % min max |
| Arrays | map filter reduce all some none |
Eine Bedingung, die zur Laufzeit einen Fehler wirft, wertet als kein Treffer — die nächste Regel greift, im Zweifel die fail-closed-Default-Policy. Ein Tippfehler in einer Regel kann also nie versehentlich etwas durchlassen.
Freigaberegeln#
Effekte: allow · require_approval · deny. Freigaberegeln tragen eine Approver-Konfiguration: Rolle oder konkrete Nutzer, Frist (timeout_minutes, Default 240, Minimum 1), Begründungspflicht, optional Eskalationskette (on_timeout: escalate) und Vier-Augen (min_approvals: 2 — zwei unabhängige Freigaben, derselbe Nutzer zählt nicht doppelt).
Im Rule Builder müssen Sie kein json-logic schreiben — der Bedingungs-Builder erzeugt es aus dem Input-Schema Ihrer Tools und zeigt eine Klartext-Vorschau.