Skip to content
Zurück zur Startseite

§ DOCUMENTATION

Policy-as-Code

Erstellen Sie Richtlinien als JSON oder YAML in Ihrem Repository, validieren Sie sie vor CI mit execlave policies lint, gleichen Sie sie serverseitig mit execlave policies sync ab und prüfen Sie jede Änderung über einen manipulationssicheren Versionsverlauf.

§ 01

Warum Policy-as-Code

Wenn Richtlinien nur im Dashboard gepflegt werden, umgehen Änderungen denselben Review-Prozess, den Sie auf Anwendungscode anwenden. Eine einzige falsch konfigurierte Regel — zum Beispiel das Umschalten von enforcementMode von block auf log_only — kann den Wirkungsbereich Ihres Agenten still und heimlich erweitern, ohne Diff, ohne Reviewer und ohne automatisierten Test, der dies auffängt.

Execlaves Policy-as-Code-Workflow behandelt Policy-Bundles als erstklassige Quellartefakte: Code-Review, CI-Validierung und reproduzierbare Deployments für jede Richtlinienänderung. Dasselbe Schema, das die API durchsetzt, ist lokal verfügbar, sodass Fehler zur Lint-Zeit und nicht zur Laufzeit erkannt werden.

§ 02

Policy-Bundles erstellen

Ein Policy-Bundle ist eine JSON- oder YAML-Datei, die eine Richtlinie deklariert. Die Struktur spiegelt den POST /api/v1/policies-Request-Body wider: Pflichtfelder sind name, policyType, enforcementMode und ruleDefinition. Optionale metadata-Schlüssel (owner, ticket, team) werden unverändert gespeichert und im Dashboard angezeigt.

Speichern Sie Bundles an beliebiger Stelle in Ihrem Repository — ein übliches Layout ist ein übergeordnetes policies/-Verzeichnis. Die CLI-Befehle akzeptieren einen Verzeichnispfad und verarbeiten rekursiv alle .json- und .yaml-Dateien darin.

FeldErforderlichHinweise
namejaLesbare Bezeichnung, muss innerhalb der Organisation eindeutig sein
policyTypejatool_call, prompt_injection, pii_detection, …
enforcementModejablock, log_only, require_approval
ruleDefinitionjaObjekt — Schema variiert je nach policyType
metadataneinBeliebige Schlüssel-Wert-Paare, gespeichert als JSONB
§ 03

execlave policies lint

execlave policies lint <path> validiert jede Bundle-Datei gegen das Richtlinien-JSON-Schema, bevor Sie einen Commit erstellen oder einen Pull Request öffnen. Bei jedem Fehler wird ein Nicht-Null-Exit-Code zurückgegeben, was es direkt für CI geeignet macht.
Was lint erkenntBeispiel
Fehlende PflichtfelderruleDefinition vollständig weggelassen
Unbekannter RichtlinientyppolicyType: "custom_type" nicht im Enum
Falscher FeldtypruleDefinition.tools: String statt Array
Ungültiger enforcementMode"allow" statt "block" / "log_only" / "require_approval"
Zusätzliche Top-Level-SchlüsselFelder außerhalb des Schemas lösen additionalProperties-Fehler aus
# Validate all policy bundles before committingexeclave policies lint ./policies/ # Output on success✓ production-guardrails.json — valid✓ data-access.yaml — valid2 bundles validated, 0 errors # Output on failure (exits non-zero — CI-friendly)✗ production-guardrails.json — invalid  ruleDefinition.tools: must be array1 error found
§ 04

execlave policies sync — Dry-run & Anwenden

execlave policies sync <path> vergleicht deklarierte Bundles mit den aktiven Richtlinien in Ihrer Organisation und gibt den Plan aus. Es werden keine Änderungen angewendet, bis Sie --apply übergeben. Synchronisierte Richtlinien erhalten source: "cli-sync" in ihrem metadata-Feld zur Herkunftsverfolgung.
# Dry-run (default) — prints plan, no changes appliedexeclave policies sync ./policies/ Plan:  + create  "Require approval for file writes"  (production-guardrails.json)  ~ update  "Block PII exfiltration"             (data-access.yaml)      enforcementMode: "log_only""block"  = no-op   "Rate limit external calls"          (already in sync) 2 changes pending. Re-run with --apply to apply.
Sobald Sie den Plan geprüft haben, wenden Sie ihn an:
# Apply the planexeclave policies sync ./policies/ --apply Applied:  ✓ created  pol_01j...  "Require approval for file writes"  ✓ updated  pol_02j...  "Block PII exfiltration"
§ 05

Richtlinienverlauf & Metadaten

Jedes Richtlinien-Schreibereignis wird im manipulationssicheren Audit-Log aufgezeichnet. Den vollständigen Änderungsverlauf einer Richtlinie erhalten Sie über GET /api/v1/policies/:id/history. Die Antwort ist ältestes zuerst geordnet und enthält für jede Änderung den Akteur, den Zeitstempel und einen Diff auf Feldebene.

Da das Audit-Log ENABLE ALWAYS-Trigger verwendet, die UPDATE und DELETE verhindern, kann der Verlauf nachträglich nicht geändert werden — jeder Eintrag ist konstruktionsbedingt unveränderlich.

curl https://api.execlave.com/api/v1/policies/pol_01j.../history \  -H "Authorization: Bearer $EXECLAVE_API_KEY" # Response{  "data": [    {      "eventType": "policy.updated",      "actorId": "user_123",      "changedAt": "2026-06-02T09:30:00Z",      "diff": { "enforcementMode": { "from": "log_only", "to": "block" } }    },    {      "eventType": "policy.created",      "actorId": "cli-sync",      "changedAt": "2026-05-15T14:00:00Z",      "diff": null    }  ]}
§ 06

Häufig gestellte Fragen

Validiert execlave policies lint gegen dasselbe Schema, das die API durchsetzt?
Ja. Die CLI validiert Bundle-Dateien gegen dasselbe Richtlinien-JSON-Schema, das die Execlave-API bei jeder Erstell- und Aktualisierungsanfrage durchsetzt. Ein Bundle, das den Lint-Check besteht, wird vom Server nicht aus Schemagründen abgelehnt – es handelt sich um dieselbe Validierungsoberfläche, die lokal vor dem Push ausgeführt wird.
Was zeigt mir ein Dry-Run konkret?
execlave policies sync <Pfad> ohne --apply gibt einen Plan aus: welche Richtlinien erstellt, welche aktualisiert (mit einem Diff der geänderten Felder) und welche bereits synchron sind. Es werden keine Änderungen auf dem Server gespeichert. Das macht es sicher, ihn in CI als Prüfschritt auszuführen – Pipeline fehlschlagen lassen, wenn der Plan nicht leer ist, oder Ingenieure den Diff in einem Pull Request prüfen lassen.
Wie funktionieren Provenienz-Metadaten?
Jede Richtlinie enthält ein JSONB-Metadatenfeld. Wenn execlave policies sync Änderungen anwendet, trägt es source: "cli-sync" in dieses Metadatenobjekt ein. Sie können die Metadaten um owner, ticket, team oder andere Schlüssel erweitern – die API speichert sie unverändert und zeigt sie in Richtlinien-Listen- und Detailantworten an. Das Dashboard zeigt Metadaten als ausklappbares Panel auf der Richtlinien-Detailseite.
Ist der Richtlinien-Versionsverlauf ein Append-Only-Audit-Log oder eine separate Versionstabelle?
Der Richtlinien-Versionsverlauf wird aus dem manipulationssicheren Audit-Log abgeleitet, nicht aus einer separaten Versionstabelle. GET /api/v1/policies/:id/history fragt das Audit-Log nach allen Schreibereignissen für diese Richtlinien-ID ab und gibt sie in chronologischer Reihenfolge zurück. Da das Audit-Log ENABLE ALWAYS-Trigger verwendet, die UPDATE und DELETE verhindern, ist der Verlauf konstruktionsbedingt unveränderlich.
Policy-as-Code — Execlave Docs