Sécurité, données clients et RGPD

Secrets, données personnelles, permissions et RGPD : comment installer un agent IA en sécurité, et ce qu’il ne doit jamais faire seul.

Porte de coffre-fort ronde en acier

Un agent est un programme qui détient vos clés, lit vos données clients et peut agir dans vos outils. Traitez-le comme une nouvelle recrue qui aurait accès à la production dès le premier jour : il reçoit le strict nécessaire, il ne voit jamais un secret en clair, et tout ce qui ne peut pas être annulé attend un humain. L’essentiel du travail de sécurité, c’est de la plomberie ennuyeuse faite une fois. Le reste tient en une courte liste d’actions dont vous décidez, par écrit, que l’agent ne les prendra jamais seul.

Rien de ce qui suit n’est un conseil juridique. Je décris comment je m’organise et ce que je vérifie ; c’est votre conseil qui décide de ce que votre entreprise a le droit de faire de ses données.

Gardez les secrets hors du contexte de l’agent

Un secret collé dans un prompt finit dans un historique de conversation, peut-être dans la rétention d’un fournisseur, et parfois dans un fichier que l’agent réécrit sur le disque. Ma règle : le modèle ne lit jamais une clé. Il appelle un outil, et c’est l’outil qui lit la clé dans l’environnement.

Où vont les secrets Où ils ne vont jamais
Variables d’environnement ou gestionnaire de secrets lu par l’outil Le fichier d’instructions ou un prompt
Un fichier .env listé dans .gitignore Les fichiers de configuration d’exemple versionnés
Des clés restreintes, une par agent ou par routine Une clé admin partagée réutilisée partout

Les clés restreintes paient le jour où quelque chose déraille : vous révoquez une clé et un seul agent s’arrête, au lieu de tout couper.

Ce qui m’a convaincu n’est pas une fuite. Pendant un temps, toute l’organisation d’agents qui fait tourner le marketing de Derrick (que j’ai cofondé) existait en un seul exemplaire, sur un seul ordinateur portable. Depuis novembre 2026, elle vit dans un dépôt privé, données clients exclues, avec un contrôle qui bloque le push si un secret apparaît. Une version minimale, sous forme de hook Git pre-push :

#!/bin/sh
# .git/hooks/pre-push : refuse le push si un fichier suivi semble contenir un secret
PATTERN='(sk-[A-Za-z0-9_-]{20,}|AKIA[0-9A-Z]{16}|-----BEGIN [A-Z ]*PRIVATE KEY-----)'
if git grep -nIE "$PATTERN" -- . ':!*.lock'; then
  echo "Possible secret found. Push blocked."
  exit 1
fi

Un scanner de secrets dédié reconnaît bien plus de motifs. L’intérêt est ailleurs : le contrôle tourne à chaque fois, sans que personne ait à y penser.

N’envoyez au modèle que les données dont la tâche a besoin

La plupart des tâches d’un agent n’ont besoin d’aucune donnée personnelle, et celles qui en ont besoin en utilisent rarement la totalité. Avant qu’un agent lise un export CSV, un dump de CRM ou un log, un script en produit un condensé : les colonnes utiles à la tâche, agrégées quand c’est possible, avec e-mails, numéros de téléphone et jetons remplacés. L’agent travaille sur le condensé. Il consomme moins de contexte, et un modèle ne peut pas répéter ce qu’il n’a jamais vu.

import re

EMAIL = re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+")
PHONE = re.compile(r"\+?\d[\d .-]{7,}\d")

def redact(text: str) -> str:
    text = EMAIL.sub("[email]", text)
    return PHONE.sub("[phone]", text)

Le masquage par expressions régulières n’attrape que l’évident : les noms et les notes libres passent au travers. Le meilleur réglage se fait donc en amont, en choisissant les colonnes qui sortent de la base. Ce que l’agent doit lire et où vit chaque fait sont traités dans le chapitre sur la mémoire et le contexte.

Quand des données personnelles doivent atteindre le modèle, comme en prospection, vérifiez trois points avec votre fournisseur et votre conseil : si les entrées servent à l’entraînement, combien de temps elles sont conservées, et où elles sont traitées. Ces réponses ont leur place dans votre registre des traitements, à côté de la base légale sur laquelle vous vous appuyez.

Ancienne porte de coffre de banque à barreaux

Donnez à chaque outil la plus petite permission qui suffit

Un agent peut faire tout ce que ses outils lui permettent. Le modèle de permissions vit donc dans les outils, pas dans le prompt. « Ne supprime rien » dans un fichier d’instructions est un souhait ; un outil sans point de suppression est une garantie. J’écris la politique de chaque agent dans un fichier qu’un relecteur peut lire :

agent: outbound_assistant
tools:
  crm:
    allow: [search_contacts, read_contact, create_note]
    deny: [delete_contact, merge_contacts, update_owner]
  sending_tool:
    allow: [read_campaigns, read_audience, add_lead_draft]
    deny: [launch_campaign, send_message]
  files:
    allow_read: [data/digests/]
    allow_write: [out/]
human_approval_required:
  - any action on more than 50 records
  - anything that sends, publishes, deletes or spends money

Si vous construisez votre propre connecteur, c’est là que la conception compte le plus : exposez des outils étroits avec des arguments explicites plutôt qu’un point d’entrée générique « exécuter une requête ». Construire son propre serveur MCP détaille comment dessiner ces outils.

Traitez tout ce que l’agent lit de l’extérieur comme une donnée, jamais comme une instruction. Une page web, un e-mail entrant ou une note CRM peuvent contenir un texte écrit pour piloter un modèle. La parade est structurelle : l’étape qui lit du contenu non fiable n’a aucun outil d’écriture, et sa sortie est un champ structuré que l’étape suivante valide.

Les actions qu’un agent ne prend jamais seul

Voici ma liste. Elle est courte exprès, pour être réellement appliquée.

Action Pourquoi elle attend un humain Ce que fait l’agent à la place
Envoyer un message à un prospect ou un client Votre nom, la réputation de votre domaine, votre exposition juridique Il rédige, un humain envoie
Publier un contenu Un fait faux reste indexé et cité Il ouvre un brouillon ou une pull request
Supprimer ou écraser des enregistrements Souvent irréversible Il liste ce qu’il changerait
Dépenser de l’argent ou des crédits au-delà d’un plafond Une boucle qui s’emballe démarre vite Il s’arrête et donne l’estimation
Modifier des permissions, des clés ou des intégrations Cela élargit ce que tous les autres agents peuvent faire Il rédige la demande

Les routines planifiées suivent la même règle : une routine propose, elle ne publie ni n’envoie sans exception écrite pour cette routine. L’un des vrais contrôles de notre flux de prospection est là : avant de pousser des leads vers l’outil d’envoi, l’agent vérifie qu’il n’écrase pas un lead déjà présent dans une campagne active. Faire tourner l’agent seul montre comment les routines vérifient leurs outils avant de démarrer.

Porte de coffre de dépôt de nuit

RGPD et AI Act : les questions à poser pour chaque agent

Les agents ne changent pas les règles sur les données personnelles. Ils permettent d’en traiter davantage, plus vite, ce qui fait mordre les règles existantes plus tôt. Les questions que je pose pour chaque agent qui touche des données personnelles :

Question Où se trouve la réponse
Quelles données personnelles l’agent lit, et pourquoi chaque champ lui est nécessaire La spécification et le fichier de politique de l’agent
Quelle base légale couvre ce traitement Votre registre des traitements, validé par votre conseil
Quels fournisseurs reçoivent les données, à quelles conditions Les accords de sous-traitance
Comment une personne peut s’opposer ou demander l’effacement, et comment l’agent le respecte Une liste d’opposition que l’agent lit avant chaque passage
Combien de temps les sorties sont conservées Une règle de conservation sur le dossier ou la table de sortie

En France, les ressources de la CNIL sur l’IA et sa page sur la prospection commerciale par courrier électronique sont les points de départ ; la page de la Commission européenne sur la protection des données couvre le RGPD lui-même. L’Union a aussi un règlement sur l’IA dont les obligations dépendent de l’usage et du niveau de risque ; la page de la Commission sur l’AI Act en présente le cadre. Je ne suis pas qualifié pour vous dire où se situe votre usage, et votre agent non plus. Si votre TAM est concerné, la logique d’opposition et de fraîcheur de maintenir le TAM à jour s’applique telle quelle.

Une revue d’une page avant le premier passage

Avant qu’un agent touche des données réelles, je remplis ce tableau et je le garde à côté du fichier d’instructions.

Contrôle Validé quand
Secrets Aucune clé dans les prompts ni dans le dépôt ; push bloqué sur un motif de secret
Clés Une clé restreinte par agent ; vous savez comment la révoquer
Données en entrée Liste des champs lus par l’agent, chacun justifié
Masquage Les condensés retirent coordonnées et jetons avant que le modèle les voie
Outils Listes d’autorisation et d’interdiction écrites ; aucun point d’écriture générique
Contenu non fiable Les étapes qui le lisent n’ont aucun outil d’écriture
Validations humaines Le tableau des actions ci-dessus, seuils chiffrés compris
Journal Chaque passage enregistre ce qu’il a lu, ce qu’il a modifié et qui a validé
Juridique Votre conseil a vu la liste des données et des fournisseurs

Votre prochaine étape : prenez l’agent que vous construisez, écrivez son fichier de politique avec ses listes d’autorisation et d’interdiction, et retirez-lui une permission dont il dispose aujourd’hui sans en avoir strictement besoin.