Router

Router — Confidentialité et rétention

Ce que Router journalise (métadonnées vs contenu des prompts), durées de rétention, et l'option aucune-rétention par requête.

Router — Confidentialité et rétention

Ce que Router enregistre à chaque appel, combien de temps, et comment désactiver la persistance des prompts.

Journalisé par défaut

Donnée Où Contenu des prompts ? Rétention
Prompts original + redacté, détections Guard Table guard_audit (chiffrée au repos, Cloak AES-256-GCM) Oui (original + version redactée envoyée au modèle) 90 jours, purge automatique
Coût, modèle, latence, clé API, appelant Écritures comptables llm_usage (métadonnées : modèle, marge, latency_ms, generation_id, api_key_id, user_id, surface appelante) Non — métadonnées uniquement Comptable (conservée)
Durée d'appel, modèle, résultat Télémétrie [:meridian, :ai, :call] Non Agrégats métriques
IDs de requête, statuts, coûts, erreurs Logs applicatifs Non (par construction : IDs, statuts, coûts) Rotation standard
Requêtes bloquées par Guard guard_audit avec halted: true, prompt redacté remplacé par [HALTED BY GUARD] Original conservé chiffré pour audit 90 jours

Côté fournisseur : les appels transitent par OpenRouter avec un champ user pseudonymisé (org:<id>:user:<id>) — jamais d'email ni de nom.

Option aucune-rétention (par requête)

Ajoutez "no_retention": true au body — ou l'en-tête X-No-Retention: true — et Router :

  1. Ne persiste aucun prompt (aucune ligne guard_audit, y compris en cas de blocage Guard — la redaction reste appliquée en mémoire avant l'envoi) ;
  2. Demande au fournisseur de ne ni retenir ni entraîner (provider.data_collection = deny sur l'appel OpenRouter).
curl https://router.signalorange.ca/api/v1/chat/completions \
  -H "Authorization: Bearer $ROUTER_API_KEY" \
  -H "X-No-Retention: true" \
  -H "Content-Type: application/json" \
  -d '{"model":"auto","messages":[...]}'

Limites honnêtes :

  • La facturation reste tracée (montants, modèle, latence) — l'option porte sur les prompts, pas sur la comptabilité ;
  • Si le modèle demandé ne peut pas garantir l'absence de rétention/entraînement (catalogue : data_retention: "required"), Router refuse avec HTTP 400 retention_not_supported plutôt que de servir une garantie affaiblie ;
  • La garantie amont dépend du fournisseur : Router exige deny sur le fil, mais ne peut pas prouver cryptographiquement le comportement du fournisseur final.

Et après ?