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
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.
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"
}
}
}
}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)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.
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.
- 06Ce qu'il litOutil 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
- 07L'humainAucune 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
- 13Ce qu'il litMé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
- 14Ses actionsConsommation 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
- 16Ce qu'il litFuite 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
- 17Ses actionsDé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
- 20Le modèleDé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.