Gros plan sur les mains d'un développeur au-dessus d'un clavier, devant un écran affichant du code suggéré par une IA.

Agents IA : sécuriser les changements de code automatisés

Les agents d’IA autonomes, capables de soumettre des modifications directement dans un dépôt de code, nécessitent des garde-fous robustes. GitHub a intégré plusieurs couches de protection pour son agent Copilot cloud. Par défaut, ce système vérifie le code généré contre des problèmes de sécurité en utilisant CodeQL. Il examine aussi les dépendances ajoutées au regard de la base de données d’avis de GitHub, notamment pour détecter les vulnérabilités classées comme critiques ou de haut niveau. Une analyse de recherche de secrets est appliquée pour traquer les clés d’API ou les jetons sensibles.

GitHub encadre strictement les actions de cet agent. Seuls les utilisateurs disposant de droits d’écriture sur le dépôt peuvent déclencher l’agent. De plus, l’agent ne peut pousser que sur une branche unique. La validation humaine reste obligatoire avant toute fusion ; l’agent ne peut ni marquer une proposition comme « Prête pour révision », ni approuver ou fusionner le travail lui-même. Les journaux de session permettent aux administrateurs de retracer chaque action.

Les risques d’injection de prompt sont atténués par le filtrage des caractères cachés dans les commentaires ou les problèmes assignés à l’agent. En outre, les commits réalisés par l’agent sont signés, et bien que l’agent soit l’auteur, le développeur initial est marqué comme co-auteur, ce qui facilite l’audit.

Illustration vectorielle représentant un agent IA contraint par une passerelle de sécurité avant d'accéder à un dépôt de code.

Gestion des opérations répétables et des limites d’action

Le concept d’idempotence, essentiel dans les systèmes qui peuvent se répéter, prend toute son importance quand les workflows impliquent des interactions externes. Les systèmes d’exécution durable d’AWS illustrent bien cette distinction. Il est fondamental de différencier les opérations qui peuvent être exécutées plusieurs fois sans modifier l’état final de celles qui ont un effet secondaire unique, comme un paiement.

AWS documente cette distinction : les opérations idempotentes, telles qu’une mise à jour dans une base de données capable d’« upsert », peuvent utiliser une sémantique « at-least-once » par tentative. Une réexécution après une interruption ne modifie pas le résultat. En revanche, une tentative de débit de carte de paiement, effet externe critique, doit être configurée en « at-most-once » et sans stratégie de nouvelle tentative pour garantir qu’elle ne soit jamais exécutée deux fois.

Inkitt, dans son projet de créateur de pull request à usage unique, applique également cette rigueur. Leur orchestrateur gère des étapes qui peuvent potentiellement se répéter. Ils appliquent le principe d’idempotence aux workflows qui risquent de recevoir des événements en double, par exemple lors de la réception de webhooks.

Les limites imposées aux agents de codage

Au-delà des mécanismes de sécurité intégrés, les architectes de ces systèmes imposent des frontières strictes aux agents. Inkitt, par exemple, limite son automatisation à des modifications confinées. Ils rejettent explicitement toute tâche impliquant la modification de schémas de base de données, les configurations de build de conteneurs, ou les codes d’authentification. Ce cadrage répond aux risques que les agents pourraient introduire en agissant de manière trop générale.

Ce contrôle s’aligne avec ce que l’on observe chez GitHub Copilot. L’agent ne peut pas exécuter directement des commandes Git complexes ; il est cantonné à des opérations de push simples. Des mécanismes de contrôle des workflows GitHub Actions sont mis en place pour attendre l’approbation humaine avant de lancer des traitements lourds. Même lorsqu’une automatisation est déclenchée sans initiation humaine, les actions sont clairement attribuées, permettant de maintenir la piste d’audit et de respecter les contrôles de révision.

Sources