Kill Switch für KI-Agenten: wie man Aktionen ohne Release im Notfall stoppt

Praktischer Kill Switch in Production: globaler/per-Tenant-Stop, Writes-Disable-Mode, Stop Reasons, Audit Trail und ein kurzes Runbook.
Auf dieser Seite
  1. Idee in 30 Sekunden
  2. Problem
  3. Lösung
  4. Kill switch ≠ vollständiges Governance-System
  5. Kill-switch-Kontur
  6. Wie das in der Architektur aussieht
  7. Beispiel
  8. Im Code sieht das so aus
  9. Wie das während der Ausführung aussieht
  10. Szenario 1: global stop
  11. Szenario 2: tenant stop
  12. Szenario 3: writes disabled
  13. Typische Fehler
  14. Selbstcheck
  15. FAQ
  16. Wo Kill Switch im Gesamtsystem liegt
  17. Verwandte Seiten

Idee in 30 Sekunden

Kill switch ist eine Notfallkontrolle in der Runtime, mit der du neue Agent-Aktionen während eines Incidents sofort stoppen kannst, ohne Release und ohne Prompt-Änderung.

Wann das nötig ist:
wenn ein Agent Write-Aktionen ausführen kann, mit externen APIs arbeitet und ein Fehler bereits zu einem Production-Incident eskaliert.

Problem

Wenn ein Agent schädliche Aktionen startet, bleibt meist keine Zeit für "Prompt nachjustieren und Release machen". Während das Team die Ursache analysiert, kann der Agent dieselben Aktionen weiter ausführen. Und jede Minute Verzögerung bedeutet neue Seiteneffekte (Zustandsänderungen) in Production.

Typisches Bild:

  • doppelte E-Mails oder Nachrichten
  • massenhafte Create/Update-Operationen
  • überflüssige Aufrufe externer APIs

Analogie: Das ist wie ein Not-Aus-Knopf an einer Produktionslinie. Bei einer Störung musst du zuerst die Bewegung stoppen und erst danach die Ursache analysieren.

Wenn der Kill Switch nur in der UI wirkt, ist das keine Notfallkontrolle. Der echte Stop muss in der Runtime-Loop und im Tool Gateway passieren.

Lösung

Die Lösung ist ein zentraler Kill-Switch-Policy-Layer, der nach dem Bilden der nächsten Agent-Aktion geprüft wird, aber vor der Ausführung. Die Policy gibt allow oder stop mit explizitem Grund zurück: killed_global, killed_tenant, writes_disabled, tool_disabled.

Basismodell:

  • global kill — stoppt im Notfall alle
  • tenant kill — stoppt einen konkreten Kunden
  • writes disabled — erlaubt read, blockiert write
  • tool disabled — blockiert gezielt ein konkretes Tool

Das ist eine eigenständige Notfall-Kontrollschicht, nicht Teil von Prompt oder UI-Logik.

Kill switch ≠ vollständiges Governance-System

Kill switch und Governance lösen unterschiedliche Aufgaben:

  • Kill switch stoppt den Incident "hier und jetzt"
  • Governance steuert Agent-Verhalten dauerhaft (RBAC, Limits, Budgets, Approval)

Eins ohne das andere funktioniert nicht gut:

  • ohne kill switch ist ein Incident schwer sofort zu stoppen
  • ohne Governance passieren Incidents zu häufig

Kill-switch-Kontur

Diese Prüfungen arbeiten als Notfall-Kontur in der Runtime zusammen.

KomponenteWas sie kontrolliertZentrale MechanikWarum
Global stopStopp aller Runsglobal_kill=true
stop before next action
Stoppt einen breiten Incident schnell
Tenant stopStopp innerhalb eines Tenantstenant_kill=true
tenant-scoped flag
Isoliert das Problem ohne globalen Outage
Writes disabled modeBlockieren von Write-Aktionenwrite tool policy
read-only fallback
Ermöglicht sichere Degradation statt Vollstopp
Tool disable listGezieltes Blockieren eines Toolstool_disabled[]
incident mode rules
Schaltet ein problematisches Tool aus, ohne alle Runs zu stoppen
Operator observabilityTransparenz von Operator-Aktionen und Blockierungenaudit logs
actor + reason + scope
Erlaubt zu erklären, wer den Stop aktiviert hat und warum

Wie das in der Architektur aussieht

Der Kill-Switch-Policy-Layer steht in der Runtime-Loop zwischen Planung und Ausführung der nächsten Agent-Aktion. Jede Entscheidung (allow oder stop) wird im Audit Log festgehalten.

Jeder Schritt läuft vor der Ausführung durch diesen Flow: Runtime führt Aktionen nicht direkt aus, sondern übergibt die Entscheidung zuerst an den Policy Layer.

Flow kurz zusammengefasst:

  • Runtime bildet die nächste Aktion
  • Policy liest global/tenant flags + writes/tool rules
  • allow -> die nächste Agent-Aktion wird ausgeführt
  • stop -> Run stoppt mit explizitem reason (killed_global, killed_tenant, writes_disabled, tool_disabled)
  • die Entscheidung wird ins Audit Log geschrieben

Beispiel

Ein Support-Agent hat wegen eines fehlerhaften Szenarios begonnen, email.send massenhaft zu senden. Ein Operator aktiviert writes_disabled für einen konkreten Tenant.

Ergebnis:

  • neue Write-Aktionen werden sofort blockiert
  • Read-Aktionen können verfügbar bleiben
  • in den Logs stehen who/when/why für jede Blockierung

Kill switch stoppt den Incident direkt in der Runtime-Loop und wartet nicht auf ein neues Release.

Im Code sieht das so aus

Das vereinfachte Schema oben zeigt den Haupt-Flow. In der Praxis wird der Kill-State zentral gelesen und für Sekunden gecacht. Kritisch: kill-check muss O(1) sein und mit kurzem Cache (1-2 Sekunden) laufen, sonst reagiert der Notfallstop zu spät. In Production wird derselbe kill-check meist zusätzlich im Tool Gateway ausgeführt, damit kein Aufruf die Runtime-Kontrolle umgehen kann.

Beispiel für Kill-Switch-Konfiguration:

YAML
kill_switch:
  global_flag: agent_kill_global
  tenant_flag_prefix: "agent_kill_tenant:"
  writes_disabled_default: false
  disabled_tools_key: agent_disabled_tools
  cache_ttl_seconds: 2
PYTHON
while True:
    action = planner.next(state)
    action_key = make_action_key(action.name, action.args)  # stabiler Schlüssel für dedupe/audit

    kill_state = kill_store.read(tenant_id=state.tenant_id)
    decision = kill_policy.check(kill_state, action)

    if decision.outcome == "stop":
        audit.log(
            run_id,
            decision=decision.outcome,
            reason=decision.reason,
            scope=decision.scope,
            action=action.name,
            action_key=action_key,
            actor=kill_state.last_updated_by,
        )
        return stop(decision.reason)

    result = tool.execute(action.args)

    audit.log(
        run_id,
        decision=decision.outcome,
        reason=decision.reason,
        scope=decision.scope,
        action=action.name,
        action_key=action_key,
        result=result.status,
    )

    if result.final:
        return result

Kill switch stoppt neue Aktionen. Für in-flight Aktionen ist meist ein separater Best-Effort-Cancel-Mechanismus nötig.

Wie das während der Ausführung aussieht

Szenario 1: global stop

  1. Operator aktiviert global_kill=true.
  2. Runtime bildet die nächste Aktion und liest den Kill-State.
  3. Policy gibt stop (reason=killed_global) zurück.
  4. Neue Aktionen werden nicht ausgeführt.
  5. In den Logs stehen scope=global und actor.

Szenario 2: tenant stop

  1. Für Tenant t_42 wird tenant_kill=true aktiviert.
  2. Runs dieses Tenants erhalten stop (reason=killed_tenant).
  3. Andere Tenants laufen weiter.
  4. Incident ist ohne globalen Stopp lokalisiert.

Szenario 3: writes disabled

  1. writes_disabled=true wird aktiviert.
  2. Read-Aktion läuft mit allow durch.
  3. Write-Aktion erhält stop (reason=writes_disabled).
  4. System wechselt in read-only degrade mode.

Typische Fehler

  • kill switch nur in UI, aber nicht in runtime/tool gateway
  • nur ein globaler Stop ohne per-tenant-Modus
  • fehlender writes-disabled-Modus
  • langer Cache-TTL (Minuten statt Sekunden)
  • fehlender Audit Trail für Operator-Aktionen
  • fehlendes getestetes Incident-Runbook

Ergebnis: Das Team hat einen "Button", aber keine echte Notfallsteuerung.

Selbstcheck

Schneller Kill-Switch-Check vor dem Production-Start:

Fortschritt: 0/8

⚠ Grundlegende Governance-Kontrollen fehlen

Vor production brauchen Sie mindestens Zugriffskontrolle, Limits, audit logs und einen Not-Stopp.

FAQ

Q: Was sollte zuerst aktiviert werden: global stop oder writes disabled?
A: Starte mit writes_disabled, wenn der Incident in Write-Aktionen liegt. Nutze global_kill, wenn ein breites Ausfallrisiko besteht und ein sofortiger Vollstopp nötig ist.

Q: Wo genau sollte kill switch geprüft werden?
A: Mindestens an zwei Stellen: in der Runtime-Loop vor der nächsten Aktion und im Tool Gateway vor der Tool-Ausführung.

Q: Kann Kill-State gecacht werden?
A: Ja, aber kurz (Sekunden). Im Incident macht ein minutenlanger Cache den Kill Switch fast nutzlos.

Q: Wie implementiert man Kill-Flags technisch?
A: Üblicherweise als globale und tenant-scoped Flags in Redis/Config-Store, die der Policy Layer vor jeder Aktion liest.

Q: Bricht kill switch bereits laufende Aktionen ab?
A: Nicht immer. Er blockiert zuverlässig neue Aktionen. Für in-flight Tasks braucht es einen separaten Best-Effort-Cancel-Mechanismus.

Q: Kann kill switch RBAC und Budgets ersetzen?
A: Nein. Kill switch ist ein Notfall-Stop-Mechanismus. RBAC, Limits und Budgets sind für den laufenden Betrieb nötig.

Wo Kill Switch im Gesamtsystem liegt

Kill switch ist die Notfall-Ebene von Agent Governance. Zusammen mit RBAC, Budgets, Approval und Audit bildet er ein vollständiges Production-Kontrollsystem.

Verwandte Seiten

Als Nächstes zum Thema:

⏱️ 7 Min. LesezeitAktualisiert 27. März 2026Schwierigkeit: ★★★
In OnceOnly umsetzen
Budgets + permissions you can enforce at the boundary.
In OnceOnly nutzen
# onceonly guardrails (concept)
version: 1
budgets:
  max_steps: 25
  max_tool_calls: 12
  max_seconds: 60
  max_usd: 1.00
policy:
  tool_allowlist:
    - search.read
    - http.get
writes:
  require_approval: true
  idempotency: true
controls:
  kill_switch: { enabled: true }
Integriert: Production ControlOnceOnly
Guardrails für Tool-Calling-Agents
Shippe dieses Pattern mit Governance:
  • Budgets (Steps / Spend Caps)
  • Tool-Permissions (Allowlist / Blocklist)
  • Kill switch & Incident Stop
  • Idempotenz & Dedupe
  • Audit logs & Nachvollziehbarkeit
Integrierter Hinweis: OnceOnly ist eine Control-Layer für Production-Agent-Systeme.

Autor

Nick — Engineer, der Infrastruktur für KI-Agenten in Produktion aufbaut.

Fokus: Agent-Patterns, Failure-Modes, Runtime-Steuerung und Systemzuverlässigkeit.

🔗 GitHub: https://github.com/mykolademyanov


Redaktioneller Hinweis

Diese Dokumentation ist KI-gestützt, mit menschlicher redaktioneller Verantwortung für Genauigkeit, Klarheit und Produktionsrelevanz.

Der Inhalt basiert auf realen Ausfällen, Post-Mortems und operativen Vorfällen in produktiv eingesetzten KI-Agenten-Systemen.