<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tchale</title>
    <description>The latest articles on DEV Community by Tchale (@yves_michelfoyettchale_).</description>
    <link>https://dev.to/yves_michelfoyettchale_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4102743%2F2d44f994-3e38-432c-9308-1a8bed1fbb78.jpeg</url>
      <title>DEV Community: Tchale</title>
      <link>https://dev.to/yves_michelfoyettchale_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yves_michelfoyettchale_"/>
    <language>en</language>
    <item>
      <title>J’ai mis un Agent Claude dans ma CI pendant 3 mois , voici ce qu’il a vraiment fait</title>
      <dc:creator>Tchale</dc:creator>
      <pubDate>Mon, 31 Aug 2026 12:28:13 +0000</pubDate>
      <link>https://dev.to/yves_michelfoyettchale_/jai-mis-un-agent-claude-dans-ma-ci-pendant-3-mois-voici-ce-quil-a-vraiment-fait-5518</link>
      <guid>https://dev.to/yves_michelfoyettchale_/jai-mis-un-agent-claude-dans-ma-ci-pendant-3-mois-voici-ce-quil-a-vraiment-fait-5518</guid>
      <description>&lt;p&gt;Retour d’experience sur l’automatisation de déploiements avec un agent LLM et sur les gardes-fous qu’il a fallu inventer en cours de route&lt;/p&gt;

&lt;p&gt;L’idée est venue d’un frustration banale. Sur mon projet terraform , je passais beaucoup de temps à refaire la même chose : lire un plan qui échoue , comprendre pourquoi , corriger des lignes de configurations , toujours trop long.&lt;br&gt;
Un agent LLM sait faire ca , mais la question était se savoir s’il pouvait le faire sans supervision , dans un pipeline , sur une infrastructure qui coûte de l’argent réel.&lt;br&gt;
Trois mois plus tard , la réponse est oui , mais pas du tout dans le périmètre que j’imaginais au départ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Le Montage:&lt;/strong&gt;&lt;br&gt;
Rien de complexe, un VPS à 12 euro par mois , la CLI de l’agent installée dessus , et un runner Gitlab qui l’invoque sur un déclencheur précis: quand un terraform plan échoue sur une MR.&lt;br&gt;
l’agent recoit trois choises: la sortie d’erreur , le diff de la MR, et un accès en lecture du dépôt.Il produit une proposition de correctif sous forme de patch, qu’il pousse sur une branche dédiée. Ce qui a bien marché:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;les erreurs de typage et de reference. Un var.instance_type mal orthographié, un output référencé qui n'existe plus après un refactor, un module dont la signature a changé. L'agent corrige ça avec un taux de réussite que j'estime autour de 85 %. Ce sont des erreurs mécaniques, à contexte local, exactement ce qu'un LLM traite bien.&lt;/li&gt;
&lt;li&gt;Les messages d’erreur opaques. C'est le gain que je n'avais pas anticipé. Certaines erreurs de provider AWS sont d'une inutilité remarquable , un InvalidRequestException sans description, par exemple. L'agent, lui, va lire le corps de la requête dans les logs de debug et repérer le paramètre malformé. Il ne « comprend » pas mieux que moi, mais il lit trois cents lignes de log en deux secondes sans se lasser.&lt;/li&gt;
&lt;li&gt;À 19h un vendredi , ma qualité de diagnostic s’effondre. Celle de l’agent, non.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ce qui a cassé&lt;/strong&gt;&lt;br&gt;
Il a proposé de détruire une base de données.&lt;br&gt;
C'est l'incident qui a tout recadré. Un cluster Aurora avait été créé manuellement en urgence quelques semaines plus tôt, sans que le code correspondant soit versionné. Le plan proposait donc logiquement de supprimer une ressource orpheline sauf que la ressource, elle, était bien vivante et servait la production.&lt;/p&gt;

&lt;p&gt;L'agent a fait exactement ce qu'on lui demandait : rendre le plan cohérent. Son correctif était techniquement irréprochable. Il aurait détruit la base.&lt;/p&gt;

&lt;p&gt;La leçon n'est pas &lt;strong&gt;« l'IA est dangereuse »&lt;/strong&gt;. Elle est plus embarrassante : l'agent a révélé une dette que nous avions, pas créé un problème nouveau. L'écart entre l'infrastructure réelle et le code versionné existait avant lui. Il l'a simplement rendu actionnable, et donc dangereux.&lt;/p&gt;

&lt;p&gt;Le non-déterminisme est incompatible avec la CI.&lt;br&gt;
Deux exécutions sur la même erreur ne donnent pas le même patch. Parfois la variation est cosmétique. Parfois l'agent choisit une approche structurellement différente,  ajouter un lifecycle plutôt que corriger la ressource, par exemple. Sur un pipeline, où l'on attend qu'un même input produise un même output, c'est déroutant.&lt;br&gt;
Je n'ai pas résolu ce point. Je l'ai contourné en n'autorisant jamais l'agent à modifier l'état du système : il propose, un humain dispose.&lt;/p&gt;

&lt;p&gt;Le coût n'est pas là où on croit.&lt;br&gt;
Environ 0,40 euro par invocation, pour à peu près 60 invocations par mois. Vingt-quatre euros : négligeable. Le vrai coût est le temps de relecture des propositions. Un patch plausible mais faux prend plus de temps à évaluer qu'une absence de patch, parce qu'il faut vérifier un raisonnement au lieu d'en construire un.&lt;/p&gt;

&lt;p&gt;Les garde-fous, dans l'ordre où ils sont apparus&lt;br&gt;
Aucun n'était prévu au départ. Tous sont nés d'un incident.&lt;br&gt;
Aucune permission d'écriture sur AWS. L'agent a un rôle en lecture seule, point. Il génère du texte, jamais un apply. C'est la règle qui rend toutes les autres moins critiques : le pire qu'il puisse produire est une mauvaise suggestion.&lt;br&gt;
Aucun accès aux secrets. Les logs sont filtrés avant de lui être transmis. Un ARN de rôle ou un identifiant de compte dans un prompt part chez un tiers, et cela mérite une décision consciente plutôt qu'un effet de bord.&lt;br&gt;
Périmètre restreint aux fichiers modifiés par la MR. Sans cette limite, l'agent partait « améliorer » des modules qui n'avaient rien demandé.&lt;br&gt;
Refus systématique sur les ressources à état. Toute proposition touchant une base de données, un bucket avec des données, ou une ressource marquée prevent_destroy est rejetée automatiquement, quelle que soit sa qualité apparente. La règle est bête et elle est absolue , c’est précisément ce qui la rend fiable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ce que je ferais différemment&lt;/strong&gt;&lt;br&gt;
Commencer par le rôle IAM. J'ai construit le montage puis restreint les permissions après l'incident Aurora. L'ordre inverse aurait été plus sage, et m'aurait coûté une nuit blanche de moins.&lt;br&gt;
Mesurer dès le premier jour. Je n'ai aucune donnée fiable sur les six premières semaines. Combien de patches acceptés, combien rejetés, combien de temps réellement gagné ? Je ne peux répondre que par impression, ce qui est une façon élégante de dire que je ne peux pas répondre.&lt;br&gt;
Résister à l'extension du périmètre. À chaque succès, la tentation est de confier un peu plus. C'est ainsi qu'on se retrouve avec un agent qui a des droits d'écriture « juste pour ce cas-là ».&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ce que ça m'a appris sur les agents en production&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Le discours ambiant oppose deux facons de pensé : l'agent autonome qui remplace l'ingénieur, et le gadget qui ne sert à rien. Mon expérience ne valide ni l'une ni l'autre.&lt;br&gt;
Ce qui fonctionne, c'est un agent avec un périmètre étroit, sans droits d'écriture, sur des tâches à contexte local, avec une validation humaine systématique. Ça ressemble beaucoup moins à de la magie qu'aux démos qu'on voit passer. C'est aussi la seule configuration dans laquelle je le laisserais tourner sur une infrastructure qui compte.&lt;br&gt;
Le gain réel n'est pas la vitesse. C'est de ne plus lire trois cents lignes de log un vendredi soir.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
