Le proxy désensibilisant : la couche de vérité

Un proxy désensibilisant s’intercale entre votre agent de code (Claude Code, Codex, Cursor, OpenCode) et le fournisseur de modèle (Anthropic, OpenAI, DeepSeek). Il inspecte le corps HTTP de la requête — messages, tool_calls JSON, pièces jointes — remplace les données sensibles par des jetons ou des faux déterministes, puis restaure les valeurs réelles dans la réponse. Le modèle ne voit jamais la donnée réelle. Le proxy est la dernière ligne avant Internet, y compris ce que les hooks ratent.


Solutions concrètes

ProxyCibleMécanismeLicence / lien
PrivAiTeClaude Code, Codex, tout client OpenAI-compatibleRedaction réversible des PII y compris dans les arguments d’outils JSON et le multimodal. Détection Presidio + privacy-filter. Zero télémétrieSelf-host, BSD-3 — GitHub
CoverCodex, Claude Code, Cursor, PiProxy bidirectionnel avec règles déclaratives : allow, placeholder, pseudonymize, mask, redact, block. Faux déterministes (IP, emails, UUID). Mapping en mémoire seule, TTLGo, binaire — GitHub
HamzaClaude Code, CodexMasque secrets et PII avant l’envoi. Détection : scanner de secrets + Presidio. Placeholders stables par requête (<EMAIL_482191>)Docker Compose — GitHub
fictaClaude Code, Codex, PiRedaction locale des secrets enregistrés (valeurs exactes) + détection best-effort des formes de secrets et PII. fail_closed par défautnpm — npmjs
privacy-guard-proxyClaude CodeMasque emails, noms, IBANs, clés API, IDs. Placeholders stables ([EMAIL_1], [IBAN_1]). Web UI + REST API intégrésDocker — Docker Hub
LiteLLM Sensitive Data RoutingÉquipe, multi-fournisseursNe masque pas : reroute. Dès qu’une donnée sensible apparaît, la session entière bascule vers un modèle on-premise (vLLM, Ollama). Session collante par défautPasserelle d’équipe — Docs

Le schéma minimal

text

Agent (Claude Code / Codex / OpenCode)
        │
        ▼
localhost:XXXX   proxy désensibilisant
        │        ├─ parse messages + tool_calls JSON
        │        ├─ détecte (secrets, PII, IBAN mod 97)
        │        ├─ remplace par jeton ou faux déterministe
        │        └─ fail closed si le moteur est down
        │
        ▼
Anthropic / OpenAI / DeepSeek / vLLM

Les deux modes de remplacement

  • Jeton stable : FR76… → <IBAN_1>. Le modèle apprend le tag et génère du code correct. Le transcript ne contient jamais l’IBAN réel.
  • Faux déterministe : même empreinte → toujours le même IBAN checksummé. Meilleure qualité pour les parseurs et les tests.

Règle d’or : si le proxy est arrêté, aucun appel ne doit partir. Échec fermé, pas échec ouvert.

Laisser un commentaire