Empêchez une clé live d'atteindre l'historique git.
L'IA colle une vraie clé « juste pour tester » et elle atterrit dans un commit — où elle vit pour toujours, même après avoir supprimé la ligne. SlopGrade attrape le secret en dur dans la PR, avant le merge, et n'émet que sa localisation — jamais la valeur.
Une clé de production, commitée dans le code.
Le secret est maintenant dans le repo et son historique git — une rotation est le seul vrai correctif, et chaque clone en a une copie. Le gate l'arrête à la PR pour qu'aucune rotation ne soit jamais nécessaire.
Ce que l'IA a livré
Ce qui quitte votre runner
Même une détection de secret n'émet que {file, line, kind} — jamais la valeur du secret. Auditez-le avec --print-payload.
Détecte → adapte → vérifie. Par défaut, rien d'autre ne sort.
Dans votre runner, sur le diff
Le client open source parcourt la pull request et signale le motif en local — dataflow intra-fonction. Par défaut, aucun code ne quitte la machine.
Verdict serveur + gate
L'empreinte structurelle est classée côté serveur. Un hit dur bloque le check sur un repo privé payant ; les repos publics sont gatés gratuitement ; le paywall échoue en mode ouvert.
Posté inline, re-vérifié au push
Le constat est posté sur sa ligne exacte. Pour les quelques classes qui ont une réécriture sûre et déterministe (vérification TLS coupée, debug actif, yaml.load…), un correctif est généré ET vérifié dans votre runner ; sinon vous corrigez, et le push suivant re-vérifie.
La valeur du secret est-elle envoyée quelque part ?
Non. Même sur une détection, seuls la localisation et le type sont émis — jamais la valeur. Lancez --print-payload pour voir les octets exacts. Le code ne sort que via le deep scan opt-in (heisen-slop), sur un repo payant.
Et les clés de test / placeholder ?
Les formes reconnues de secrets live (préfixes fournisseur, tokens à haute entropie) sont signalées ; les placeholders évidents et les clés de test sont calibrés hors. Elle ne bloque que ce que la pull request introduit ; sur 52 089 pull requests open source ordinaires, la porte statique en a bloqué 59 (0,11 %).