Ein KI-gestützter Coding-Assistent in einer Free-Tier-Serverwarteschlange erstellte eine Schema-Migrationsdatei, nachdem die Systemregel „Migrations einfrieren“ während einer automatischen Kontextkomprimierung verschwunden war. Der Vorfall zeigt, dass das Vertrauen auf promptbasierte Anweisungen zur Durchsetzung von Sicherheitsregeln nach hinten losgehen kann, wenn lange Chat-Sitzungen zusammengefasst werden.

Was passiert ist

Ein gemeinsam genutzter Coding-Agent wurde mit einem System-Prompt ausgeführt, der eine einzige Regel enthielt: Erstelle oder ändere keine Migrationsdateien. Die Regel hielt Schema-Migrationen auf dem Release-Branch eingefroren, während Entwickler den Agenten für Routineänderungen nutzten.

Während einer längeren Sitzung überschritt die Konversation das Token-Limit des Modells. Der Server rief die Kontextkomprimierung (context compaction) auf und ersetzte den vollständigen Chat-Verlauf durch eine kurze Zusammenfassung, um das Token-Budget einzuhalten. Die Zusammenfassung behielt Erwähnungen von Dateipfaden bei, strich jedoch die negative Einschränkung („schreibe nicht in migrations/**“). Als das Modell seine nächste Antwort generierte, befand sich die Freeze-Regel nicht mehr in seinem Arbeitsspeicher.

Der Agent schlug daraufhin eine SQL-Optimierung vor, um die Abfragegeschwindigkeit zu verbessern. Das zugehörige Tool speicherte die Änderung als Migrationsdatei auf der Festplatte. Die Unit-Tests liefen erfolgreich durch, da sie niemals rohe SQL-Migrationen ausführen, und die Änderung wurde erst später in einem Code-Review-Diff entdeckt.

Warum das wichtig ist

  • Guardrails verschwanden: Richtlinien auf Prompt-Ebene sind flüchtig. Wenn der Kontext des Modells komprimiert wird, kann jede „Tu dies nicht“-Klausel verloren gehen, wodurch das System unbeschränkt verbotene Aktionen ausführen kann.
  • Unit-Tests reichen nicht aus: Tests, die keine Migrationsskripte ausführen, können ein falsches Sicherheitsgefühl vermitteln. Die Änderung schlich sich ein, weil die Testsuite das neue SQL nie geprüft hat.
  • Menschliche Überprüfung hinkte hinterher: Bis ein Reviewer den Diff sah, war die Migrationsdatei bereits committet worden, was einen Rollback oder zusätzliche Bereinigungen erforderlich machte.

Der Fehler verursachte keinen Ausfall, erzwang jedoch zusätzlichen Aufwand, um eine unnötige Migration rückgängig zu machen, und erhöhte das Risiko, dass ein ähnlicher Fehler Live-Datenbanken beeinträchtigt.

Wie die Guardrail versagte

  1. Nur-Prompt-Regel – Der Freeze existierte als Klartext im System-Prompt.
  2. Lange Sitzung – Der Chat wuchs über das Kontextfenster des Modells hinaus.
  3. Komprimierung – Der Server ersetzte das vollständige Transkript durch eine substantivlastige Zusammenfassung.
  4. Verlust der negativen Einschränkung – Die Zusammenfassung ließ die „Tu dies nicht“-Anweisung weg und löschte so die Regel.
  5. Modell-Ausgabe – Ohne die Regel generierte das Modell eine Antwort, die eine Migration erstellte.

Zusammenfassungs-Algorithmen neigen dazu, Substantive (Dateipfade, Funktionsnamen) beizubehalten und Negationen zu streichen, weshalb die Regel lautlos verschwand.

Die Lösung: Guardrails auf den Schreibpfad verlagern

Anstatt Verbote in den Prompt einzubetten, sollten sie dort durchgesetzt werden, wo der Code auf die Festplatte schreibt.

  1. Erstellen Sie eine Policy-Datei (z. B. agent_policy.txt), die eine Deny-List von Pfaden wie schema/** oder migrations/** enthält.
  2. Fügen Sie ein Pre-Apply-Skript hinzu, das die Policy-Datei liest und jeden Diff scannt, bevor das Apply-Tool ausgeführt wird.
  3. Fail closed (Vorgang bei Fehler abbrechen), falls die Policy-Datei fehlt, leer ist oder ein Diff einen verbotenen Pfad berührt.
  4. Bitten Sie das Modell nicht um Bestätigung der Deny-List; eine Bestätigung ist nur ein Signal, keine Durchsetzung.

Nur-Prompt vs. diskbasierte Guardrails

Aspekt Nur-Prompt-Freeze Diskbasierte Gate
Komprimierungsrisiko Regel kann verschwinden Policy-Datei bleibt intakt
Unit-Test-Abdeckung Kann verbotene Schreibvorgänge übersehen Pfadprüfung blockiert Schreibvorgang unabhängig von Tests
Zeitpunkt der menschlichen Überprüfung Schaden kann bereits committet sein Schreibvorgang startet nie, Reviewer sieht keine Änderung
Implementierungsaufwand Minimal (nur eine Zeile im Prompt) Kleines Skript + Policy-Datei

Gegenargument

Worauf man als Nächstes achten sollte

Fazit

Wenn Sie eine Regel benötigen, die niemals ignoriert werden darf – wie etwa „keine Migrationen während eines Freezes“ – speichern Sie diese auf der Festplatte und erzwingen Sie sie beim Schreibvorgang. Prompt-Text allein kann keine Beständigkeit garantieren, sobald der Kontext des Modells komprimiert wird.