Injection de prompt
Un utilisateur peut pousser le modèle à révéler les règles internes ou à contourner des contraintes qui n'étaient imposées que par le prompt.
Ici, le zero-trust est concret : on filtre d'abord le message, on vérifie qui parle, on limite le contexte donné au modèle, on borne les outils et les skills, puis on recontrôle la réponse avant envoi.
du message à la réponse
Si toute la sécurité tient dans des instructions au modèle, il finira un jour par trop voir, trop faire ou trop dire. Il faut donc des barrières appliquées par le code.
Un utilisateur peut pousser le modèle à révéler les règles internes ou à contourner des contraintes qui n'étaient imposées que par le prompt.
Les rôles bruts ne suffisent pas. Un admin dans un groupe non fiable ne doit pas conserver un accès admin en aval.
Si le modèle voit tout le catalogue d'outils avant filtrage, la simple découverte des capacités devient déjà une fuite.
Même un prompt bien encadré peut encore produire des détails sensibles si la sortie finale n'est ni vérifiée ni bloquée.
Chaque couche a un rôle simple. L'une bloque l'entrée, l'autre décide des droits, une autre limite le contexte, puis on borne les capacités et on vérifie la sortie.
Ce qui a le droit d'entrer
Avant même de parler du modèle, on décide si le message a le droit d'entrer dans le pipeline : utilisateur banni, groupe non autorisé, workflow exclusif ou flux à détourner.
Qui parle et avec quels droits
On résout l'identité réelle, le type de chat, le niveau d'accès, la confiance du groupe, l'onboarding, les bans et les quotas journaliers.
Ce que le modèle a le droit de voir
On prépare un contexte limité à la conversation courante : mémoire autorisée, commandes utiles, contexte local ou base, sans exposer les fichiers ou informations internes non autorisés.
Ce que le modèle a le droit d'utiliser
On limite les outils, les skills et même certaines lectures de fichiers selon le niveau d'accès. Le modèle n'a pas accès au catalogue complet par défaut.
Ce qui a le droit de sortir
La réponse du modèle est traitée comme non fiable. On détecte les fuites d'architecture, de secrets ou de données sensibles avant l'envoi final.
Le but n'est pas de dire “faites confiance au prompt”. Le but est d'avoir des règles simples, observables et testables dans le code.
L'autorisation en aval suit le role runtime demote, pas le role brut capture a l'entree.
Les probes d'architecture sont detectes et bloques avant que le modele ne recoive le texte.
La sortie generee est encore verifiee pour les fuites d'architecture, secrets, domaines, fichiers et identifiants sensibles.
Outils, skills et lectures de fichiers sont autorises par appartenance exacte uniquement.
Les groupes non enregistres ne recoivent aucune reponse, ce qui evite de divulguer des capacites ou politiques.
Les quotas sont consommes cote serveur et les workflows deterministes peuvent couper le modele completement.
Le repo inclut des scenarios de verification, un schema de reference et des regles de workflow lock pour qu'une implementation puisse etre verifiee dans un systeme reel.
Resultat attendu: action = cancel, aucune reponse visible.
Resultat attendu: forced response, le modele ne voit jamais la requete.
Resultat attendu: effectiveRole = moderator, hasFullAccess = false.
Resultat attendu: reponse bloquee et incident journalise avec snippets rediges.
Resultat attendu: l'utilisateur initiateur est route vers le handler pendant que les autres continuent sur le flux IA normal.
Users, groups, bans, quotas, memory et audit logs sont traites comme des primitives de securite, pas comme du simple stockage annexe.
CREATE TABLE groups (
id BIGSERIAL PRIMARY KEY,
platform_channel_id BIGINT UNIQUE NOT NULL,
trust_config JSONB DEFAULT '{}'::jsonb
);
CREATE TABLE quotas (
platform_user_id BIGINT NOT NULL,
platform_channel_id BIGINT NOT NULL,
date DATE NOT NULL DEFAULT CURRENT_DATE,
usage_count INT DEFAULT 0,
PRIMARY KEY (platform_user_id, platform_channel_id, date)
);
CREATE OR REPLACE FUNCTION consume_quota(...) RETURNS INT;
Les workflows multi-etapes comme les approvals, creations de commandes ou collectes structurees peuvent acquerir un lock scope pour empecher toute improvisation du modele.
DMs, canaux, callbacks, skills et outils sont mappes a chaque stack hote, mais les invariants restent fixes.
Mappe naturellement chats prives, groupes, callback queries, getChatMember et onboarding par approbation de groupe.
Les guild channels, threads, interactions et permissions membre reproduisent le meme modele de confiance, de lock et d'allowlists.
Les payloads interactifs deviennent des actions structurees, tandis que channels et DMs conservent le meme least-privilege behavior.
Des room IDs, ACL lookups et modules de capacites scopes peuvent rejouer exactement la meme chaine en 5 couches dans une web app.
Le repository package l'architecture dans une forme reutilisable: overview lisible, contrat normatif, regles d'adaptation, scenarios de verification et schema de reference.
La narration courte: pourquoi le design existe, quelles sont les cinq couches et ce que le contrat promet.
L'ordre exact des couches, les action values, les data contracts, les regles fail-safe et la semantique des workflow locks.
Des scenarios concrets qui doivent passer avant de revendiquer une implementation fidele.
Des réponses courtes et concrètes, puis le contrat complet pour aller plus loin.
Parce que le prompt influence le modele, mais n'impose ni l'autorisation runtime, ni l'exposition des outils, ni la validation de sortie, ni l'execution least-privilege.
Parce que l'identite, le filtrage des capacites, le scope des comportements, l'assemblage du contexte et la validation de sortie resoudent des problemes differents et doivent echouer independamment.
Oui. Les regles d'adaptation mappent DMs, channels, callbacks, outils et skills vers Discord, Slack, web apps et autres runtimes sans affaiblir les invariants.
Un admin dans un groupe non fiable est traite comme moderator en aval, ce qui evite qu'un privilege prive ou de confiance fuite dans un contexte partage ou inconnu.
Le repo fournit un contrat d'implementation solide et une matrice de tests. Le niveau production depend encore de la qualite d'implementation, de validation et d'operation du systeme hote.