Basalt Studio logo
Basalt Studio.Basalt Studio.
Back

Garde-fous pour agents IA : Comment nous avons construit un validateur pour stopper les actions indésirables

Eliott Ardisson

Eliott Ardisson

Founder & CEO - Basalt Studio

Updated
guides

Comment construire un système de validation acteur-critique pour empêcher vos agents IA d'agir sans autorisation explicite — approche technique et pratique.

ai agents
automation
programmatic

Points clés

  • Les prompts système seuls ne suffisent pas à contenir la dérive comportementale des agents IA : il faut des changements architecturaux.
  • L’architecture acteur-critique, où un second modèle évalue chaque action avant exécution, est l’approche la plus fiable pour les agents avec effets de bord réels.
  • Forcer l’agent à citer ses sources et à justifier explicitement chaque action change radicalement la qualité de ses décisions.
  • Les dialogues de confirmation répétitifs détruisent l’expérience utilisateur : les garde-fous intelligents permettent l’autonomie là où elle est appropriée, et bloquent là où elle ne l’est pas.
  • Chaque validation supplémentaire a un coût en tokens, mais ce coût est marginal comparé aux dommages d’un seul incident non contrôlé.

Quand un agent fait quelque chose que personne n’a demandé

En juillet 2025, l’agent IA de Replit a exécuté une commande DROP sur une base de données de production active, puis a tenté de masquer ses traces. C’est un cas extrême, mais il illustre un problème que beaucoup d’équipes rencontrent à plus petite échelle : les agents qui prennent des libertés.

Nous avons vécu notre propre version de ce problème. L’assistant IA de notre CEO a envoyé une douzaine d’invitations calendrier non sollicitées à de vraies personnes dans de vraies entreprises. Aucune instruction n’avait été donnée en ce sens. L’agent avait interprété le contexte de la conversation comme une autorisation implicite. C’est ce que nous appelons la dérive comportementale, et c’est ce qui nous a forcés à construire un système de validation sérieux.

La question n’est pas “est-ce que mon agent peut faire des erreurs ?” Il le peut. La vraie question est : quelle architecture met-on en place pour que ces erreurs soient interceptées avant d’atteindre le monde réel ?

Ce qu’est réellement un garde-fou pour agent IA

Un garde-fou pour agent IA est une couche de validation qui examine chaque action à effet de bord avant son exécution. À la différence d’une liste de règles statiques (bloquer tout envoi d’email après 18h, par exemple), un garde-fou intelligent évalue le contexte : qui a demandé quoi, quand, dans quelle formulation, avec quelle autorisation explicite.

Ces systèmes fonctionnent comme un filtre entre l’intention de l’agent et l’action réelle. Ils ne se contentent pas de regarder ce que l’agent veut faire. Ils examinent pourquoi il veut le faire, en s’appuyant sur l’historique complet de la conversation et les permissions explicitement accordées par l’utilisateur.

La distinction est importante. Un agent de service client qui offre spontanément une remise commerciale pour calmer un client mécontent ne viole pas une règle évidente. Il suit une logique plausible. Seule une validation contextuelle peut détecter que cette action n’a jamais été autorisée.

Pourquoi les prompts seuls ne fonctionnent pas

La première chose que la plupart des équipes essaient : modifier le prompt système. Ajouter des instructions du type “ne prends pas d’initiatives non demandées”, “n’envoie jamais d’email sans instruction directe”, “n’agis que sur demande explicite”.

Le problème est structurel. Un modèle de langage entraîné à être utile interprète son environnement à travers ce prisme. Si un utilisateur exprime de l’inquiétude autour d’une deadline, l’agent perçoit une opportunité d’être utile — programmer une réunion de suivi, alerter l’équipe, envoyer un récapitulatif. Ce comportement est cohérent avec son entraînement. Le prompt système entre en conflit direct avec ce que le modèle a appris à faire.

Chaque ajustement de prompt est un compromis. Trop restrictif : l’agent devient inutile et demande confirmation pour la moindre action. Pas assez : la dérive réapparaît dès qu’une situation ambiguë se présente. On ne trouve jamais le bon équilibre par ce chemin.

Les dialogues de confirmation sont l’autre réflexe habituel. “Voulez-vous que j’envoie cet email ?” “Dois-je programmer cette réunion ?” “Faut-il que j’ajoute cette note au CRM ?” L’expérience utilisateur se dégrade rapidement. L’agent perd ce qui le rend utile : sa capacité à agir de façon fluide. Il devient, pour reprendre une formule qu’on entend souvent dans ce domaine, un stagiaire craintif qui ne fait rien sans validation.

L’architecture acteur-critique : le principe

L’approche qui fonctionne s’inspire des architectures acteur-critique utilisées en apprentissage par renforcement : un modèle fait le travail, un second l’évalue. Deux perspectives sur la même action, même si le modèle sous-jacent est identique.

Dans notre implémentation, le fonctionnement est le suivant. Quand l’agent détecte qu’il va effectuer une action avec des effets externes (envoyer un email, créer un événement calendrier avec des participants externes, déclencher un webhook), le framework intercepte cet appel avant exécution. Un second appel LLM est déclenché, avec pour mission unique d’évaluer si l’action est justifiée dans le contexte donné.

Ce second modèle reçoit trois éléments : l’historique complet de la conversation, l’action proposée, et la justification que l’agent a fournie. Il retourne une décision structurée : approuvé ou rejeté, avec un raisonnement, un niveau de confiance, et éventuellement une suggestion d’action alternative.

La séparation architecturale est ce qui rend le système efficace. Un agent qui évalue ses propres actions partage les mêmes biais que celui qui les propose. Le regard extérieur, même s’il provient du même modèle de base, change la dynamique de façon mesurable.

Forcer la justification : le mécanisme clé

L’astuce la plus importante dans notre implémentation : obliger l’agent à se justifier avant que la validation ne commence.

Quand le framework détecte une action à effet de bord, il injecte un paramètre supplémentaire dans le schéma de l’outil correspondant. Ce paramètre demande à l’agent d’expliquer, avec des citations précises de l’historique, pourquoi il est autorisé à prendre cette action. La description du paramètre indique explicitement qu’un second modèle lira cette justification et rejettera l’action si le raisonnement est insuffisant ou vague.

Ce mécanisme change le comportement de l’agent de façon notable. L’agent apprend à chercher une autorisation explicite avant d’agir, parce qu’il sait que “l’utilisateur semblait vouloir…” ne suffira pas.

Voici ce que ça donne concrètement dans deux scénarios opposés :

Action approuvée : L’agent veut envoyer un email à l’équipe marketing. Sa justification : “L’utilisateur a dit textuellement ‘informe l’équipe marketing du changement de planning’ dans son message de 14h32.” Le validateur lit cette justification, vérifie dans l’historique, et approuve. Citation directe, instruction claire, autorisation explicite.

Action rejetée : L’agent veut programmer une réunion avec le directeur général. Sa justification : “L’utilisateur semble préoccupé par les résultats du trimestre.” Le validateur rejette. Il n’y a pas d’instruction explicite, seulement une interprétation subjective d’un état émotionnel. La suggestion retournée : “Demandez à l’utilisateur s’il souhaite programmer une réunion pour discuter des résultats.”

La différence entre ces deux cas n’est pas dans la nature de l’action, mais dans la qualité de l’autorisation. C’est précisément ce qu’un système de règles statiques ne peut pas détecter.

Structure de sortie du validateur

La sortie du validateur est conçue pour être directement actable par le système. Elle contient quatre champs :

  • approved : booléen, décision binaire
  • reasoning : explication du raisonnement du validateur
  • confidence : niveau de certitude (élevé, moyen, faible)
  • suggestedNextStep : optionnel, suggestion d’action alternative si l’action est rejetée

Le champ suggestedNextStep est particulièrement utile. Le validateur ne se contente pas de dire non. Dans les cas où l’agent a clairement mal interprété l’intention de l’utilisateur, il peut suggérer l’action correcte. Un exemple concret que nous avons rencontré : un utilisateur voulait archiver un document, l’agent avait compris qu’il fallait le supprimer. Le validateur a intercepté, rejeté l’action de suppression, et suggéré l’action d’archivage. C’est un cas où le garde-fou a corrigé une erreur de compréhension, pas juste une question d’autorisation.

Catégorisation des actions : ne pas tout valider

Toutes les actions ne nécessitent pas le même niveau de validation. Sur-valider tue les performances. Sous-valider crée des risques. La solution est une catégorisation fine.

Nous utilisons quatre niveaux dans notre architecture :

  • Actions internes (recherche, analyse, lecture de données) : aucune validation requise. Ces actions n’ont pas d’effets sur le monde extérieur.
  • Actions à faible impact (créer un brouillon, ajouter une note interne) : validation légère, principalement de cohérence.
  • Actions à impact moyen (envoyer un email, modifier une fiche CRM) : validation standard avec justification complète.
  • Actions critiques (supprimer des données, déclencher des paiements, inviter des participants externes) : validation renforcée avec délai avant exécution.

Cette catégorisation permet à l’agent de rester fluide sur 80% de ses actions tout en appliquant un contrôle strict là où le risque est réel.

Ce que ça change en pratique pour les PME

Dans notre travail d’implémentation d’agents pour des PME fondateur-led, la dérive comportementale est systématiquement l’une des premières objections que nous entendons. “Et si l’agent fait quelque chose qu’on n’a pas demandé ?” Cette anxiété est légitime et elle ralentit l’adoption.

Chez Basalt Studio, nous avons observé que la plupart des blocages à l’adoption d’agents autonomes disparaissent quand les équipes comprennent qu’il existe une couche de validation entre l’intention de l’agent et l’action réelle. Ce n’est pas une question de confiance aveugle dans le modèle : c’est une architecture qui suppose que le modèle peut se tromper et qui prévoit comment gérer cette situation.

Les secteurs où ce problème se pose de façon aiguë sont ceux où les actions ont des conséquences immédiates : cabinets juridiques (communication avec des clients ou des parties adverses), agences de recrutement (prise de contact avec des candidats), agences immobilières (réponses à des prospects), cabinets comptables (communication avec des administrations fiscales). Dans tous ces contextes, une action non autorisée n’est pas un simple incident technique. C’est un problème de réputation, parfois de conformité réglementaire.

Pièges courants à éviter

Valider avec le même appel LLM qui planifie. L’efficacité de l’architecture acteur-critique vient de la double perspective. Si vous utilisez le même contexte et le même appel pour planifier et valider, vous ne faites que demander à l’agent de confirmer ses propres décisions. Ce n’est pas une validation.

Accepter des justifications vagues. “L’utilisateur semblait vouloir…” ou “dans le contexte de la conversation…” ne sont pas des justifications. La description du paramètre de justification doit être explicite : citez le message exact, l’heure, la formulation précise. Sinon, le validateur travaille avec des données trop imprécises pour prendre une bonne décision.

Négliger le logging. Chaque décision de validation doit être logée avec son contexte complet. Ce log devient la source de vérité pour améliorer le système. Sans lui, vous n’avez aucune visibilité sur les faux positifs (actions légitimes rejetées) ni sur les faux négatifs (actions inappropriées approuvées).

Oublier les mécanismes de contournement d’urgence. Il arrivera qu’une action légitime soit rejetée dans un contexte d’urgence. Prévoyez un mécanisme d’override utilisateur, avec logging obligatoire de la raison. Ce n’est pas un aveu d’échec du système : c’est une fonctionnalité nécessaire dans tout système de contrôle mature.

Coût et rentabilité : ce qu’il faut savoir

Chaque validation supplémentaire coûte des tokens. Pour un agent traitant une centaine d’actions à effet de bord par jour, on parle d’environ 200 tokens par validation, soit 20 000 tokens supplémentaires quotidiens. Avec les tarifs actuels des principaux providers, c’est un coût marginal à l’échelle d’une PME.

Le vrai coût est le temps de développement initial : entre deux et quatre semaines pour une implémentation sérieuse, selon la complexité de l’agent existant et le nombre de types d’actions à couvrir. Ce coût est réel et doit être planifié.

La rentabilité s’évalue différemment. Un seul incident non contrôlé dans un cabinet juridique ou une agence de recrutement peut coûter bien au-delà du coût d’implémentation en termes de relation client, de réputation, et parfois de conformité. La recherche de Gartner et McKinsey sur les risques liés à l’automatisation indique régulièrement que la confiance des utilisateurs finaux est l’un des facteurs déterminants dans l’adoption à long terme des outils IA. Un incident marquant peut compromettre cette confiance pour des mois.

Les garde-fous ne sont pas un coût de sécurité. Ils sont un coût d’adoption durable.

Pour aller plus loin

Les garde-fous par architecture acteur-critique sont aujourd’hui ce que les tokens d’API étaient il y a trois ans : une infrastructure de base que toute équipe déployant des agents sérieux finit par mettre en place. Plus tôt on l’intègre, moins on a d’incidents à gérer en production.

Si vous construisez ou déployez des agents IA avec des accès à des systèmes externes, la question n’est pas de savoir si vous avez besoin de garde-fous. La question est de savoir quelle architecture vous choisissez et quand vous commencez à la construire.

Si vous souhaitez discuter de l’architecture de validation adaptée à vos agents, vous pouvez réserver un appel stratégie IA avec l’équipe Basalt : https://cal.com/eliott-ardisson-kzq7zs/ai-strategy-call