Index du journalDockup / note de terrain
Note / production-guardrails-for-ai-agents

Les garde-fous de production pour les agents IA réellement fiables

Garde-fous de production pour les agents IA : gestion des secrets, confirmations, journaux d’audit, accès restreints, erreurs structurées et workflows de déploiement autonome sécurisé.

Les garde-fous de production pour les agents IA doivent résister à bien plus qu’un prompt courtois. Un agent de code autonome peut mal interpréter une cible, réessayer une opération, exposer un credential dans son explication ou continuer après une réponse ambiguë. La sécurité en production doit donc exister dans l’interface exécutable, le modèle d’autorisation et la piste d’audit — pas uniquement dans les instructions.

Dockup associe des recommandations comportementales dans son skill Claude Code et Codex à un enforcement au niveau du CLI : les secrets sont masqués, les opérations destructrices nécessitent --yes, les échecs renvoient des codes stables, les déploiements peuvent attendre un état terminal et les mutations apparaissent dans le journal d’audit.

Pourquoi les garde-fous doivent-ils être appliqués sous le prompt ?

Un prompt constitue une politique utile, mais pas une frontière de sécurité. Le contexte de l’agent peut être tronqué, les instructions peuvent entrer en conflit et le modèle peut choisir une interprétation incorrecte. L’outil sous-jacent doit rendre les comportements dangereux difficiles, voire impossibles.

Prenons une demande de suppression. Une conception faible expose une commande qui supprime immédiatement et compte sur l’agent pour penser à demander confirmation. Une conception plus robuste rejette l’opération tant qu’un flag de confirmation distinct n’est pas présent.

Dockup utilise ce modèle plus robuste :

dockup up production/api --prune --json

Sans confirmation explicite, le nettoyage destructeur est refusé et le JSON contient code:"needs_confirm". Rien n’est supprimé. L’agent doit présenter ce résultat à un humain, obtenir son approbation, puis relancer délibérément la commande :

dockup up production/api --prune --yes --json

Il s’agit de defense in depth. Le skill Dockup indique à l’agent de s’arrêter, tandis que le CLI empêche toute exécution accidentelle même si l’instruction n’a pas été suivie.

Comment le masquage des secrets protège-t-il les agents autonomes ?

Les agents incluent souvent la sortie des commandes dans leur raisonnement ou leur réponse finale. Si une opération de lecture renvoie un token de production, le secret peut se retrouver dans l’historique des conversations, les logs, la télémétrie, les captures d’écran ou des notes d’incident copiées.

Une interface de configuration sûre sépare les métadonnées des secrets de leurs valeurs. Dockup renvoie les clés des variables d’environnement et le marqueur isSecret, mais les valeurs secrètes stockées sont null ou masquées.

dockup env list -s production/api --json

L’agent peut définir un secret sans pouvoir le récupérer ultérieurement :

dockup env set API_KEY="$API_KEY" \
  --secret \
  -s production/api \
  --json

Le masquage des secrets ne dispense pas d’une gestion rigoureuse du processus. La valeur d’origine existe toujours dans l’environnement du shell pendant l’opération de définition. Évitez set -x, n’affichez pas la variable et ne construisez pas de chaînes de commandes capturées par des logs verbeux.

Les mots de passe de base de données, les clés API, les tokens de registry, les credentials SSH et les credentials RDP Windows doivent être traités comme des sorties à usage unique ou à accès restreint. Un agent doit les stocker dans un secret manager approuvé ou les transmettre directement au processus suivant sans les reproduire en toutes lettres.

L’approche plus globale au niveau de l’application est présentée dans les bonnes pratiques de sécurité.

Comment l’approbation des actions destructrices doit-elle fonctionner ?

Toutes les mutations ne nécessitent pas le même niveau de formalité. Un modèle d’autonomie utile répartit les opérations selon leur réversibilité et leur blast radius :

NiveauExempleComportement par défaut de l’agent
Lecture seuleLister les services, consulter l’état, afficher les logsExécuter et résumer
Écriture réversibleDéfinir une variable, déclencher un déploiementExécuter dans le périmètre approuvé
Récupération opérationnelleRedémarrer, relancer un ancien déploiementExécuter si le runbook l’autorise ; fournir les éléments de preuve
DestructriceDétruire un service, supprimer une base de données, quitter un projetS’arrêter et demander une approbation explicite
Destruction étendueAppliquer --prune, transférer la propriétéExiger une confirmation humaine portant sur la cible exacte

L’approbation explicite doit préciser la cible exacte et la conséquence. « Oui, continue » est moins précis que « Supprime staging/old-api et les ressources de service qui lui sont associées ». L’agent ne doit pas réutiliser une approbation donnée pour une autre commande ou une autre cible.

La configuration as code de Dockup est additive par défaut. dockup up ne supprime pas les variables d’environnement ou les domaines absents du manifest. La suppression nécessite le flag explicite --prune :

dockup plan production/api --json
dockup up production/api --prune --json

Le plan est en lecture seule et doit d’abord être examiné. Même avec --prune, les secrets, les services, les bases de données et les volumes sont protégés contre ce chemin de nettoyage du manifest. Consultez dockup.yaml config as code pour découvrir le workflow complet.

Comment les erreurs structurées permettent-elles de limiter l’autonomie ?

Un agent a besoin d’un ensemble fini de branches sûres. Les messages en texte libre sont utiles aux humains, mais des codes d’erreur stables rendent la première réponse déterministe.

CodeRéponse appropriée
not_logged_inS’arrêter et obtenir un credential valide
not_linkedRésoudre la cible ou la transmettre explicitement
no_targetLancer la découverte des services ; ne jamais inventer un slug
needs_confirmDemander l’approbation d’un humain
deploy_trigger_failedIndiquer pourquoi l’opération n’a pas pu démarrer
deploy_failedExaminer les build logs
deploy_timeoutSignaler l’incertitude liée à l’absence d’état terminal

Un déploiement doit attendre un état terminal :

dockup deploy production/api --wait --json

Le timeout par défaut est de 900 secondes. Un exit 0 prouve que le déploiement a atteint l’état de réussite. Un exit différent de zéro empêche l’agent de poursuivre vers des modifications du domaine, des migrations ou des annonces comme si la production était prête.

Cette conception est étudiée dans la conception d’un CLI pour les agents IA. Le principe est simple : l’outil doit rendre explicite tout résultat ambigu.

Que doit enregistrer un journal d’audit ?

L’autonomie sans traçabilité constitue une dette opérationnelle. Une piste d’audit de production doit indiquer qui a agi, quelle interface a été utilisée, quelle cible a été modifiée, s’il s’agissait d’une lecture ou d’une écriture, quand l’action a eu lieu et si elle a réussi.

Dockup enregistre les actions effectuées depuis le CLI, l’UI et l’API. Les opérateurs peuvent examiner les mutations récentes :

dockup audit --writes --json
dockup audit --number 30 --json
dockup audit --search domains --json

Le rapport produit par l’agent doit compléter l’enregistrement de la plateforme. Il doit inclure :

  1. La cible project/service résolue.
  2. La catégorie de la commande, sans les valeurs secrètes.
  3. Les identifiants de déploiement ou de ressources renvoyés par la plateforme.
  4. Le code de sortie et l’état structuré.
  5. Les éléments de preuve recueillis après la mutation.
  6. Toute approbation reçue pour une opération destructrice.
  7. Les incertitudes restantes ou les actions de suivi.

Les journaux d’audit ne servent pas uniquement à chercher des responsables après un incident. Ils permettent à un second agent ou à un opérateur humain de reconstituer l’état sans répéter des commandes risquées.

Comment les équipes peuvent-elles accroître l’autonomie des agents en toute sécurité ?

Commencez par un accès en lecture et un service présentant peu de risques. N’élargissez le périmètre que lorsque l’agent fait preuve d’une découverte correcte des cibles, d’une bonne hygiène des secrets, d’une gestion appropriée des échecs et de rapports fiables.

Une progression pratique peut être la suivante :

Étape 1 : Observer

Autorisez la liste des services, l’état, l’historique des déploiements, les build logs, les runtime logs, la disponibilité, l’utilisation et la consultation des security scans. Comparez le résumé de l’agent au JSON brut.

Étape 2 : Déployer sur une cible fixe

Autorisez le déploiement d’un seul service avec --wait. Exigez un health check et un rapport de fin structuré. N’accordez pas de droits de suppression ou de gestion de l’équipe.

Étape 3 : Gérer une configuration réversible

Autorisez la mise à jour de variables secrètes et non secrètes, la configuration du health check et la mise en place de domaines personnalisés dans le cadre d’un runbook révisé. Exigez un redéploiement après toute modification de l’environnement.

Étape 4 : Effectuer des actions de récupération

N’autorisez le redémarrage ou le rollback que lorsque l’agent sélectionne un identifiant de déploiement connu et exact, tout en conservant les éléments de preuve de l’échec.

Étape 5 : Encadrer les opérations destructrices par une approbation

Conservez les flags destructeurs derrière une approbation humaine explicite, même lorsque le credential les autorise techniquement. Utilisez dans la mesure du possible des clés API à périmètre restreint et examinez régulièrement la piste d’audit.

L’installation du skill de l’agent renforce ces comportements :

npm install -g dockup-cli
dockup skill install
dockup skill status --json

La référence du CLI Dockup documente le comportement imposé des commandes. L’agent doit vérifier son schéma local plutôt que de s’appuyer sur un exemple mémorisé.

Checklist de vérification des garde-fous

Avant d’accorder un accès à la production, répondez à chacune des questions suivantes :

  • L’agent peut-il découvrir les cibles exactes sans faire de suppositions ?
  • Les valeurs secrètes sont-elles masquées dans tous les chemins de lecture ?
  • Chaque mutation échouée renvoie-t-elle un code différent de zéro ?
  • Les opérations longues peuvent-elles attendre un état terminal ?
  • Les actions destructrices sont-elles bloquées sans confirmation explicite ?
  • Les credentials sont-ils limités et fournis en dehors des prompts ?
  • Chaque mutation peut-elle être retrouvée dans un journal d’audit ?
  • Une procédure de rollback ou de récupération a-t-elle été testée ?
  • Les versions du skill et de l’exécutable peuvent-elles diverger ?
  • Le rapport final sépare-t-il les faits des incertitudes ?

Un « non » correspond à une tâche de conception, pas à une tâche de rédaction de prompt. L’autonomie en production ne doit progresser qu’au rythme du renforcement des garanties sous-jacentes.

Tester les garde-fous comme des scénarios d’échec

Une revue est incomplète tant que l’équipe n’a pas déclenché volontairement les limites du système. Lancez un déploiement avec un token invalide, demandez une cible inconnue, laissez un build de test échouer, définissez un timeout très court et tentez une commande destructive sans confirmation. Chaque cas doit produire un exit différent de zéro, un code stable, aucune fuite de secret et aucune mutation imprévue.

Ces tests transforment les garde-fous de production pour les agents IA en garanties observables. Répétez-les après les mises à jour du CLI ou des policies, comme vous le feriez pour les tests d’authentification et d’autorisation d’une application. Un garde-fou qui n’existe que dans une présentation ne protégera pas une release unattended.

Mettre le workflow en production

Installez le skill, examinez ses instructions et testez chaque garde-fou — y compris une commande destructive bloquée — avant d’émettre un token de production.

npm install -g dockup-cli
dockup skill install

La première commande installe le CLI. La seconde installe le skill Dockup correspondant à Claude Code et Codex. Commencez gratuitement sur app.dockup.ai.

FAQ

Les instructions du prompt suffisent-elles à garantir la sécurité d’un agent IA en production ?

Non. Les prompts aident à orienter le comportement, mais les contrôles critiques tels que le masquage des secrets, la confirmation, l’autorisation, les codes de sortie et les journaux d’audit doivent être imposés par l’outil et la plateforme.

Comment Dockup bloque-t-il les opérations destructrices ?

Les commandes destructrices refusent de s’exécuter sans le flag explicite --yes et renvoient le code structuré needs_confirm, ce qui permet à l’agent de s’arrêter et de demander l’intervention d’un humain.

Un agent IA peut-il lire les valeurs des variables d’environnement secrètes depuis Dockup ?

Les valeurs secrètes stockées sont masquées dans la sortie. L’agent peut voir la clé et le marqueur du secret, et peut remplacer la valeur, mais il ne reçoit pas le secret stocké.

Pourquoi les codes d’erreur structurés sont-ils importants pour l’autonomie ?

Ils limitent l’agent à des branches de récupération connues, comme demander une authentification, découvrir la cible exacte, consulter les build logs ou demander une confirmation.

Comment une équipe doit-elle commencer à accorder un accès à la production ?

Commencez par les opérations en lecture seule, puis autorisez le déploiement sur une cible présentant peu de risques. Élargissez ensuite à la configuration et à la récupération réversibles uniquement lorsque l’agent fournit systématiquement des éléments de preuve vérifiables.