Un scanner de sécurité publié sous Apache-2.0 demande de se connecter avant de scanner quoi que ce soit. Deux modes d'authentification sont proposés — et ils ne relèvent pas du même contrat. D'un côté, pas d'entraînement sauf accord explicite. De l'autre, entraînement sauf opposition. Le même verbe, inversé, selon le bouton choisi. Rien dans la licence ne le dit, et la documentation du produit n'en parle pas.
Le 28 juillet 2026, un scanner de sécurité de code est apparu sur le registre npm. Il est publié sous licence Apache-2.0 — une licence libre, permissive, que n'importe qui peut lire, modifier et redistribuer.
Pour scanner la moindre ligne de code, il faut d'abord s'authentifier.
Ce n'est pas une contradiction, et ce n'est pas un piège : l'analyse est faite par un modèle distant, il faut donc un compte pour y accéder. Le paquet le dit sans ambiguïté. Ce qui nous a arrêtés est ailleurs, et c'est plus intéressant : il propose deux façons de se connecter, et les deux ne relèvent pas du même contrat.
Son fichier de présentation propose, mot pour mot, deux chemins :
« Sign in with
npx @openai/codex-security loginor setOPENAI_API_KEYorCODEX_API_KEY. »
Se connecter avec son compte, ou fournir une clé d'API. Les deux mènent au même outil, au même modèle, au même résultat.
Le même fichier prend d'ailleurs la peine d'avertir sur un autre point :
« Scan and workbench subprocesses can inherit your environment, including unrelated API tokens and cloud credentials. »
Les sous-processus de scan peuvent hériter de votre environnement, y compris de jetons et d'identifiants sans rapport avec l'analyse. C'est une mise en garde honnête, et elle mérite d'être saluée : l'éditeur signale lui-même un risque que beaucoup taisent.
Une clé d'API et un compte grand public ne sont pas régis par le même texte. Ce n'est pas notre interprétation : c'est OpenAI qui le dit, dans ses propres conditions.
Les Conditions d'utilisation pour les particuliers commencent par délimiter leur périmètre, puis renvoient explicitement ailleurs :
« Nos Conditions commerciales régissent l'utilisation de ChatGPT Enterprise, de nos API et de nos autres services pour les entreprises et les développeurs. »
Deux textes, donc, et l'un désigne l'autre. Voici ce que chacun dit de l'entraînement des modèles.
Côté interface de programmation, la documentation développeur est explicite :
« data sent to the OpenAI API is not used to train or improve OpenAI models (unless you explicitly opt in) »
Les données envoyées à l'API ne servent pas à entraîner les modèles, sauf si vous y consentez explicitement. La même page précise que des journaux de surveillance des abus sont conservés jusqu'à trente jours, et qu'une option de rétention nulle existe.
Le Contrat de Services, qui régit ces usages professionnels, va plus loin et l'écrit en toutes lettres :
« OpenAI utilisera le Contenu client exclusivement dans la mesure nécessaire pour fournir les Services au Client, pour se conformer au droit applicable, pour faire appliquer les Politiques d'OpenAI et pour prévenir les abus. OpenAI n'utilisera pas le Contenu client pour développer ou améliorer les Services, sauf accord exprès du Client. »
Côté compte particulier, les Conditions d'utilisation disent l'inverse, dans leur section consacrée au contenu :
« If you do not want us to use your Content to train our models, you have the option to opt out by updating your account settings. »
Si vous ne souhaitez pas que votre contenu serve à entraîner les modèles, vous avez la possibilité de vous y opposer.
Une clause d'opposition n'a de sens que si la chose à laquelle on s'oppose est le comportement par défaut. D'un côté il faut accepter pour que cela se produise ; de l'autre il faut refuser pour que cela cesse. Le même verbe, retourné.
Et le contenu, ces conditions le définissent largement :
« You may provide input to the Services ("Input"), and receive output from the Services based on the Input ("Output"). Input and Output are collectively "Content". »
Le code qu'on soumet à un scanner est une entrée. Il entre donc dans cette définition.
Il serait commode de s'arrêter à une opposition binaire. Elle serait fausse — et c'est le Contrat de Services qui trace lui-même la frontière, dès sa première phrase :
« Le présent Contrat de services OpenAI s'applique exclusivement à l'utilisation des API d'OpenAI, de ChatGPT Enterprise, de ChatGPT Business, de ChatGPT for Clinicians ainsi qu'aux autres services destinés aux clients professionnels et aux développeurs ; il exclut de son champ d'application les services OpenAI utilisés par des consommateurs ou des particuliers. »
| Ce que vous utilisez | Texte applicable | Entraînement par défaut |
|---|---|---|
| Une clé d'API | Contrat de Services | Non, sauf accord exprès |
| Un compte ChatGPT Business ou Enterprise | Contrat de Services | Non, sauf accord exprès |
| Un compte ChatGPT particulier | Conditions d'utilisation | Oui, sauf opposition |
Le développeur qui scanne avec son compte personnel et son collègue qui scanne avec le compte de l'entreprise obtiennent le même rapport — et ne sont pas sous le même régime. Rien, dans l'outil, ne le leur dit.
Nous avons récupéré la page de documentation officielle du produit et compté, sur le texte débarrassé de son balisage — 92 926 caractères :
| Terme cherché | Occurrences |
|---|---|
retention | 0 |
retain | 0 |
zero data | 0 |
telemetry | 0 |
privacy | 1 |
training | 2 |
Un compteur ne prouve rien tout seul : encore faut-il vérifier qu'on a bien lu la page et non une coquille vide. Nous avons donc compté ce qui devait s'y trouver — scan y apparaît 39 fois, Codex Security 30 fois, vulnerabilit 7 fois. Le contenu est bien là.
Restaient privacy et training. Nous les avons lues en contexte, une par une : elles figurent toutes dans des menus de navigation latéraux — « Security & Privacy » d'une autre section, « Online trainings » du pied de page. Aucune dans le corps du texte.
La seule page consacrée aux données vers laquelle cette documentation renvoie est celle de l'interface de programmation. Interrogée précisément là-dessus, elle ne mentionne jamais les comptes grand public. Autrement dit : celui qui emprunte la première porte — la plus simple, celle du bouton « se connecter » — ne trouve, dans la documentation du produit, aucune réponse à la question « où va mon code, et qu'en fait-on ? ». La réponse existe. Elle est dans les documents de l'autre porte.
Les Conditions d'utilisation existent en deux versions. Celle qui s'applique dans l'Espace économique européen désigne un autre cocontractant :
« OpenAI Ireland Ltd […] si vous résidez dans un pays de l'Espace Économique Européen (EEE) ou en Suisse »
Le second détail est plus discret, et il se trouve tout à la fin. Une Annexe relative à l'utilisation commerciale des Services dispose :
« Si vous utilisez nos Services à des fins commerciales ou professionnelles, les conditions suivantes s'appliquent. En cas de conflit entre l'Annexe relative à l'utilisation commerciale des Services et le reste des présentes Conditions, cette Annexe prévaut. »
Et cette annexe précise : « Les présentes Conditions sont régies par le droit californien », avec compétence exclusive des tribunaux de San Francisco — alors que le corps du texte européen renvoie au « droit de la juridiction dans laquelle vous résidez ».
Scanner le dépôt de son employeur avec son compte personnel, c'est un usage professionnel. C'est donc déclencher cette annexe, sans avoir changé de compte ni cliqué sur quoi que ce soit.
Et c'est là que le sens commun se retourne. On s'attendrait à ce que le contrat « entreprise » soit le plus américain des deux. C'est l'inverse. Le Contrat de Services définit ainsi les lois applicables :
« pour les Clients situés dans l'EEE, en Suisse ou au Royaume-Uni, les lois de l'Irlande ; et pour tous les autres Clients, les lois de l'État de Californie »
Et la juridiction compétente :
« pour les Clients établis dans l'EEE, en Suisse ou au Royaume-Uni, les tribunaux de Dublin, en Irlande »
Autrement dit : la porte professionnelle garde un client européen en Europe ; l'usage professionnel de la porte grand public l'envoie en Californie. Le même travail, le même outil, le même dépôt — et deux fors judiciaires séparés par neuf mille kilomètres, selon le bouton cliqué au moment de se connecter.
Ce n'est pas une clause cachée. Les deux textes sont publics, et chacun nomme l'autre. Il faut simplement les avoir ouverts tous les deux.
Nous n'écrivons pas qu'OpenAI récupère votre code, ni qu'il l'utilise pour entraîner ses modèles. Cela ne figure dans aucune des sources que nous avons lues, et ce serait leur faire dire plus qu'elles ne disent.
Deux limites, que nous préférons écrire que taire :
Nous n'avons pas établi techniquement ce que fait le bouton de connexion. Le paquet annonce une connexion via un compte ; aucune source ne nous dit si l'appel qui suit relève des services grand public ou d'un point d'accès rattaché au compte. C'est précisément le maillon qu'il ne faut pas franchir en devinant — et c'est pour cela que nous écrivons « selon le contrat applicable à votre compte » plutôt qu'une phrase plus spectaculaire.
Nous décrivons un état daté. Tout ceci a été relevé le 31 juillet 2026. Une politique se modifie ; une documentation se complète. Si vous lisez ce texte plus tard, les liens ci-dessus sont là pour que vous puissiez constater vous-même ce qui a changé.
La question se retourne, et elle doit se retourner. Nous éditons nous-mêmes un outil qui analyse du code.
POSITRONIA scanne en local, sur le poste. Notre audit d'un service en ligne, lui, s'exécute sur nos serveurs — parce qu'il interroge une adresse web publique, pas votre dépôt.
Puisque nous demandons cette précision aux autres, voici la nôtre, en entier : ce qui transite alors est l'adresse du service analysé, jamais votre code. L'analyse s'appuie sur un modèle Mistral (France), et la note qui en sort n'est pas produite par ce modèle : elle est calculée par nos propres règles, de façon déterministe. Le modèle rédige, il ne juge pas.
Ce sont deux gestes différents, avec deux trajets différents pour vos données, et c'est à nous de le dire clairement plutôt que de laisser le mot « souverain » faire le travail à notre place.
Nous n'avons aucune leçon à donner ici. Ce qui nous a intéressés dans ce cas n'est pas l'éditeur : c'est la forme du problème, et elle est commune à presque tous les outils d'IA qu'on installe aujourd'hui. La licence répond à « ai-je le droit de lire, modifier, redistribuer ce logiciel ? ». Elle ne répond jamais à « qu'advient-il de ce que je lui donne ? ». Ce sont deux questions distinctes, et une seule des deux figure dans le fichier LICENSE.
Le mot « open source » qualifie un artefact : le code qu'on vous montre. Il ne qualifie ni le service qui tourne à l'autre bout, ni le contrat que vous acceptez en vous y connectant.
Vérifier prend quelques minutes. Nous avons détaillé ailleurs les questions à poser, dans l'ordre, pour n'importe quel outil — et ce qu'on peut en conclure quand on est trois et sans service juridique.
Ce n'est pas un procès fait à un éditeur. C'est une habitude à prendre : avant de demander ce qu'un outil sait faire, demander sous quel contrat il le fait.