Aller au contenu

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

Rédige une réponse au ticket #4821.
 
Courriel : c.duverger@vertuo-ind.fr
Téléphone : 06 42 88 17 03
NIR : 2 85 03 75 116 001 42
Société : VERTUO (SIREN 812 445 903)
IBAN : FR76 3000 4008 2812 3456 7890 143
 
Le prélèvement a échoué et notre webhook renvoie 401
avec la clé sk-ant-api03-9Qv2Lm4T8xR1nB7cKp0eZ.
1Masquage

Ce que reçoit le fournisseur · La requête

Rédige une réponse au ticket #4821.
 
Courriel : m.lefeuvre@example.net
Téléphone : 06 39 00 12 47
NIR : 1 74 11 42 903 774 09
Société : VERTUO (SIREN 552 100 554)
IBAN : FR76 9999 9000 0112 3456 7890 154
 
Le prélèvement a échoué et notre webhook renvoie 401
avec la clé [SECRET_ANTHROPIC_KEY_1].
2Le modèle répond

Sur le poste · La réponse

Bonjour,
 
Le prélèvement sur le compte FR76 3000 4008 2812 a été
rejeté. Nous vous avons écrit à c.duverger@vertuo-ind.fr.
 
Le code 401 de votre webhook indique que la clé
sk-ant-api03-9Qv2Lm4T8xR1nB7cKp0eZ a été révoquée : régénérez-la.
3Restauration

Ce que reçoit le fournisseur · La réponse

Bonjour,
 
Le prélèvement sur le compte FR76 9999 9000 0112 a été
rejeté. Nous vous avons écrit à m.lefeuvre@example.net.
 
Le code 401 de votre webhook indique que la clé
[SECRET_ANTHROPIC_KEY_1] a été révoquée : régénérez-la.
 Donnée d’origine Sosie

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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ôleAttente de l’auditeurCe que vous montrez
A.8.12 — Prévention de la fuite de donnéesUne mesure DLP existe sur le canal IA.L’agent, installé et actif sur chaque poste.
A.8.16 — Activités de surveillanceVous savez que la mesure tourne réellement.Vue de flotte en temps réel et alerte sur agent silencieux.
A.8.15 — JournalisationDes journaux opposables : horodatés, intègres, exportables.Journal de preuve chaîné par hachage, export CSV et JSONL.
A.5.36 — Conformité aux politiquesChaque 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 cloudLe sous-traitant est identifié et auditable.Hébergement dans l’Union européenne, et un backend qui ne reçoit aucun contenu.
Lire la page RSSI

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.

Bêta privée

Demander un accès bêta

Nous ouvrons par vagues, une dizaine de flottes à la fois. Réponse sous deux jours ouvrés.