L'IA écrit votre code.
slopGrade décide : ça passe ou ça bloque.
Une GitHub Action qui bloque les PR ajoutant une fuite cross-tenant ou un XSS par echo/print PHP avant leur arrivée sur main. Les secrets et les autres injections sont signalés sans bloquer. Elle ne juge que ce que la PR ajoute : le code existant ne la fait jamais passer au rouge.
Collez un repo public. Voyez ce que les détecteurs trouvent.
Les mêmes détecteurs gratuits que l'Action GitHub fait tourner sur chaque pull request — injection SQL et de commande, XSS, SSRF, path traversal, XXE, désérialisation dangereuse, crypto faible, CORS et fuites cross-tenant — sur n'importe quel repo GitHub public, en une seconde environ.
Code public seulement · rien n'est stocké · les secrets ne sont jamais signalés · détecteurs du tier gratuit (le Firewall payant exécute le catalogue complet).
Votre équipe merge du code qu'aucun humain n'a écrit.
Les agents IA ouvrent des PR plus vite que la revue ne suit. Le slop passe, les requêtes oublient le filtre d'org, une clé fuit dans un log. Au volume, la revue humaine n'attrape plus rien — il faut un gate déterministe, pas un avis.
Une boucle : détecte → bloque → vérifie
Le gate vit dans votre CI GitHub Actions. Il lit le diff de chaque PR, décide, et écrit son verdict comme un check requis. Sur un repo privé, seule une empreinte quitte votre runner, sauf si vous activez le deep scan (heisen-slop) sur un repo payant. Sur un repo public, le deep scan tourne par défaut.
Copiez le snippet
Un workflow GitHub Actions collé dans votre repo. OIDC sans clé — rien à stocker.
- uses: maxor-tech/slopgrade-firewall@f18a953e15e84ff0f9e457da4a056ddea3548d46 # v0.13.6La PR ouvre
Le gate lit le diff côté runner et le vérifie contre les fuites cross-tenant et les classes de sécurité de votre plan.
$ node isolation-gate.mjs --print-payloadVerdict passe / bloque
Un check requis, vrai ou faux. Rouge → la fusion est désactivée par le ruleset de branche.
slop · blocked → merge disabledLe correctif repasse vert
L'agent corrige, re-pousse, le gate re-tourne. Vert → la PR redevient mergeable.
slop · pass → ready to merge125 classes détectées. 5 couches. Le blocage exige des preuves en aveugle.
La fuite cross-tenant — une requête sans filtre d'organisation — est notre classe phare. Une classe, ou une forme précise au sein de cette classe, ne bloque qu'après avoir atteint au moins 80 % de précision sur au moins 10 cas de blocage annotés en aveugle, avec des preuves publiques. D'ici là, elle signale sans bloquer. Vous activez les règles ; vous ne les écrivez pas.
Isolation tenant
Chaque requête org-scoped doit porter son filtre. La fuite cross-tenant #1 en prod, attrapée avant merge.
Secrets et injections
Clés en dur, SQL/commande/XXE/SSRF, désérialisation — le gros du catalogue.
Crypto et authentification
Algorithmes faibles, clés courtes, padding RSA, CORS reflété, contrôle d'accès manquant.
Deep scan
Flux de données inter-fichiers (heisen-slop) sur 6 langages, par défaut sur les repos publics, sur activation sur les repos privés payants — informatif par défaut, bloquant seulement si vous le choisissez.
Empreinte par défaut
Sur un repo privé, par défaut, seule une empreinte structurelle — chemins de fichiers, {file, line, kind} et les noms de tables et de colonnes dont le contrôle cross-tenant a besoin est envoyée — jamais le contenu des fichiers. Le deep scan (heisen-slop), actif par défaut sur les repos publics et opt-in sur les repos privés, envoie au plus 80 fichiers qui portent un sink, analysés en mémoire puis jetés. L'offre Entreprise peut faire tourner ce moteur sur votre réseau.
Chaque classe, avec le code qu'elle détecte.
Un échantillon des 125 classes — par catégorie, chacune avec le motif exact qu'elle attrape avant qu'il n'atteigne main. La détection tourne sur votre runner ; voici ce qu'elle cherche.
✗ db.from('invoices').select('*')✗ create view billing as select * … security definer✗ User.create(req.body) // is_admin passes through✗ db.query('select * from u where id = ' + req.params.id)✗ exec('convert ' + req.query.file)✗ fetch(req.query.url) // hits 169.254.169.254✗ libxml.parseXml(body, { noent: true })✗ jwt.verify(t, key, { algorithms: ['none'] })✗ const stripe = 'sk_live_4eC39Hq…'✗ app.use(csrf({ ignoreMethods: ['POST'] }))✗ crypto.createHash('md5').update(password)✗ new https.Agent({ rejectUnauthorized: false })✗ createCipheriv('aes-256-cbc', key, ZERO_IV)✗ uses: some/action@main # not a SHA✗ "lodahs": "*" // typo'd name, floating range✗ cidr_blocks = ["0.0.0.0/0"] # port 22✗ FROM node:latest✗ DEBUG = TruePas un scanner de plus. Un gate clé-en-main.
CodeQL et Semgrep sont des moteurs que vous configurez et ajustez. La revue humaine ne suit pas le rythme des PR d'agents. slopGrade propose des règles prêtes à activer — 125 classes détectées, dont 3 bloquent sur les repos payants après avoir franchi le seuil de preuve publique en aveugle. Toutes les autres signalent sans bloquer.
Déterministe par conception · client open-source, auditable · on le fait tourner sur slopGrade lui-même avant qu'il ne t'arrive.
Advisory gratuit pour toujours. Solo 49 $/mois pour vous, Team 299 $/mois pour votre équipe — les deux bloquent le merge et prouvent la faille.
Un prix par plan, jamais par tête. Solo : 10 repos privés, une personne. Team : 50 repos privés, utilisateurs illimités. Les deux bloquent sur 3 classes, et le Deep Scan suit la valeur de la requête jusqu'au sink. Les agents, les clés API et les clients MCP ne comptent jamais comme sièges.
Le gate reconnaît la faille. Deep Scan prouve le chemin.
Il suit une valeur de la requête jusqu'au sink — variables, appels, fichiers importés — et ne signale que les flux qu'il prouve, chaque étape avec son file:line.
- Flux prouvés
- source → sink, étape par étape, sur chaque PR de vos repos Team.
- Mode librairie
- les paramètres publics comme sources — des candidats à trier, jamais un verdict.
- Oracle de preuve
- /api/verify : soumettez l'alerte de n'importe quel outil, recevez une preuve rejouable ou une abstention honnête.
Réponses directes.
QQu'est-ce que slopGrade ?
Un gate CI déterministe pour le code écrit par l'IA : sur chaque pull request GitHub, il décide passe ou bloque avant que le code n'atteigne main. Pas de note, pas de débat.
QLe code quitte-t-il mon CI ?
Pas par défaut. Le client lit vos fichiers sur votre runner GitHub Actions et n'envoie qu'une empreinte structurelle — chemins de fichiers, {file, line, kind} et les noms de tables et de colonnes dont le contrôle cross-tenant a besoin, pour la classification. --print-payload montre les octets exacts. Les exceptions sont le Deep Scan (heisen-slop) sur un repo public, actif par défaut, et le Deep Scan opt-in sur un repo privé payant : 80 fichiers porteurs d'un sink au plus, analysés en mémoire puis jetés, informatif sauf si vous réglez deep-scan-block. Un repo privé gratuit n'envoie jamais de source.
QCombien ça coûte ?
L'advisory (scan sans blocage) est gratuit pour toujours sur tous vos repos, et le blocage est gratuit sur les repos publics et un repo privé. Team coûte 299 $ par mois — repos privés inclus : 50, Deep Scan sur chaque PR, utilisateurs illimités — puis 4 $ par repo jusqu'à 100 et 3 $ au-delà. Enterprise est un contrat négocié.
QY a-t-il un essai gratuit ?
Oui : Team est gratuit pendant 14 jours sur votre premier plan Team, sans carte de crédit. Sans carte au jour 14, le compte est mis en pause — repos, réglages et historique conservés — jusqu'au paiement.
QQu'est-ce que le firewall détecte ?
Les fuites cross-tenant et les XSS par echo/print PHP bloquent sur tous les repos publics et 1 repo privé. Pour les XSS, seul un echo/print PHP affichant sans échappement des données de requête ($_GET / $_POST / $_REQUEST / $_COOKIE) bloque. Les 22 packs de détecteurs open source continuent d’analyser tous les repos ; les autres constats sont signalés sans bloquer. Les repos payants détectent 125 classes. 3 classes bloquent sur les repos payants : les fuites cross-tenant, les XSS par echo/print PHP affichant sans échappement des données de requête, et les comparaisons de HMAC ou de signature avec == si une requête peut atteindre la comparaison. Les autres formes de XSS (sinks DOM, XSS réfléchi dans Node, analyse de taint) et toutes les autres classes sont signalées sans bloquer. Le blocage exige au moins 80 % de précision sur au moins 10 cas de blocage annotés en aveugle, avec des preuves publiques mesurées par classe ou par forme.
Mettez un gate entre l'IA et votre branche main.
Créez un compte, collez le snippet, protégez votre premier repo en deux minutes. Team : 14 jours gratuits, sans carte.