Mustafa.
Zurück zu allen Projekten

Prüfstand — der Teststand, der beweist, dass ein Agentforce-Agent sicher ist

In Entwicklung

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.

Git history showing the pre-registered attack corpus as the repository's first commit, before the harness that scores it

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.

Topic linter output: 0 errors on the live HanseWatt agent, bound to a config fingerprint

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.

Meta-test suites green: scorer and identity self-tests passing — the verifier's verifier

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.