Masquage sur le poste · Supervision de flotte
Laissez l’IA utiliser des données qu’elle ne voit jamais.
Vos équipes utilisent déjà l’IA. Vos données, elles, n’ont pas à y aller.
Neverseen s’intercale entre les outils d’IA et les fournisseurs de LLM. Avant qu’une requête ne quitte le poste, les données sensibles sont remplacées par des sosies plausibles. Le modèle raisonne normalement. Quand la réponse revient, le coffre local rétablit les valeurs d’origine.
Sur le poste · La requête
Ce que reçoit le fournisseur · La requête
Sur le poste · La réponse
Ce que reçoit le fournisseur · La réponse
Les sosies ont la forme exacte de l’original et une somme de contrôle volontairement invalide : aucun NIR, IBAN ou numéro de carte généré ne peut désigner une personne réelle. Un secret, lui, ne reçoit jamais de sosie : il part toujours en jeton, même en mode sosie. C’est ce qui rend la restauration sûre — aucune valeur remise en place ne peut être confondue avec une clé vivante.
L’angle mort
Personne n’attend votre feu vert pour utiliser l’IA.
Un développeur lance Claude Code sur un dépôt entier. Un juriste colle un contrat dans un assistant. Un script de support résume la file de tickets de la nuit. Chacune de ces actions envoie du texte en clair à un fournisseur tiers, depuis un poste que votre passerelle d’entreprise ne voit pas.
Les passerelles centralisées protègent les applications que vous avez construites. Elles ne protègent pas ce qu’un collaborateur lance depuis son terminal — et c’est précisément là que se trouvent les données les plus fraîches et les moins filtrées de l’entreprise.
Ce qui part réellement, aujourd’hui
- Des extraits de code, avec les variables d’environnement et les clés qu’ils contiennent.
- Des dossiers clients nominatifs collés dans un prompt pour « gagner du temps ».
- Des journaux d’incident où figurent adresses, identifiants et numéros de compte.
Interdire l’IA ne résout rien : cela déplace l’usage vers les comptes personnels, où vous ne voyez plus rien du tout.
Le mécanisme
Quatre étapes, sur le poste, avant que quoi que ce soit ne parte.
- 01
Détecter
Un catalogue de motifs ordonné reconnaît coordonnées, identifiants nationaux — France, Royaume-Uni, États-Unis — et secrets. Partout où une clé de contrôle existe, elle décide seule : NIR, SIREN, SIRET, IBAN, carte bancaire, numéro NHS, routage ABA sont vérifiés, pas devinés.
- 02
Substituer
Chaque valeur reçoit un sosie stable : même forme, même longueur, contenu inattribuable par construction. Domaines et plages d’adresses réservés, sommes de contrôle délibérément fausses, indices jamais tirés au hasard.
- 03
Laisser le modèle travailler
Le prompt reste de la prose lisible. Le modèle raisonne sur une histoire cohérente, pas sur des blocs noircis : c’est ce qui sépare le masquage de la simple suppression, et ce qui rend la réponse utilisable.
- 04
Restaurer
La réponse repasse par le coffre chiffré local et retrouve les valeurs d’origine, ligne à ligne y compris en flux. Le contenu sensible n’a jamais quitté le poste.
L’invariant
Voici l’intégralité de ce qui remonte au SaaS.
Pas un extrait choisi pour la brochure : la totalité du message qu’un agent envoie. Une fenêtre de cinq minutes, l’état qu’il applique vraiment, et rien d’autre.
- Aucun prompt, aucune réponse, aucune valeur détectée — pas même tronquée. Ni nom de fichier, ni URL.
- Deux exceptions, écrites ici plutôt que découvertes dans une base. La première : les adresses IP locales du poste. Ce n’est pas du contenu — rien du trafic n’y transite — mais une adresse identifie une machine, donc quelqu’un. Elle est là parce qu’une vue de flotte sans elle ne sert à rien : « ag_7f3c1a9e est silencieux » n’envoie personne nulle part, « le portable en 10.4.2.87 est silencieux » envoie quelqu’un à un bureau.
- La seconde, plus directe et assumée comme telle : le nom que le poste se donne. Un poste porte souvent le nom de la personne qui s’en sert, si bien que « marie-macbook » désigne quelqu’un là où une adresse ne désigne qu’une machine. C’est précisément pour cela qu’il remonte : c’est l’identifiant qu’un exploitant reconnaît déjà, et le seul qui survive à un portable qui change de réseau. Il est transmis tel que le système d’exploitation le donne, jamais résolu et jamais haché — hacher conserverait la donnée personnelle et perdrait l’usage.
- L’état dit ce que l’agent applique, pas ce qu’un fichier prévoit : catégories désactivées, niveau de secret, locales chargées. Un agent chargé de trois locales qui a cessé de masquer les courriels se voit ici, alors qu’une console lisant la seule configuration l’afficherait au vert. Il dit aussi comment l’agent lui-même est exposé : console en clair, échanges écrits sur disque, écoute au-delà de la boucle locale, fournisseur dérouté, valeurs exemptées.
- Les compteurs décrivent le contrôle autant que le trafic : requêtes refusées faute de pouvoir lire le corps, fenêtres perdues au-delà du tampon, réponses restaurées morceau par morceau. Ils portent aussi l’inventaire que rien d’autre ne donne — quels outils d’IA tournent sur les postes, quels fournisseurs répondent et comment, et ce que les modèles ont demandé au poste d’exécuter : combien d’appels d’outils, combien ont reposé une valeur que le modèle n’a jamais vue, et de quelle classe étaient les commandes. Des mots de vocabulaires fermés, jamais les arguments.
- Le contrat de télémétrie est public et versionné, et un test parcourt le type lui-même pour refuser tout champ de texte qui n’a pas été justifié, ligne à ligne. L’invariant est vérifié à chaque build, pas promis en avant-vente.
POST /v1/heartbeat
{
"schema": 2,
"agent_id": "ag_7f3c1a9e",
"sent_at": "2026-08-25T10:35:00Z",
"state": {
"version": "1.4.2",
"platform": "darwin/arm64",
"started_at": "2026-08-25T08:02:11Z",
"locales": ["fr", "gb"],
"substitution": "fake",
"providers": ["anthropic", "openai"],
"addresses": ["10.4.2.87"],
"hostname": "poste-47.exemple",
"masking": "partial",
"switched_off": ["DOB"],
"secret_level": "medium",
"console": false,
"tracing": false,
"exposed": false,
"rerouted": [],
"allowlisted": 12
},
"buckets": [
{
"window": {
"start": "2026-08-25T10:30:00Z",
"end": "2026-08-25T10:35:00Z"
},
"counters": {
"requests": 412,
"masked": {
"EMAIL": 138, "PHONE": 61, "NIR": 4,
"IBAN": 12, "SIREN": 27, "SECRET_ANTHROPIC_KEY": 9
},
"models": {
"claude-opus-5": {
"input": 84900, "output": 96430,
"cache_write": 21400, "cache_read": 1200000
},
"gpt-5.2": { "input": 210400, "output": 18220 }
},
"restarts": 1,
"dropped": 0,
"refused": 1,
"providers": { "anthropic": 380, "openai": 32 },
"upstream": {
"ok": 404, "rate_limited": 5, "rejected": 2,
"failed": 1, "unreachable": 0
},
"clients": { "claude-code": 371, "openai-sdk": 32, "cursor": 8, "other": 1 },
"policy": { "applied": 1, "refused": 0 },
"degraded": 1,
"sessions": {
"active": 6, "opened": 2, "closed": 3,
"duration": [0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0],
"requests": [0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
"input": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0],
"output": [0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0],
"tool_calls": [1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
"masked": [0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
},
"tools": {
"calls": 96, "restored": 7,
"names": { "Bash": 54, "Read": 31, "mcp": 8, "other": 3 },
"programs": { "git": 21, "grep": 14, "python3": 6, "other": 13 },
"classes": { "network": 3, "privilege": 1 }
}
}
}
]
}ISO/IEC 27001:2022
Ce que l’auditeur demandera, et ce que vous lui montrerez.
Un contrôle ne vaut que s’il existe, qu’il tourne, et que vous pouvez le prouver. Neverseen couvre les trois.
| Contrôle | Attente de l’auditeur | Ce que vous montrez |
|---|---|---|
| A.8.12 — Prévention de la fuite de données | Une mesure DLP existe sur le canal IA. | L’agent, installé et actif sur chaque poste. |
| A.8.16 — Activités de surveillance | Vous savez que la mesure tourne réellement. | Vue de flotte en temps réel et alerte sur agent silencieux. |
| A.8.15 — Journalisation | Des journaux opposables : horodatés, intègres, exportables. | Journal de preuve chaîné par hachage, export CSV et JSONL. |
| A.5.36 — Conformité aux politiques | Chaque poste applique bien la politique décidée. | Version, locales, mode de substitution et catégories réellement masquées, à chaque battement. |
| A.5.19 à A.5.23 — Fournisseurs et services cloud | Le sous-traitant est identifié et auditable. | Hébergement dans l’Union européenne, et un backend qui ne reçoit aucun contenu. |
Modèle
L’agent est gratuit. C’est la preuve qui se paie.
Protéger un poste ne devrait pas se facturer. Ce qui a un coût, c’est de démontrer à un auditeur que les douze postes de votre équipe appliquent la même politique depuis six mois.
Vos équipes peuvent enfin utiliser l’IA avec leurs vraies données.
Sans avoir à les confier aux modèles.
Protect locally. Monitor centrally. Prove continuously.