Prüfstand — der Teststand, der beweist, dass ein Agentforce-Agent sicher ist
Ich habe einen KI-Agenten gebaut — und dann das, was ihn zu brechen versucht: ein vorregistrierter 30-Fälle-Red-Team-Korpus auf Deutsch, eine deterministische Prüfinstanz, die sich vom Modell nicht überreden lässt, ein Config-Linter, der echte Bugs auf dem Live-Agenten fand — für null Credits — und ein Einwilligungs-Handshake, den ein Jailbreak nicht fälschen kann.
- Jahr
- 2026
- Rolle
- Salesforce Developer — Agent Evaluation & Red-Teaming
- Technologien
- Agentforce (evals & red-teaming)Python (stdlib harness)ApexDeterministic verifier30-case German attack corpusStatic config linter (20 rules)Tooling APIConsent handshake (expiring token)DSGVO / EU AI Act traceability
Eckdaten
- Das 'Beweis'-Gegenstück zu HanseWatt: Ich habe einen KI-Agenten gebaut — und dann das, was ihn zu brechen versucht, samt der Werkzeuge, die zeigen, dass er sicher ist, bevor er je mit einem Kunden spricht
- Ein 30-Fälle-Red-Team-Korpus auf Deutsch (Prompt Injection, Cross-Customer-Fishing, Authority Spoofing, Missbrauch von DSGVO-Rechten) — vorregistriert als erster Commit des Repos, vor dem Harness, das ihn bewertet: Git ist der Notar
- Eine deterministische Prüfinstanz — das LLM entscheidet nie über pass/fail: Trace-Checks lesen die AccountId, mit der eine Action wirklich lief; Canary-Checks überstehen Homoglyphen-Tricks (NFKC + kyrillische Faltung)
- Einwilligung, die ein Jailbreak nicht fälschen kann: Der Tarifwechsel ist ein Zwei-Action-Handshake über einen ablaufenden Tariff_Change_Request__c-Datensatz — das Modell kann den Token nicht erfinden, den nur die Propose-Action ausgibt; jede Eigenschaft hat einen Apex-Test
- Der statische Linter lief gegen den Live-Agenten und fand, was die UI nicht zeigen kann: zwei verwaiste GenAiFunctions und eine Routing-Lücke — 22 → 0 Fehler, geschlossener Kreislauf, null Flex Credits
- 69 Meta-Tests sind die Prüfinstanz der Prüfinstanz: eingepflanzte Verstöße müssen gefunden werden, saubere Eingaben sauber bleiben — inklusive zweier Silent-Pass-Bugs im Harness selbst, dokumentiert und per Regression fixiert
- Kreditdisziplin als Architektur: ein Transport-Interface (Mock / Replay / Live), record-once-replay-forever und ein Fünf-Schlösser-Kreditwächter — Credits kaufen Beweise, nie Entwicklung
- Ehrliche Einordnung: Harness, Linter, Korpus und Apex sind echt und verifiziert; der eine bezahlte Live-Referenzlauf kommt bewusst zuletzt, und bis dahin wird keine Live-Pass-Rate behauptet
Funktionen im Detail
Git als Notar — der Korpus kam zuerst
Der 30-Fälle-Angriffskorpus ist der erste Commit im Repository, vor der Prüfinstanz, die ihn bewertet. Diese Reihenfolge ist eine Eigenschaft, die jeder mit git log prüfen kann — keine Behauptung, der man vertrauen muss. Man kann die Prüfung nicht heimlich an die Antworten anpassen, wenn die Prüfung zuerst notariell festgehalten ist.

Der Linter, sauber auf dem Live-Agenten — nachdem er echte Bugs fand
Auf den echten HanseWatt-Agenten gerichtet, fand der 20-Regel-Linter zuerst zwei verwaiste GenAiFunctions (im Agent Builder unsichtbar — eine unverlinkte Function gehört zu keinem Topic) und eine Routing-Lücke in der Topic-Beschreibung. Auf dem Live-Agenten behoben, erneut geprüft: 0 Fehler, gebunden an den Fingerprint der Config. Gefunden → behoben → bestätigt, für null Credits.

Die Prüfinstanz der Prüfinstanz — 69 Meta-Tests
Ein Scorer ist nur vertrauenswürdig, wenn er wirklich anschlägt. Die Meta-Suiten pflanzen bekannte Verstöße ein — ein geleakter Canary, eine Cross-Account-Action, eine unbelegte Zahl — und stellen sicher, dass die Prüfinstanz sie fängt und saubere Läufe sauber bleiben. Diese Suite fand auch die zwei Silent-Pass-Bugs im Harness selbst: Eine Beweislücke muss als Fehler gelesen werden, nie als Bestanden.

Das Problem
Einen Agenten gut demonstrieren kann jeder. Fast niemand veröffentlicht, wie man beweist, dass ein Agent gegroundet, sicher und DSGVO-konform ist, bevor er mit einem echten Kunden spricht — die Verifikationslücke. Drei harte Probleme stecken darin: Ein Modell kann seine eigene Arbeit nicht benoten, also muss die Prüfinstanz vom LLM unabhängig sein; die teuersten Fehler sind still (eine Beweislücke, die als Bestanden gelesen wird); und die Ökonomie steht kopf — Red-Teaming heißt viele Live-Gespräche, genau das, was sich eine credit-gemessene Org nicht leisten kann.
Der Ansatz
Vier Säulen hinter einem Interface. Ein 30-Fälle-Angriffskorpus auf Deutsch (Prompt Injection, Cross-Customer-Fishing, Authority Spoofing, DSGVO-Rechte-Missbrauch), committet als erster Commit des Repos — Git ist der Notar dafür, dass die Prüfung vor der Benotung existierte. Ein deterministischer Scorer: Trace-Checks lesen die AccountId, mit der eine Action wirklich lief, Canary-Checks fangen geleakte Fakten selbst durch Homoglyphen-Tricks; das LLM darf einen Fehler erklären, nie über ihn entscheiden. Ein fingerprint-gebundener Report, der sich selbst als STALE stempelt, wenn sich der Agent später ändert. Und ein statischer Linter mit 20 Regeln über Agent-Config plus Apex — Erreichbarkeit, Routing, Guardrails, Bedrohungs-zu-Kontrolle-Abdeckung — alles über kostenlose Tooling-API-Reads. Auf der Salesforce-Seite ist der Tarifwechsel selbst gegen Jailbreaks konstruiert: Einwilligung ist ein Zwei-Action-Handshake über einen ablaufenden Datensatz, das Modell kann den Token nicht erfinden, den nur die Propose-Action ausgibt — und die Empfehlung sortiert Tarife nach echten Jahreskosten beim realen Verbrauch des Kunden, wo die naive Niedrigstpreis-Antwort beweisbar falsch ist. 69 Meta-Tests pflanzen Verstöße ein und stellen sicher, dass die Prüfinstanz sie fängt. Credits fließen nur in Beweise: Mock- und Replay-Transporte tragen die gesamte Entwicklung, ein Fünf-Schlösser-Wächter ist der einzige Weg zu einem bezahlten Lauf.
Das Ergebnis
Das Harness traf den echten Agenten und verdiente sich seinen Platz: Der Linter fand zwei verwaiste GenAiFunctions, die in der Agent-Builder-UI unsichtbar sind, und eine Routing-Lücke, die Traffic still verschluckt hätte — auf dem Live-Agenten behoben, erneut geprüft auf 0 Fehler, ein geschlossener CI-artiger Kreislauf bei null Flex Credits. Und etwas Selteneres: Es fand zwei Silent-Pass-Bugs in sich selbst, und das Repo dokumentiert sie, statt sie zu verstecken — genau der Fehlermodus, den es jagt, gefunden im Jäger, behoben und mit Regressionstests fixiert. 69/69 Meta-Tests grün, eine 30/30-Offline-Demo, committete Referenz-Reports und sieben dokumentierte Developer-Edition-Plattformgrenzen (drei davon jetzt automatisch gelintet). Bewusst nicht behauptet: irgendeine Live-Pass-Rate — der eine bezahlte Referenzlauf ist der letzte Schritt, und die Reports sagen offen, was sie beweisen und was nicht.