Documentation du prototype

Le périmètre. Les preuves. Les limites.

Les contrôles dépendent de l’intégration choisie. Cette page conserve les scénarios publiés et le détail technique du POC.

Comment ça marche

Un point de contrôle sur chaque action

Agent IA
Assistant, copilote ou workflow autonome
xSOM AI Guard
Politique · Validation humaine · Audit
Vos outils & systèmes
CRM, email, base de données, API internes

1 · Classer

Chaque appel d'outil est classé : lecture, écriture, envoi externe ou irréversible.

2 · Décider

Une politique déterministe l'autorise, la bloque, ou la met en attente d'un humain.

3 · Prouver

Chaque décision est chaînée par hash dans un journal immuable et exportable.

Trois voies d'entrée. Elles n'offrent pas la même garantie, et nous disons laquelle.

Classées par ce qu'elles peuvent promettre, la plus forte d'abord. La différence n'est pas un détail d'intégration : elle décide si une action refusée peut malgré tout avoir lieu.

01

Passerelle MCP

Garantie · Contraignante : nous exécutons, ou nous n'exécutons pas

La passerelle s'intercale entre votre agent et ses serveurs d'outils. Un appel refusé n'atteint jamais l'aval, parce que l'appel passe par nous. Rien dans l'agent n'a à coopérer, et c'est pourquoi c'est la seule voie que nous qualifions de contraignante.

La passerelle stdio ne lit que deux variables. Tout autre nom livre un extrait qui ne peut pas fonctionner, donc ce bloc reproduit le runtime à la lettre.

Ce que vous collez · JSON
{
  "mcpServers": {
    "xsom-ai-guard": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/xsom-ai-guard",
        "python",
        "-m",
        "gateway.server"
      ],
      "env": {
        "XSOM_TENANT_TOKEN": "<votre-jeton-de-passerelle>",
        "DATABASE_URL": "postgresql://<user>:<password>@<host>:5432/<db>?sslmode=require"
      }
    }
  }
}
02

POST /v1/authorize

Garantie · Coopérative : votre agent honore le verdict

Un appel HTTP avant d'exécuter un outil, dans n'importe quel langage. Nous rendons un verdict ; votre code décide de l'honorer. C'est une vraie différence avec la passerelle, et prétendre le contraire serait exactement le genre d'affirmation que ce produit existe pour refuser. À employer quand vous maîtrisez le code de l'agent.

Ce que vous collez · Python
import requests

XSOM_API = "https://api.votre-deploiement.example"
XSOM_KEY = "<votre-jeton-de-passerelle>"

def allowed(tool: str, arguments: dict) -> bool:
    r = requests.post(
        f"{XSOM_API}/v1/authorize",
        headers={"X-Gateway-Token": XSOM_KEY},
        json={"tool": tool, "arguments": arguments},
        timeout=30,
    )
    # "allow" -> run it | "hold" -> wait for human approval | "deny" -> blocked
    return r.json().get("decision") == "allow"

# Before your agent executes any tool:
if allowed("crm.delete_contact", {"id": 42}):
    crm.delete_contact(id=42)
03

Proxy du fournisseur LLM

Garantie · Contraignante sur l'egress, sans code

Pointez le base_url d'un SDK sur xSOM. Chaque prompt et chaque appel d'outil du modèle est inspecté en sortie. Votre clé fournisseur est relayée et jamais stockée. Rien d'autre ne change dans votre pile.

Ce que vous collez · Python
# Zero-code monitoring — point the OpenAI SDK at xSOM.
# Your OpenAI key is still used and forwarded upstream (never stored).
# The gateway token is in the base_url, so no extra header is needed.
from openai import OpenAI

client = OpenAI(
    base_url="https://api.votre-deploiement.example/proxy/openai/<votre-jeton-de-passerelle>/v1",
    api_key="<your OpenAI key>",  # forwarded upstream, never stored by xSOM
)
# Use the client exactly as before — xSOM audits every tool-call it makes.

Remplacez le paramètre fictif par le jeton de passerelle que la console affiche une seule fois, à la création. Seule son empreinte SHA-256 est conservée.

Ce sont les extraits que l'assistant d'intégration vous remet. Une page publique qui enseignerait autre chose enseignerait ce qui ne marche pas.

Le relevé

Les principales menaces cyber IA

Une requête parcourt une chaîne : l'invite qu'elle reçoit, les données qu'elle lit, le modèle qui répond, les actions qu'elle déclenche, l'humain qui valide. Une menace existe à chaque maillon, et c'est le maillon qui décide de ce qu'elle peut coûter. Cliquez un maillon pour voir ses menaces.

Cette passerelle tient le maillon où l'agent agit.

Comment utilisez-vous l'IA ?

Cochez votre situation. Les comptes sont recalculés par le moteur que le produit utilise.

Rien de coché : toutes les lignes sont montrées, aucune n'est présentée comme la vôtre.

  1. 06
    La fiche validée est réécrite hors contrôle : le modèle lit la v2 et rappelle l'outil. contrôle Serveur v1 validée Modèle v2 piégée Ce qu'il lit
    Outil piégé ou description empoisonnéeUn serveur d'outils décrit ce qu'il sait faire, et le modèle lit cette description. Piégez le texte, ou changez-le discrètement après validation, et l'outil ne fait plus ce qu'il annonçait.pas encore évaluée
  2. 07
    L'agent agit sous l'identité de l'humain : le journal ne distingue plus qui a agi. Humain Agent même identité Journal moi@corp moi@corp L'humain
    Aucune attribution : l'agent agit sous votre identitéL'agent emprunte les accès d'un humain. Après coup, rien ne distingue ce qu'il a fait de ce que la personne a fait.pas encore évaluée
  3. 13
    Une seule note empoisonnée écrite dans la mémoire, relue à chaque réveil de session. note piégée Jour 1 Jour 2 Jour 30 Mémoire gardée Ce qu'il lit
    Mémoire d'agent empoisonnéeL'agent garde des notes entre deux sessions. Un ordre glissé dedans revient à chaque réveil, longtemps après l'attaque.pas encore évaluée
  4. 14
    Une boucle agent-modèle sans frein relance sans fin et franchit le plafond de coût. Agent Modèle relance sans fin plafond coût Ses actions
    Consommation incontrôléeUne boucle, ou un attaquant, fait tourner le modèle sans fin. Ce n'est pas une panne, c'est une facture.pas encore évaluée
  5. 16
    Index vectoriel partagé : la requête de B, sans filtre de tenant, lit la partition de A. Index vectoriel Tenant A Tenant B Client B Requête sans filtre Ce qu'il lit
    Fuite entre clients dans la base vectorielleUne même base de documents sert plusieurs clients. Une recherche mal cloisonnée rend le document du voisin.pas encore évaluée
  6. 17
    Le mandat n'est vérifié qu'au premier agent : la suite agit sans donneur d'ordre. mandat vérifié Humain Agent 1 Agent n au nom de qui ? Ses actions
    Délégation en cascade entre agentsUn agent en appelle un autre, qui en appelle un troisième. Personne ne vérifie plus au nom de qui la dernière action est faite.pas encore évaluée
  7. 20
    Même consigne : le modèle passe de v1 à v2 sans signal ; l'attendu cède à la dérive. Consigne Modèle v1 Attendu Consigne Modèle v2 Dérive Le modèle
    Dérive silencieuse après mise à jour du modèleLe fournisseur change de version. Les mêmes consignes ne donnent plus le même comportement, et rien ne le signale.pas encore évaluée

Une rangée sans numéro de relevé n'est pas un oubli : la carte de couverture n'admet une revendication que prouvée par un scénario qui passe, et en inscrire une sans preuve serait exactement l'affirmation que ce produit refuse de faire.

Relevé généré depuis la suite de tests passante le 2026-09-06 13:01 UTC, commit 09d8e08. Rien ici n'est écrit à la main.


Et, tout aussi clairement, pour qui ce n'est pas.

Le marché vous vend toutes les lignes de menace parce qu'il le peut. Plusieurs appartiennent à l'éditeur qui entraîne votre modèle, ou au SOC que vous payez déjà. Le dire à voix haute n'est pas une concession, c'est ce qui rend le reste croyable.


Ce qui deviendrait la vôtre, et quand

Ces lignes ne sont pas les vôtres aujourd'hui. Chacune nomme la condition qui les ferait basculer. C'est une date de votre feuille de route, pas un scénario que nous avons inventé.

Cochez un profil ci-dessus et cette liste se remplit depuis le moteur.