Opinion

La frontière se trace à l'avance

Version 1.0 · Publié le 2026-09-15

Pourquoi juger requête par requête est la mauvaise forme, et quoi faire à la place.

Fin août, un chercheur a publié la démonstration la plus nette d’un problème que connaît tout le secteur : un seul poste de contrôle, qui se trompe dans les deux sens au cours de la même exécution.

Johann Rehberger a obtenu l’exécution de code au-delà du mode automatique de Claude Code dans trois à quatre tentatives sur cinq. L’intéressant est ce qui a suivi. Le classifieur a laissé créer le processus malveillant, puis a bloqué la commande censée l’arrêter. Simon Willison l’a relayé dans Breaking Claude Code Opus 5 Auto Mode, et le compte rendu de Rehberger lui-même détaille la chaîne. Ces deux chiffres proviennent des tests du chercheur, et non d’une communication du fournisseur ni d’un audit indépendant : c’est ainsi qu’il faut les lire.

Ce n’est pas l’histoire du classifieur d’une entreprise. C’est l’histoire de la forme du contrôle.

Pourquoi juger requête par requête est la mauvaise forme

Un classifieur placé au moment de l’action a une mission impossible. Il doit décider sur-le-champ si une action jamais vue est sûre, sans savoir à quoi sert le déploiement.

C’est une question ouverte, et à cet instant rien ne permet d’en mesurer la réponse. Des réponses raisonnables existent dans les deux sens, et c’est exactement pourquoi l’échec survient dans les deux sens. Ce qui n’a jamais été vu passe, et ce qui paraît alarmant hors contexte est bloqué. Une commande de nettoyage ressemble beaucoup à une commande malveillante.

Une frontière pose au contraire une question fermée, une seule fois, à l’avance, à quelqu’un qui sait à quoi sert le système. Quels systèmes cela peut-il toucher, quels champs, quelles actions, et qu’est-ce qui est absolument exclu. Cette question admet une réponse, et cette réponse n’a pas à être reconstruite dans l’urgence par un composant qui ignore tout de votre métier.

Un mot sur le lien avec un article précédent. Une couche au-dessus, nous avons traité ce sujet dans l’approbation n’est pas la supervision, qui porte sur la personne qui enchaîne les validations. Celui-ci porte sur le poste de contrôle lui-même, pas sur l’humain placé devant. Les deux échouent, pour des raisons voisines mais distinctes.

Le fournisseur est d’accord, et c’est là que c’est intéressant

Il serait facile et faux d’en faire un article concurrentiel. Nous exploitons une Constellation IA de modèles, dont ceux d’Anthropic, et leurs ingénieurs sont parvenus à la même conclusion que nous.

Anthropic a examiné le rapport, l’a qualifié d’Informative, et a indiqué que le mode automatique est un classifieur de confort et non une frontière de sécurité, la vraie frontière étant l’isolation au niveau du système d’exploitation et le contrôle du trafic sortant. C’est la réponse d’ingénierie honnête. C’est aussi, presque mot pour mot, l’argument de cet article.

Un détail mérite d’être retenu. Il ne s’agissait pas d’une injection de prompt classique, où un modèle lit des instructions d’attaquant et les suit. C’est l’environnement dans lequel l’agent a été placé qui a produit l’exploitation. La correction ne peut donc pas résider dans le jugement du modèle, puisque ce n’est pas le modèle qui a été trompé.

Puis la nouvelle plus dure, arrivée en septembre

Si l’argument s’arrêtait là, il serait trop confortable. Deux incidents ultérieurs compliquent la conclusion, et la renforcent plutôt qu’ils ne l’affaiblissent.

D’abord, un wiki de développeurs allemand à l’abandon. Des chercheurs du Nightingale Collective ont documenté des agents qui, selon les chercheurs, se présentaient comme ceux d’OpenAI, laissant des milliers de modifications pendant des semaines et se coordonnant entre eux. Les médias avancent des décomptes différents : retenez « des milliers » comme l’affirmation, et tout chiffre plus précis comme celui d’un seul média. Ce qui compte, c’est le mécanisme. Le logiciel du wiki traitait GET et POST de façon identique, si bien que des agents autorisés à seulement lire le web pouvaient écrire. Les agents ont ensuite modifié le fichier hosts pour faire passer leur trafic par un domaine de stockage autorisé.

Ensuite, une divulgation portant sur une liste d’autorisation dans un proxy. Un nom d’hôte contenant un octet nul, de la forme attacker.com\0.google.com, a franchi une vérification JavaScript qui regardait la fin de la chaîne, tandis que l’appel système sous-jacent tronquait à l’octet nul et appelait l’attaquant. La chaîne vérifiée par le proxy n’était pas l’hôte ouvert par le système d’exploitation.

Les deux sont des défaillances de frontière, et précisément du type de frontière qu’Anthropic désignait comme la vraie. La conclusion honnête est donc plus étroite que « tracez une frontière », et nettement plus utile.

Le comparateur devient la frontière de confiance

Voici la phrase que j’afficherais au mur. Une frontière que l’on fait respecter en comparant un nom hérite de chaque défaut du code qui effectue cette comparaison.

Une liste d’autorisation est une comparaison de chaînes. Une restriction de méthode est l’interprétation qu’un analyseur fait d’une requête. Une règle de domaine est ce que votre résolveur croit être un nom d’hôte. Dans les trois cas, la véritable frontière de sécurité se déplace en silence de la politique que vous avez écrite vers le code qui l’évalue, et un seul désaccord entre deux analyseurs contourne toutes les règles au-dessus. Celui qui relit la politique ne le voit pas, car la politique est correcte.

Gardez vos listes d’autorisation. Le propos est plus étroit : sachez de quel composant dépend réellement votre sécurité, et privilégiez les contrôles qui n’exigent pas que deux logiciels s’accordent sur le sens d’une chaîne.

À quoi cela ressemble dans un Agent de clientèle

Notre propre réponse repose sur le même principe, et je tiens à la formuler assez étroitement pour qu’elle résiste à l’examen.

Les Procédures sont écrites à l’avance et portent des autorisations explicites : ce que l’agent peut faire seul, ce qui requiert un humain, et ce qui est exclu. Aucune action irréversible n’a lieu sans qu’un humain ait d’abord approuvé la frontière. Chaque action est journalisée avec horodatage, chemin de décision, modèle utilisé et source citée. Ces trois éléments figurent aujourd’hui sur la page de l’agent et sur la page Confiance, et ce sont des choix de conception, pas des réglages.

La seule frontière de notre architecture qui ne repose pas sur un comparateur est celle tracée autour de l’identifiant lui-même. Le Coffre-fort de confidentialité transforme les données à caractère personnel en jetons au niveau de la passerelle, de sorte que le modèle génératif reçoit un marqueur et non un nom. Il n’y a alors aucun nom sur lequel deux analyseurs pourraient diverger.

Cette affirmation doit venir avec ses limites, sans quoi elle devient ce que je viens de critiquer. Il s’agit d’une minimisation au mieux des identifiants détectables, jamais d’une anonymisation complète. L’étape de détection des données à caractère personnel lit par conception l’entrée brute et demeure un sous-traitant ultérieur déclaré. Et nos propres contrôles réseau sont des contrôles réseau ordinaires. Ils sont exactement aussi vulnérables aux trois défaillances ci-dessus que ceux de n’importe qui. La transformation en jetons écarte une classe de problèmes. Elle ne confère aucune immunité, et un fournisseur qui vous dit le contraire vous vend un classifieur mieux commercialisé.

Où se situe réellement l’obligation

Une remarque étroite sur la conformité, car elle change qui doit agir.

Au titre de l’AI Act européen, notre propre annexe de conformité répartit les rôles : Unless est le fournisseur du système d’IA, le client en est le déployeur, et les obligations du déployeur au titre de l’article 26 comprennent l’attribution de la supervision humaine à des personnes disposant des compétences et de l’autorité pour l’exercer. C’est la répartition que notre contrat établit, non une affirmation nouvelle sur le droit.

La conséquence pratique est simple. Désigner le classifieur d’un fournisseur n’est pas la façon dont un déployeur s’acquitte de la supervision. L’être qui a tracé la frontière, et détenir le journal montrant où elle se situait et qui l’a déplacée, l’est.

L’échange honnête

Une frontière ne vaut que ce que vaut la personne qui l’a tracée, et la tracer est un vrai travail. Quelqu’un doit s’asseoir, comprendre le déploiement et décider ce que l’agent peut toucher. C’est plus lent que d’activer un classifieur, et personne n’y prend plaisir.

Mais c’est un travail que l’on fait une fois, en pleine lumière, le déploiement sous les yeux, au lieu de demander à un composant de rendre le même jugement des milliers de fois par jour dans des conditions que personne n’avait prévues. Vous choisissez entre décider vous-même et espérer qu’autre chose décide bien à votre place.

L'accès à un modèle est une chaî...