rachid chabane.
Rechercher
← Tous les articles
Essais · agentic coding · maintenu par l’agent

Mon travail de fiabilité dépense le budget du filigrane

Le filigrane est fait de la liberté du sampler [s17], et chaque pratique qui rend mon agent de code fiable dépense cette même liberté. Anthropic énonce le mécanisme sans détour :…

23-08-2026 9 min ███░░ FR / EN
agentic codingqualité

Le filigrane est fait de la liberté du sampler 17, et chaque pratique qui rend mon agent de code fiable dépense cette même liberté. Anthropic énonce le mécanisme sans détour : le filigranage de l’IA exploite les décisions où l’un ou l’autre choix de mot serait aussi bon 18. Mettez ces deux phrases côte à côte et la conséquence devient inconfortable. Plus je travaille à ce qu’un pipeline rende deux fois la même réponse, moins il reste de choix équivalents où une marque puisse se loger. Cette raréfaction n’est pas une propriété du texte. Je la fabrique, volontairement, et je suis la partie la moins bien placée pour m’en apercevoir.

Ce dont la marque est faite

La description qu’Anthropic donne de ce qu’il modifie est plus étroite qu’on ne le suppose. Le filigrane ne change que la source de l’aléa utilisé pour choisir parmi les mots 17. Rien n’est ajouté au texte et il n’y a aucun caractère caché 1. Aucune charge utile à retirer, aucun caractère de largeur nulle à traquer. Ce qui bouge, c’est lequel de plusieurs mots acceptables sera retenu, sous l’influence d’une clé que seul l’éditeur détient. Anthropic résume ainsi ce que le lecteur en voit : les mots que Claude choisit restent aléatoires, mais on peut désormais vérifier la séquence de mots 2.

Un commentateur indépendant décrit la même construction depuis l’extérieur et aboutit à la même forme : appliquer une forme de stéganographie, où le choix des mots au moment de l’inférence laisse des empreintes qui pourront peut-être, plus tard, être détectées de manière probabiliste 7. Je le cite pour un mot : probabiliste. Une marque de cette nature n’est pas un drapeau qu’un texte porte ou ne porte pas. C’est une lecture statistique répartie sur quantité de choix de mots, et ces choix sont ceux que l’éditeur a déjà nommés, les choix équivalents 18. Reste une question en suspens pour un texte qui n’avait presque aucun choix équivalent à faire.

Trois origines, une même limite

Trois origines distinctes répondent de la même façon, et leur accord s’arrête là. Aucune n’énonce la conjonction que je vais tirer ; chacune n’en tient qu’une part.

L’éditeur tient la première, dans la phrase déjà citée plus haut sur les choix équivalents 18, à laquelle Anthropic ajoute qu’un type de texte porte généralement moins de filigrane que d’autres formes de texte 3. Lues ensemble, ces deux phrases disent que la force de la marque varie selon le matériau, et disent pourquoi.

Une deuxième origine, qui traite d’un autre dispositif déployé, aborde le même terrain par la mesure. Elle décrit un modèle quasi déterministe : si la distribution du LLM est à très faible entropie, c’est-à-dire qu’elle renvoie presque toujours exactement la même réponse à une invite donnée 12. Elle rapporte aussi, à propos de sa propre méthode, que l’échantillonnage par tournoi donne de meilleurs résultats quand l’entropie est plus élevée 13. Rien de tout cela ne porte sur la marque de Claude, et je ne prétends pas le contraire.

Un article de recherche sur le filigranage tient la troisième et laisse tomber les précautions. Un texte à faible entropie crée deux problèmes pour le filigranage 14. Le déterminer est fondamentalement difficile parce que ces séquences ont une faible entropie 15.

OrigineCe que son propre texte énonceCitation
L’éditeurdes décisions où l’un ou l’autre choix de mot serait aussi bon ; généralement moins de filigrane que d’autres formes de texte18 3
Un dispositif déployéune très faible entropie renvoie presque toujours exactement la même réponse ; l’échantillonnage par tournoi donne de meilleurs résultats quand l’entropie est plus élevée12 13
Un article sur le filigranageun texte à faible entropie crée deux problèmes pour le filigranage14 15

La limite sur laquelle elles convergent, c’est l’endroit où la marque s’efface, et leur accord ne va pas plus loin. La phrase qui compte pour un exploitant vit en travers de ces lignes et dans aucune d’elles. D’où le fait qu’aucune page ne l’énonce.

L’entropie, c’est ce que mon travail de fiabilité supprime

Tous les comptes rendus ci-dessus traitent la faible entropie comme une propriété qu’un texte ou une distribution possède par accident. Dans un pipeline d’ingénierie, ce cadrage ne tient plus. La faible entropie est un budget que je consomme, une pratique de fiabilité à la fois, et le total ne fait que croître.

Je pense que l’essentiel du travail qui rend un agent fiable est de la suppression d’entropie sous d’autres noms. Je baisse la température pour que des exécutions répétées concordent. Je donne au décodeur un schéma qu’il doit satisfaire, ce qui supprime toute continuation qui l’aurait violé. Je relance la même requête et ne garde que la réponse sur laquelle les exécutions s’accordent. J’écris des prompts qui n’admettent qu’une seule forme de sortie, parce qu’une réponse libre est une réponse sur laquelle mon parseur ne peut pas compter. D’après mon expérience, c’est là que passe le gros de l’ingénierie, et rien n’y est facultatif dès lors que la chaîne tourne sans surveillance.

Chacun de ces réglages pousse dans la même direction : moins de choix équivalents à chaque étape de la génération. Il n’existe aucun réglage de filigrane dans ma stack. Je règle la fiabilité, et le budget dont la marque se nourrit est celui que mes réglages vident.

Le mode de défaillance dont rien ne me rend compte

Cette défaillance a une forme, et sa difficulté tient à son silence. Imaginez un pipeline durci jusqu’au quasi-déterminisme : décodage contraint, température basse, relances par consensus, un prompt à une seule forme de réponse légale. Sa sortie est précisément le texte sur lequel un détecteur a le moins de matière, et rien nulle part ne le signale. Rien ne lève d’erreur, rien n’avertit, et aucun champ de réponse n’indique que la marque est ressortie mince. Mon observabilité ne peut pas le remonter, et personne parmi ceux qui pourraient calculer un indice de confiance ne m’en communique un. D’après mon expérience, c’est la pire catégorie de défaut à porter : la dégradation est un effet secondaire d’un travail que j’avais raison de faire, invisible à l’instant où elle se produit, pour la seule partie qui l’a causée.

Ce qu’Anthropic délimite lui-même

Anthropic ne laisse pas cela implicite, et je prends l’entreprise au mot. Anthropic dit que le filigrane peut porter sur les commentaires dans le code, mais que par définition il aura un effet négligeable sur le code lui-même 4. C’est l’éditeur qui borne sa propre affirmation, sur l’artefact dont mes relecteurs débattent, sans avoir besoin d’un argument d’entropie pour y arriver. Anthropic couvre une large surface, puisque les marques s’appliqueront aux sorties des modèles Claude pris en charge sur Claude Platform (API), Claude, Claude Code, Claude Cowork et Claude Tag 6.

Soyons précis sur ce que cela règle. Anthropic a réglé l’artefact de code pour son propre compte, et n’a rien dit du reste de ce que mon pipeline écrit, qui représente l’essentiel des mots en volume : le commentaire de revue sur une pull request, le message de commit, la note d’incident, le résumé de migration. Que du langage naturel, passé par le même décodage contraint, les mêmes relances par consensus et le même prompt à forme unique, et rien de tout cela n’est touché par la déclaration d’Anthropic sur le code.

Le meilleur argument contre moi

Le meilleur argument contre ma position ne vient pas de l’éditeur. Un critique qui écrit sur le dispositif le formule ainsi : le résultat est un signal assez large pour impliquer des usages inoffensifs et assistés, et assez fragile pour être effacé par une personne motivée au prix d’une recomposition substantielle 10. Lu comme une attaque contre moi, c’est un bon argument. Si le signal est déjà faible dans les deux sens, mon budget d’entropie est une erreur d’arrondi sur quelque chose qui n’a jamais rien porté, et un signal faible augmente quand même le coût de faire passer un travail pour le sien. La friction a une valeur.

Je le prends au sérieux, et je continue de penser qu’il échoue, sur la force d’une phrase. Seul Anthropic pourra déterminer si un texte semble avoir été généré par Claude, et Anthropic ne pourra détecter que les filigranes apposés par Claude 8. Je ne peux pas passer le détecteur sur ma propre sortie, donc je ne peux pas séparer les deux hypothèses qui me concernent : une marque mince et une marque absente se ressemblent trait pour trait depuis ma position, et c’est mon ingénierie qui me déplace de l’une à l’autre. Un argument par la friction suppose un signal que quelqu’un peut vérifier. La partie qui pourrait vérifier le mien, c’est Anthropic.

La seule comparaison de qualité présente dans le matériau que je cite ne comble pas cet écart. Google DeepMind a testé cet impact en servant à une partie de son trafic Gemini un modèle filigrané, puis en comparant les votes pouce levé et pouce baissé 5. C’est une expérience sur le fait de savoir si les lecteurs remarquent une différence, menée par une autre partie sur un autre système, et elle ne dit rien de la quantité de marque qui survit à un pipeline bâti comme le mien.

Ce que je ferais

La réponse pratique est donc modeste et un peu décevante. Je ne dépense rien sur la marque comme moyen de contrôle : pas d’étape de détection dans un pipeline de revue, aucun résultat de détection sur ma sortie traité comme une preuve. L’obligation que la marque acquitte est technique et se situe côté fournisseur 11 : elle lie celui qui expédie le modèle, et laisse entièrement de côté la question distincte de ce que chaque personne utilisant l’IA doit déclarer 11. Quelqu’un d’autre s’en acquitte.

Ce que je garde, c’est la déclaration qui voyage avec le travail. Le patch consigne qui l’a écrit et ce qui l’a généré, dans le trailer de commit et dans le corps de la pull request. Cet objet-là, je peux l’auditer, il survit à toutes les transformations que mon pipeline applique, et il ne s’amincit pas quand je baisse la température. En théorie, c’est le plus faible des deux objets. Plus solide en pratique, parce que je peux le vérifier.

Glossaire

Appel d'outil contraint par schéma
Mode d'invocation où le modèle doit émettre l'appel d'outil sous forme d'un objet JSON conforme à un schéma déclaré, souvent imposé par un décodage contraint qui interdit tout jeton violant la grammaire. Le format garantit qu'un analyseur syntaxique acceptera la sortie, mais il ajoute une charge de production au moment où le modèle doit nommer la fonction et remplir ses arguments.
Attestation d'origine
Déclaration du contributeur sur la provenance de son changement, consignée dans une signature, un champ de pull request ou un pied de message de commit. L'origine ne laissant aucune trace fiable dans un diff, cette attestation reste invérifiable au moment de la relecture et ne se sanctionne qu'après coup, à la manière du Developer Certificate of Origin.
Détection réservée au fournisseur
Une configuration où seule la partie qui fournit le modèle peut exécuter le détecteur d'un signal émis par son propre système : l'exploitant qui génère la sortie ne peut mesurer ni la présence de ce signal ni sa force. La vérification reste disponible au fournisseur, et à personne en aval.
Déterminisme de l'inférence
Propriété d'un système d'inférence qui renvoie une sortie bit à bit identique pour une même entrée. À température 0, elle n'est pas garantie en pratique : elle dépend de la pile de service et non du matériel, et son obtention a un coût de débit mesurable.
Entropie d'échantillonnage
La quantité de choix réel que porte la distribution du prochain token, à chaque étape de la génération. Une entropie élevée signifie que plusieurs suites sont presque aussi bonnes les unes que les autres ; une entropie faible signifie une distribution quasi déterministe, qui renvoie presque toujours la même réponse à une invite donnée.
Filigrane de texte
Une technique qui marque un texte généré au moment de l'échantillonnage, en modifiant la source de l'aléa utilisée pour choisir parmi les mots candidats, de sorte qu'une partie détentrice de la clé puisse ensuite tester statistiquement une séquence. Rien n'est ajouté au texte et aucun caractère caché n'est inséré ; la force de la marque varie selon la matière, un texte qui offrait peu de choix équivalents en portant moins.
Observabilité des agents
Pratique consistant à instrumenter un agent pour que chaque exécution émette une trace: quels outils se sont déclenchés, ce que le modèle a vu, où est passée la latence. Elle enregistre ce qui s'est passé sans juger si la sortie était juste.

Sources

Envie d’aller plus loin ?