So funktioniert’s
Ein Agent fragt. Dein Zuhause prüft das Mandat. Dann antwortet es: erlauben, nachfragen oder ablehnen – und schreibt es auf.
Fünf Bausteine
- Haushalt Die Menschen, die dort wohnen. Sie schreiben das Mandat. Begriff in der Spezifikation:
principal - Agent Jede KI, die etwas tun will – ein Sprachassistent, eine Energie-App. Begriff in der Spezifikation:
agent - Gerät Eine Lampe, ein Schloss, eine Heizung. In 13 Kategorien sortiert. Begriff in der Spezifikation:
resource - Aktion Was der Agent will: einschalten, öffnen, auf 21 °C stellen. Begriff in der Spezifikation:
action - Entscheidung Die Antwort auf eine Anfrage: erlauben, nachfragen oder ablehnen. Begriff in der Spezifikation:
decision
Der Weg einer Anfrage
Der Agent spricht nie direkt mit dem Gerät. Alles läuft über den Wächter im Haus.
Erlauben: Der Wächter findet eine passende Regel und gibt den Befehl sofort weiter.Nachfragen: Der Wächter schickt eine Frage an Alex’ Handy. Erst nach „Bestätigen“ öffnet sich die Tür. Keine Antwort in 2 Minuten heißt Nein.Ablehnen: Keine Regel erlaubt es, oder eine Regel verbietet es. Das Gerät bekommt nie einen Befehl.
Ein Mandat, zwei Ansichten
Dieselben Regeln – einmal als Sätze für Menschen, einmal als JSON für Maschinen. Beide sagen genau dasselbe.
Im Spielplatz bearbeitenKlartext
- Darf den Zustand aller Geräte lesenerlauben
- Darf Licht ein- und ausschalten und dimmenerlauben
- Darf die Temperatur bis 22 °C einstellenerlauben
- Darf Türen entriegeln und öffnen, wenn Alex innerhalb von 2 Min. bestätigtnachfragen
- Darf keine Kameras nutzen – nicht einmal hineinschauenablehnen
- Darf die Alarmanlage nicht ausschaltenablehnen
- Alles andereablehnen
JSON
{
"type": "https://home-mandate.org/mandate/v0",
"id": "m-voice-assistant",
"principal": "household:hm-7f3a",
"agent": { "client_id": "hm-client:voice-7c21e9a4", "display_name": "Voice assistant" },
"rules": [
{ "id": "r-read-all", "resource": { "any": true }, "actions": ["read"], "decision": "allow" },
{ "id": "r-lights", "resource": { "category": "light" }, "actions": ["turn_on", "turn_off", "set"], "decision": "allow" },
{ "id": "r-climate", "resource": { "category": "climate" }, "actions": ["set_temperature"], "decision": "allow",
"constraints": { "temperature": { "max": 2200 } } },
{ "id": "r-locks", "resource": { "category": "lock" }, "actions": ["unlock", "open"], "decision": "ask",
"approval": { "timeout": "PT2M", "approvers": ["alex"] } },
{ "id": "r-no-cameras", "resource": { "category": "camera" }, "actions": ["*"], "decision": "deny" },
{ "id": "r-no-alarm", "resource": { "category": "alarm" }, "actions": ["disarm"], "decision": "deny" }
],
"default": "deny",
"approval": { "timeout": "PT2M", "approvers": ["alex"] },
"limits": { "max_actions_per_hour": 60 },
"valid_from": "2026-10-01T00:00:00+02:00",
"created_by": "alex",
"created_at": "2026-10-01T09:12:00+02:00"
}Die Grundregeln
- Nicht erlaubt heißt verboten.Passt keine Regel, lautet die Antwort ablehnen.
- Die strengste Regel gewinnt.Reihenfolge egal. Ablehnen schlägt nachfragen, nachfragen schlägt erlauben.
- Kritische Aktionen sind besonders.Ein Erlauben zählt nur, wenn jede passende Erlauben-Regel sie ausdrücklich nennt und allow_critical trägt. Sonst wird aus erlauben nachfragen: Ein Mensch muss bestätigen.
- Keine Antwort heißt Nein.Bestätigt niemand eine Nachfrage rechtzeitig, lautet die Antwort ablehnen.
- Entschieden und aufgeschrieben zu Hause.Der Wächter entscheidet, nicht der Agent – der Agent kann nur fragen. Jede Entscheidung landet im Protokoll.
Das Protokoll ist ein Fahrtenschreiber
Jeder Eintrag enthält den Fingerabdruck (SHA-256-Hash) des vorherigen. Ändert jemand einen alten Eintrag, ändert sich sein Fingerabdruck – und der nächste Eintrag passt nicht mehr.
- Licht an · Wohnzimmer erlauben
- prev
- null
- digest
- 1f56…0405
- passtAlarmanlage aus ablehnen erlauben
- prev
- 1f56…0405
- digest
- 399d…eb0a
- 9fc0…39b7
- passt passt nichtHaustür entriegeln nachfragen
- prev
- 399d…eb0a
- digest
- a8e4…e87d
- passtHeizung auf 21 °C erlauben
- prev
- a8e4…e87d
- digest
- 3b32…0251
Die Kette ist nicht signiert: Wer das ganze Protokoll neu schreiben kann, kann auch jeden Fingerabdruck neu berechnen. Zum Beweis wird sie erst zusammen mit einer Kopie oder einem signierten Checkpoint außerhalb des Protokolls.
Für Techniker: die vier Einträge
Digest eines Eintrags: "sha256:" + hex(SHA-256(JCS(Eintrag))), über den vollständigen Eintrag einschließlich prev. Der erste Eintrag hat prev null. Austauschformat: JSON Lines.
{"type":"https://home-mandate.org/audit/v0","id":"01a13111-6c20-7101-8a01-00005eed0101","seq":1,"recorded_at":"2026-10-12T19:02:01+02:00","event":"decision","principal":"household:hm-7f3a","agent":{"client_id":"hm-client:voice-7c21e9a4"},"request":{"time":"2026-10-12T19:02:00+02:00","timezone":"Europe/Berlin","resource":{"entity_id":"light.living_room","category":"light","areas":["living_room"]},"action":"turn_on"},"mandate":{"id":"m-voice-assistant","digest":"sha256:1bd044ea0d93302d8207adf47a8c5f06f231707cb0822b2e2a88fa51c2d63b64"},"evaluation":{"decision":"allow","reason":"rule","rule_id":"r-lights"},"result":{"status":"executed"},"prev":null}
{"type":"https://home-mandate.org/audit/v0","id":"01a13114-3940-7102-9a02-00005eed0102","seq":2,"recorded_at":"2026-10-12T19:05:01+02:00","event":"decision","principal":"household:hm-7f3a","agent":{"client_id":"hm-client:voice-7c21e9a4"},"request":{"time":"2026-10-12T19:05:00+02:00","timezone":"Europe/Berlin","resource":{"entity_id":"alarm.house","category":"alarm"},"action":"disarm"},"mandate":{"id":"m-voice-assistant","digest":"sha256:1bd044ea0d93302d8207adf47a8c5f06f231707cb0822b2e2a88fa51c2d63b64"},"evaluation":{"decision":"deny","reason":"rule","rule_id":"r-no-alarm"},"result":{"status":"denied","denied_by":"mandate"},"prev":"sha256:1f56a91f3a236721aab9ce2aa120f825ed748afa732dd8523025a12ecec70405"}
{"type":"https://home-mandate.org/audit/v0","id":"01a13115-2420-7103-aa03-00005eed0103","seq":3,"recorded_at":"2026-10-12T19:06:40+02:00","event":"decision","principal":"household:hm-7f3a","agent":{"client_id":"hm-client:voice-7c21e9a4"},"request":{"time":"2026-10-12T19:06:00+02:00","timezone":"Europe/Berlin","resource":{"entity_id":"lock.front_door","category":"lock","areas":["hall"]},"action":"unlock"},"mandate":{"id":"m-voice-assistant","digest":"sha256:1bd044ea0d93302d8207adf47a8c5f06f231707cb0822b2e2a88fa51c2d63b64"},"evaluation":{"decision":"ask","reason":"rule","rule_id":"r-locks","approval_timeout":"PT2M"},"approval":{"outcome":"approved","by":"alex","at":"2026-10-12T19:06:40+02:00"},"result":{"status":"executed"},"prev":"sha256:399dfdceacfa98d5183d713ae58fe974d8212aefc82a04e2c1b665150381eb0a"}
{"type":"https://home-mandate.org/audit/v0","id":"01a13116-0e80-7104-ba04-00005eed0104","seq":4,"recorded_at":"2026-10-12T19:07:01+02:00","event":"decision","principal":"household:hm-7f3a","agent":{"client_id":"hm-client:voice-7c21e9a4"},"request":{"time":"2026-10-12T19:07:00+02:00","timezone":"Europe/Berlin","resource":{"entity_id":"climate.living_room","category":"climate","areas":["living_room"]},"action":"set_temperature","parameters":{"temperature":2100}},"mandate":{"id":"m-voice-assistant","digest":"sha256:1bd044ea0d93302d8207adf47a8c5f06f231707cb0822b2e2a88fa51c2d63b64"},"evaluation":{"decision":"allow","reason":"rule","rule_id":"r-climate"},"result":{"status":"executed"},"prev":"sha256:a8e48436333684cb6ae658427a366aeace6e36e35728a78fde6edb0b2457e87d"}