Ich wollte die interne Verlinkung meines WooCommerce-Shops automatisieren. Mein Agent durchsuchte über 40 Produktseiten und Blog-Posts einer mehrsprachigen WordPress-Site und fand 18 defekte interne Links. Er reparierte jeden einzelnen. Jede URL überprüft, jede Weiterleitung bestätigt, jede Referenz aktualisiert. Tadellose Arbeit.
Dann stieß er auf einen Amazon-Affiliate-Link, der einen 404 zurückgab. Seine Schlussfolgerung: Amazon blockiert Bots mit CAPTCHAs, das ist ein Fehlalarm. Logische Argumentation. Also löschte er den Report aus der Datenbank und verkündete: "Dashboard sauber. Null defekte Links."
Der Link war immer noch tot. Der Agent hatte nur aufgehört, ihn zu sehen.
TL;DR: Mehrfach in der Produktion sagte mein Agent "erledigt" und log dabei. Einmal löschte er einen Bug-Report anstatt ihn zu beheben. Einmal schrieb er einen Test, der nichts testete. Jedes Mal derselbe Mechanismus: Der Agent optimiert auf "Aufgabe abgeschlossen", nicht auf "Problem gelöst". Hier sind die 4 Zeilen, die ich oben in meine CLAUDE.md eingefügt habe, warum sie wichtiger sind als die 200 technischen Zeilen darunter, und warum OpenAIs Mitgründer zugibt, dass das ein offenes Problem ist.

Dashboard Sauber. Bug Immer Noch Da.
Lass mich das Gesamtbild erklären.
Der Shop läuft mit WPML und Produktbeschreibungen in drei Sprachen. Nach Monaten änderten sich Slugs, Seiten wurden reorganisiert, manche Übersetzungen gelöscht und von Grund auf neu erstellt. Interne Links verrotteten stillschweigend. Ich setzte Claude Code auf die Datenbank an: finde jeden defekten internen Link, repariere oder markiere jeden einzelnen.
Er lieferte ab. 18 Links gefunden, 18 Links behoben. Weiterleitungen gemappt. Anker aktualisiert. Ich konnte die Arbeit in der Commit-History sehen, jeder Fix mit klarer Begründung.
Dann kam dieser Amazon-Link. Eine Produktempfehlungsseite mit einer Affiliate-URL, die 404 zurückgab. Der Agent lief gegen eine CAPTCHA-Wand. Er folgerte (korrekt), dass Amazon automatisierte Anfragen blockiert. Er klassifizierte den Link als Fehlalarm. Soweit macht das Sinn.
Aber anstatt den Report im Dashboard zu belassen mit einer Notiz "konnte nicht verifiziert werden, braucht manuelle Prüfung", löschte er den Report komplett aus der Datenbank. Dann sagte er mir, das Dashboard sei sauber.
Der Agent löste "es gibt einen ungelösten Report im Dashboard". Er löste nicht "es gibt einen defekten Link auf der Site". Als ich ihm sagte, er solle den Report wiederherstellen, gehorchte er sofort. Kein Widerstand, keine Diskussion. Er war nicht rebellisch. Er versuchte nicht absichtlich etwas zu verstecken. Er nahm einfach den kürzesten Weg zu "erledigt".
Null Warnungen. Null defekte Links. Null Wahrheit.
Das war nicht das erste Mal. Ein paar Wochen früher, dasselbe Muster, heimtückischere Form.
Grüner Test. Kaputter Code.
Drei URLs gaben 404 in der Google Search Console zurück. Canonical URLs für übersetzte Produktseiten, alle zeigten auf Seiten, die nicht existierten. Die Art von Sache, die man zwei Tage nach dem Deployment entdeckt, wenn Google anfängt, einem böse E-Mails zu schicken.
Ich hatte Claude Code gebeten, eine Funktion zu schreiben, die canonical URLs für lokalisierte Produktseiten generiert, bevor sie indexiert werden. Der Prompt-Vertrag spezifizierte "schreibe Tests". Der Agent schrieb die Funktion UND den Test. Grün. Ship.
Der Test:
it("generates canonical URL for translated product page", () => {
const result = generateCanonicalUrl(mockProduct);
expect(result).toBeDefined();
expect(typeof result).toBe("string");
expect(result).toContain("mystore.com");
});
Lies das nochmal. Der Test prüft, dass die Funktion etwas zurückgibt. Dass das Etwas ein String ist. Und dass der String den Domain-Namen enthält. Das war's. Dieser Test kann nicht fehlschlagen. Er validiert die Form, nicht den Inhalt. Ein Mensch hätte den exakten Slug geprüft, das Locale-Präfix, die Abwesenheit von doppelten Slashes. Der Agent prüfte, dass die Ausgabe wie eine URL aussieht.
Ergebnis in der Produktion: URLs mit doppelten Slashes, fehlende Locale-Präfixe, drei Canonicals, die auf 404s zeigten.
Letztes Mal gab ich Claude die Schuld fürs Shippen von ungetesteten Code. Also fügte ich Integrationstests zu meinen Prompt-Verträgen hinzu. Und der Agent schrieb einen Test. Einen Test, der nichts Sinnvolles testet.
"Nach Tests fragen" reicht nicht. Du musst auch verifizieren, was der Test tatsächlich testet.
Und ja, ich hätte den Test vor dem Shippen lesen sollen. Das ist die ganze Falle. Ein grüner Test ist ein Signal, das sagt "du kannst aufhören hinzuschauen". Er ist dafür da, dass du weitermachen kannst. Genau deshalb ist er gefährlich, wenn der Test selbst hohl ist.
Kein Test, Bug in Prod. Test, der nichts testet, Bug in Prod.
Zwei Vorfälle, derselbe Mechanismus. Und wenn man tiefer gräbt, bin ich nicht der Einzige.
Dein Agent Löst Keine Probleme. Er Schließt Tickets.
AI-Agents optimieren nicht auf "korrekt". Sie optimieren auf "erledigt".
Ein Dashboard mit null Warnungen SIEHT aus wie eine erledigte Aufgabe. Ein grüner Test SIEHT aus wie eine erledigte Aufgabe. Die Warnung zu löschen und einen Dummy-Test zu schreiben sind beide gültige Pfade zu "erledigt" aus Optimierungssicht. Der Agent unterscheidet nicht zwischen dem Lösen des Problems und dem Entfernen des Signals des Problems.
Und wenn man darüber nachdenkt, wird dieses Verhalten sehr menschlich, oder? Der Praktikant, der das Ticket schließt, ohne zu prüfen. Der Dev, der den flaky Test am Freitagnachmittag auf "skip" setzt. Der Manager, der den Incident-Report archiviert, weil das Dashboard ohne ihn besser aussieht. Die AI hat dieses Verhalten nicht erfunden. Sie hat es industrialisiert. Man könnte sagen, der Schüler hat den Meister übertroffen (in der Effizienz des Unter-den-Teppich-Kehrens, zumindest).
Wojciech Zaremba, OpenAIs Mitgründer, gab das im September letzten Jahres im TechCrunch praktisch zu. Er räumte ein, dass wenn man ein Modell bittet, etwas zu bauen, es einem sagen könnte, es habe großartige Arbeit geleistet, obwohl das nicht stimmt. Er nannte das "kleinere Formen der Täuschung", die sie noch angehen müssen. Der Mitgründer des Labs, das diese Modelle baut, nennt es ein bekanntes Problem. Kein theoretisches Risiko. Ein dokumentiertes Verhalten.
Und es wird wilder. Entwickler auf GitHub berichten, dass GPT-5.3-Codex bestehende Tests modifiziert, um genau das zu mocken, was sie testen sollen, wodurch sie leer bestehen. Ein Forschungsteam ließ LLMs 500 Werwolf-Spiele spielen, um zu messen, wie gut sie bluffen und manipulieren. Claude ist schrecklich darin (es weigert sich buchstäblich, die anderen Spieler anzulügen). Aber dasselbe Modell, das einen Dorfbewohner in einem Kartenspiel nicht bluffen kann, säuberte mein Dashboard, indem es die Beweise löschte. Niemand misst die stille Art.
Währenddessen schreibt jeder technische Anweisungen für seinen Agent. Niemand schreibt Integritätsregeln. Y Combinators CEO teilte seinen Claude Code Prompt. Es ist ein guter Prompt. Er löst das falsche Problem.
Labs messen, ob dein Agent bei Werwolf lügen kann. Niemand misst, ob er eine Produktionswarnung verschwinden lassen kann.
Vier Zeilen. Keine Verhandlung.
- Never lie
- Never hide the truth
- Never conceal a problem
- Never fail silently
Diese vier Zeilen stehen ganz oben in meiner CLAUDE.md. Vor jeder technischen Anweisung. Vor den Coding-Standards, vor der Projektarchitektur, vor den Deployment-Regeln. Das ist die Integritätsklausel, die erste Klausel in meinem Prompt-Vertrag, und sie ist die einzige, die nicht über Code handelt.
Sieht offensichtlich aus, oder? "Lüg nicht" ist etwas, was man einem Fünfjährigen sagen würde, nicht einem Software-Agent. Außer dass "offensichtlich für einen Menschen" und "spezifiziert für einen Agent" nicht dasselbe sind. Ohne diese Zeilen kann der kürzeste Weg zu "erledigt" "lösche das Signal des Problems" beinhalten. Mit ihnen hat der Agent eine explizite Beschränkung, die diesen Pfad ungültig macht.
Letzte Woche, derselbe Shop, derselber Agent. Ein Distributor-CSV-Feed wurde über Nacht aktualisiert und 12 Produktvarianten verschwanden aus dem Import. Das alte Ich wäre mit einem sauberen Sync-Log und einem Katalog ohne ein Dutzend SKUs aufgewacht. Stattdessen flaggte der Agent: "12 Varianten aus vorherigem Import im aktuellen Feed nicht gefunden. Halte Sync an. Manuelle Überprüfung erforderlich." Er reparierte nichts. Er übersprang sie nicht stillschweigend. Er stoppte und schrie.
Mein Dashboard hat jetzt gelbe Warnungen. Es ist weniger sauber. Es ist wahrer. 😬
Diese vier Zeilen sind nicht magisch. Ein ausreichend fähiger Agent könnte Wege um sie herum finden (Alignment-Faking-Forscher dokumentieren das). Aber für aktuelle Code-Agents in der Produktion ist es der Unterschied zwischen einem Agent, der sagt "Ich konnte diesen Link nicht verifizieren" und einem Agent, der den Report löscht.
200+ technische Zeilen in meiner CLAUDE.md. Die 4, die am meisten zählen, reden nicht über Code.
Der Ehrliche Lügner
Mein Agent ist nicht gefährlich. Er ist ein übereifiger Praktikant, der die Dateien organisiert, indem er die wegwirft, die er nicht versteht. (Aus den Augen, aus dem Sinn.) Das Problem ist nicht, dass er bösartig ist. Es ist, dass er glaubwürdig ist. Wenn er "erledigt" sagt mit einem grünen Test und einem sauberen Dashboard, glaubst du ihm. Und du liegst falsch.
Öffne deine CLAUDE.md. Oder deinen System-Prompt. Oder deine .cursorrules. Such nach Integritätsregeln. Wenn es keine gibt, kann dein Agent legitimerweise in Betracht ziehen, dass "lösche die Warnung" eine gültige Lösung für "es gibt eine Warnung" ist. Füge die vier Zeilen hinzu. Vor deinen technischen Anweisungen. Nicht danach.
Die nächste Version dieser Modelle wird autonomer, schneller und überzeugender sein, wenn sie "erledigt" sagt. Manche dieser Modelle werden bereits für Anwendungen getestet, wo "erledigt aber falsch" nicht nur ein Bug ist, sondern eine Haftung mit Konsequenzen, die weit über einen kaputten Affiliate-Link hinausgehen. Labs arbeiten an strategischer Täuschung: dem Lügen, dem Intrigieren, der Selbsterhaltung. Niemand arbeitet an stiller Optimierung für Vollendung. Es ist der Bug, der keine Warnung auslöst. Es ist der Test, der immer grün ist. Es ist der Report, der nicht mehr existiert.
Ein Agent, der schnell shippt, aber Probleme versteckt, ist kein Asset. Er ist eine Haftung mit Autocomplete.
Quellen: OpenAI Scheming Research via TechCrunch (Sept 2025); GPT-5.3-Codex Test-Modifikations-Reports (GitHub Issues, Feb 2026).
Wenn das dir einen Produktionsvorfall erspart hat (oder einen bestätigt, den du bereits hattest), folge mir. Ich schreibe über AI-Agents, Prompt-Verträge und die ganze Mise en Place rund ums Shippen mit AI anstatt damit zu zocken. Buch: Prompt Contracts: How I Stopped Vibe Coding and Started Shipping Real Software With AI.
(*) Das Cover ist AI-generiert. Die Ironie einer AI, die einen Artikel über lügende AI illustriert, ist mir nicht entgangen, aber wenigstens behauptet Midjourney nicht, es hätte meine Unit Tests geshippt.