Wenn Sie Claude Code, Codex oder Cursor für Workflows verwenden, die echte APIs berühren, brauchen Agenten oft Anmeldeinformationen. Genau dort wird es riskant: API-Keys im Chat landen im Modellkontext, .env-Dateien können von Agent-Tools gelesen werden, und Shell-Kommandos können Secrets versehentlich ausgeben. Die bessere Umsetzung ist: Secrets bleiben im Passwortmanager und werden nur zur Laufzeit, eng begrenzt und ohne LLM-Kontextzugriff, an den benötigten Prozess übergeben.
Bitwardens Open-Source-Projekt Agent Access adressiert genau diesen Fall. Es besteht aus einem Protokoll zum Teilen von Anmeldeinformationen, einer CLI (aac) sowie Rust- und Python-SDKs. Damit bauen Sie einen verschlüsselten Tunnel zwischen Passwortmanager und Consumer auf: Agent, CI-Runner, Skript oder Remote-Prozess.
Der Consumer bekommt nur das Secret, das er explizit anfordert, zum Beispiel für eine Domain oder eine konkrete Tresorelement-ID. Er sieht nicht den vollständigen Tresor.
Dieser Leitfaden zeigt:
- wie Agent Access funktioniert
- wie Sie
aacinstallieren - wie Sie
aac connectundaac runverwenden - wie das Muster mit Claude Code, Codex und Cursor zusammenspielt
- wie es neben bestehende Secret-Hygiene-Muster aus Wie man API-Anmeldeinformationen von KI-Agenten sichert passt
Was Agent Access ist
Agent Access ist ein offenes Protokoll plus Referenzimplementierung von Bitwarden. Es ist so ausgelegt, dass auch andere Passwortmanager Provider implementieren können.
Die CLI aac erstellt einen Ende-zu-Ende-verschlüsselten Tunnel über das Noise-Protokoll.
Das Modell besteht aus zwei Rollen:
- Provider: Lauscht auf Verbindungsanfragen und entscheidet, welche Anmeldeinformationen zurückgegeben werden.
- Consumer: Verbindet sich mit dem Provider und fragt Credentials per Domain oder Tresorelement-ID an.
Der Consumer sieht nicht den vollständigen Tresor. Der Provider sieht nicht, was der Consumer anschließend mit dem Secret macht. Audit-Trails existieren auf beiden Seiten.
Wichtig: Agent Access befindet sich aktuell in der frühen Vorschau. Das Projekt-README weist darauf hin, dass APIs und Protokolle noch Änderungen unterliegen. Bitwarden empfiehlt außerdem ausdrücklich nicht, sensible Anmeldeinformationen direkt in LLMs oder KI-Agenten einzugeben.
Das empfohlene Muster ist stattdessen aac run: Secrets werden als Umgebungsvariablen in einen Kindprozess injiziert, ohne im Prompt, Transkript oder Agent-Kontext zu erscheinen.
Warum das relevant ist
KI-Programmieragenten lesen nicht mehr nur Code. Sie führen Tests aus, rufen APIs auf, deployen Anwendungen und interagieren mit CI/CD-Systemen. Dafür brauchen sie häufig Zugriff auf API-Keys, Tokens oder Passwörter.
Der Vorfall mit offengelegten API-Schlüsseln bei Postman zeigt, wie schnell schlechte Credential-Hygiene skaliert. Mit Agenten wird das Problem größer, weil Tools automatisiert Dateien lesen, Befehle ausführen und Ausgaben weiterverarbeiten.
Die bessere Regel lautet:
Geben Sie dem Agenten nicht mehr Vertrauen. Geben Sie ihm weniger Zugriff.
Agent Access setzt dieses Prinzip praktisch um:
- Credentials werden zur Laufzeit abgerufen.
- Der Zugriff ist auf Domain oder Tresorelement begrenzt.
- Die Übertragung ist verschlüsselt.
- Secrets müssen nicht in
.env, Shell-Historie oder Chat-Kontext landen.
Im Vergleich zu klassischen API-Key-Management-Tools ist Agent Access speziell auf Agenten-, Skript- und CI-Workflows zugeschnitten.
Installation
Wählen Sie das passende Binary für Ihre Plattform.
macOS Apple Silicon
curl -L https://github.com/bitwarden/agent-access/releases/latest/download/aac-macos-aarch64.tar.gz | tar xz
sudo mv aac /usr/local/bin/
macOS Intel
curl -L https://github.com/bitwarden/agent-access/releases/latest/download/aac-macos-x86_64.tar.gz | tar xz
sudo mv aac /usr/local/bin/
Linux x86_64
curl -L https://github.com/bitwarden/agent-access/releases/latest/download/aac-linux-x86_64.tar.gz | tar xz
sudo mv aac /usr/local/bin/
Windows x86_64
Laden Sie aac-windows-x86_64.zip von der neuesten Release-Seite herunter und entpacken Sie es in ein Verzeichnis in Ihrem PATH.
Prüfen Sie danach die Installation:
aac --help
Wenn die Bitwarden CLI (bw) ebenfalls in Ihrem PATH liegt, verwendet aac sie als Standard-Credential-Provider. Für lokale Experimente können Sie stattdessen den Demo-Provider verwenden:
aac --provider example --help
Schnellstart: Credentials koppeln und abrufen
Starten Sie zuerst den Listener auf dem Rechner, der Zugriff auf Ihren Tresor hat, typischerweise Ihr Laptop:
aac listen
Der Listener gibt ein Pairing-Token aus.
Auf der Consumer-Seite koppeln Sie sich mit diesem Token und fragen ein Secret für eine Domain ab:
aac connect --token <pairing-token> --domain github.com --output json
Beispielausgabe:
{
"credential": {
"notes": null,
"password": "alligator5",
"totp": null,
"uri": "https://github.com",
"username": "example"
},
"domain": "github.com",
"success": true
}
Diese JSON-Struktur können Sie in Skripten weiterverarbeiten.
Wenn Sie ein konkretes Tresorelement abrufen möchten, verwenden Sie --id:
aac connect --id <vault-item-id> --output json
Wichtig:
-
--domainund--idschließen sich gegenseitig aus. - TOTP-Codes werden über dieselbe Payload geliefert, wenn sie im Tresorelement konfiguriert sind.
aac run: Secrets sicher in Prozesse injizieren
aac connect ist nützlich, wenn Ihr Skript JSON parsen soll. Für Agenten-Workflows ist aber aac run meist das bessere Muster.
aac run ruft Credentials ab und startet anschließend einen Kindprozess. Die Secrets werden als Umgebungsvariablen injiziert.
Dadurch erscheinen sie nicht:
- in
stdout - in einer
.env-Datei - in der Shell-Historie
- im LLM-Kontext
- im Agent-Transkript
Einzelne Felder als Umgebungsvariablen setzen
aac run --domain example.com \
--env DB_PASSWORD=password \
--env DB_USER=username \
-- psql
In diesem Beispiel erhält der psql-Prozess:
DB_PASSWORD=<credential.password>
DB_USER=<credential.username>
Alle Felder injizieren
aac run --domain example.com --env-all -- ./deploy.sh
Mit --env-all werden Felder mit AAC_-Präfix gesetzt.
Defaults und Overrides kombinieren
aac run --domain example.com \
--env-all \
--env CUSTOM_PW=password \
-- ./deploy.sh
Verfügbare Felder sind:
usernamepasswordtotpurinotesdomaincredential_id
Beispiel: Deployment-Skript mit aac run
Statt einen API-Key in .env zu speichern:
# nicht ideal
API_KEY=sk_live_...
./deploy.sh
wickeln Sie das Deployment in aac run:
#!/usr/bin/env bash
set -euo pipefail
aac run --domain api.example.com \
--env API_KEY=password \
-- ./run-deploy.sh
run-deploy.sh kann dann wie gewohnt auf die Umgebungsvariable zugreifen:
#!/usr/bin/env bash
set -euo pipefail
curl -H "Authorization: Bearer $API_KEY" \
https://api.example.com/deploy
Der Agent sieht nur den Aufruf des Wrapper-Skripts. Der tatsächliche Wert von $API_KEY wird nur im Kindprozess verfügbar.
Das entspricht dem Isolationsprinzip aus Wie man API-Anmeldeinformationen von KI-Agenten sichert, aber mit einem konkreten Tool.
Python- und Rust-SDKs
Wenn ein CLI-Aufruf nicht ausreicht, können Sie Agent Access über SDKs einbetten.
Python
from agent_access import RemoteClient
client = RemoteClient("python-remote")
client.connect(token="ABC-DEF-GHI")
cred = client.request_credential("example.com")
print(cred.username, cred.password)
client.close()
Das Python-Modul basiert auf PyO3. Die Protokoll- und Kryptografie-Logik bleibt dadurch in Rust, während Sie eine Python-API verwenden.
Rust
Das Rust-SDK stellt dieselbe RemoteClient-Schnittstelle als Bibliothek bereit. Referenzimplementierungen finden Sie im Repository unter:
examples/rust-remote/
Das passt besonders gut für:
- CLI-Tools
- Build-Runner
- CI-Hilfsprogramme
- Dienste, die als kompilierte Binary verteilt werden
Für Teams, die bereits Secret-Backends einsetzen, passt Agent Access neben Integrationen wie HashiCorp Vault oder Azure Key Vault. Es ersetzt diese nicht zwingend, sondern ergänzt sie für Entwickler-Laptops, Agenten und CI-Runner.
Integration mit KI-Programmieragenten
Claude Code
Legen Sie ein Skript an, das Claude Code ausführen darf:
# deploy.sh
#!/usr/bin/env bash
set -euo pipefail
aac run --domain prod.example.com --env-all -- ./run-deploy.sh
Dann weisen Sie Claude Code an, ./deploy.sh zu verwenden, statt Secrets direkt im Prompt oder in Dateien zu erwarten.
Für GitHub Actions ist das Muster ähnlich:
-
aacim Runner installieren. - Den Runner mit einem Provider koppeln.
- Den eigentlichen CI-Schritt über
aac runstarten.
Die Claude Code GitHub Actions-Integration kann dadurch bereichsbezogene Credentials zur Jobzeit erhalten, ohne sie im Agentenkontext zu speichern.
OpenAI Codex
Für Codex funktioniert dasselbe Wrapper-Prinzip.
Statt Codex einen API-Key mitzuteilen, geben Sie dem Agenten nur das Skript:
./deploy.sh
Das Skript ruft intern aac run auf. Die Tool-Call-Schicht sieht den Befehl, aber nicht den Secret-Wert.
Der Beitrag Codex von Ihrem Telefon aus beschreibt die breitere Codex-Oberfläche; Agent Access ergänzt diesen Workflow um Credential-Isolation.
Cursor
Bei Cursor funktionieren Terminalbefehle und Composer-Workflows ebenfalls mit aac run-Wrappern.
Typisches lokales Setup:
aac listen
Dann im Projekt:
./scripts/test-staging.sh
wobei test-staging.sh intern so aussehen kann:
#!/usr/bin/env bash
set -euo pipefail
aac run --domain staging.example.com \
--env API_TOKEN=password \
-- npm test
Cursor kann den Test ausführen, ohne den API-Token im Editor, Prompt oder Chat zu sehen.
OpenClaw
Agent Access enthält eine offizielle OpenClaw-Fähigkeit. Im Repository befindet sich dafür eine SKILL.md.
Für Teams, die OpenClaw-ähnliche Fähigkeiten verwenden, ist das aktuell eine der direkteren Integrationen: Die Fähigkeit kennt die Protokollform, ruft Credentials ab und übergibt sie an nachgelagerte Tools.
Der OpenClaw API-Schlüssel-Leitfaden behandelt den größeren Kontext des Credential-Managements in diesem Ökosystem.
Sicherheitsmodell
Agent Access reduziert die Angriffsfläche, ersetzt aber keine vollständige Sicherheitsarchitektur.
Was Agent Access schützt
- Transport zwischen Consumer und Provider
Der Datenverkehr wird über das Noise-Protokoll-Framework Ende-zu-Ende-verschlüsselt.
- Zugriff auf den gesamten Tresor
Der Consumer fragt eine Domain oder Tresorelement-ID an. Er kann nicht einfach den gesamten Tresor auflisten.
- Secrets auf der Consumer-Festplatte
Mit aac run werden Secrets als Umgebungsvariablen in einen Kindprozess injiziert. Sie müssen nicht in .env-Dateien oder temporäre Dateien geschrieben werden.
- LLM-Kontext
Wenn Sie aac run korrekt einsetzen, sieht das Modell nur den Befehl, nicht den Wert des Secrets.
Was Agent Access nicht schützt
- Kompromittierte Consumer-Prozesse
Wenn der gestartete Prozess bösartig ist, kann er die ihm übergebenen Secrets trotzdem exfiltrieren.
- Kompromittierte Provider
Wenn der Passwortmanager oder Tresor selbst kompromittiert ist, hilft Agent Access nicht.
- Secrets im Prompt
Wenn Sie API-Keys direkt in das LLM-Kontextfenster kopieren, kann Agent Access das nicht rückgängig machen.
Die praktische Regel lautet daher:
Agent sieht Befehle.
Kindprozess sieht Secrets.
LLM sieht keine Secrets.
Beispielworkflow: Agent schreibt Code, Apidog testet die API
Ein realistischer Workflow für API-Teams sieht so aus:
- Agent implementiert Änderung
Claude Code, Codex oder Cursor erstellt einen PR mit einem neuen oder geänderten API-Endpunkt.
- CI startet Tests
Der Test-Runner ruft aac run auf, um den benötigten API-Key zur Laufzeit abzurufen.
- Apidog prüft den API-Vertrag
Apidog führt OpenAPI-Vertragstests als separaten CI-Schritt aus, ebenfalls über aac run.
Beispiel:
aac run --domain staging-api.example.com \
--env APIDOG_TOKEN=password \
-- ./run-apidog-contract-tests.sh
Das Ergebnis:
- Der Agent liefert Code.
- Apidog testet den Vertrag.
- Das Secret bleibt im Tresor und wird nur zur Laufzeit in den Testprozess injiziert.
Das breitere Playbook finden Sie unter Wie man KI-Agenten testet, die Ihre APIs aufrufen.
Einschränkungen und Warnungen
- Frühe Vorschau
APIs und Protokolle können sich ändern. Planen Sie bei produktiven Workflows Anpassungsaufwand ein.
- Bitwarden CLI als Standard-Provider
Der Standard-Provider ist bw. Installieren Sie die Bitwarden CLI oder verwenden Sie für Tests --provider example.
- Keine Konfigurationsdatei
Agent Access ist aktuell primär flag-gesteuert. Wiederkehrende Aufrufe sollten Sie in Skripte kapseln.
- Keine Secrets in Prompts
Auch mit Agent Access gilt: Kopieren Sie keine Anmeldeinformationen in Chatfenster oder Agentenanweisungen.
Häufig gestellte Fragen
Ist Agent Access kostenlos?
Ja. CLI, SDKs und Protokoll sind Open Source unter der Bitwarden-GitHub-Organisation. Wenn Sie Bitwarden als Tresor verwenden, gelten weiterhin die jeweiligen Bitwarden-Konditionen.
Funktioniert Agent Access mit anderen Passwortmanagern?
Das Protokoll ist herstellerneutral konzipiert. Die Referenzimplementierung unterstützt Bitwarden und enthält einen Beispiel-Provider. Andere Anbieter können eigene Provider implementieren.
Kann ich Agent Access ohne Passwortmanager testen?
Ja. Verwenden Sie den Demo-Provider:
aac connect --provider example --domain test.com --output json
Für produktive Workflows sollten Sie einen echten Provider verwenden.
Benötigt der Consumer Netzwerkzugriff?
Ja. Der Consumer muss den Provider-Listener erreichen. Lokale Setups funktionieren, wenn Listener und Consumer auf demselben Host laufen.
Wie unterscheidet sich das von einer .env-Datei?
Eine .env-Datei liegt auf der Festplatte, kann versehentlich eingecheckt werden und ist für Prozesse lesbar, die Zugriff auf das Projektverzeichnis haben.
aac run hält das Secret im Prozesskontext des gestarteten Kindprozesses und schreibt es nicht in eine Datei.
Ersetzt Agent Access HashiCorp Vault oder AWS Secrets Manager?
Nein. Unternehmens-Tresore bleiben für große Service-zu-Service-Secret-Architekturen relevant. Agent Access adressiert vor allem Entwickler-Laptops, Agenten-Workflows und CI-Runner.
Gibt es direkte Integrationen von Anthropic, OpenAI oder anderen Agent-Anbietern?
Nicht angekündigt. Das aktuelle Integrationsmodell ist: Skripte mit aac run kapseln. Direkte Unterstützung durch Agent-Anbieter wäre ein naheliegender nächster Schritt, ist aber aktuell nicht ausgeliefert.
Wo melde ich Fehler oder trage bei?
Im GitHub-Repository. Issues, Pull Requests und Protokolldiskussionen finden dort statt.
Jetzt ausprobieren
Starten Sie mit der kleinsten Ende-zu-Ende-Schleife:
aac listen
Dann in einem zweiten Terminal:
aac connect --provider example --domain test.com --output json
Wenn JSON zurückkommt, funktioniert der Grundpfad.
Danach:
- Demo-Provider durch
bwersetzen. - Ein echtes Skript mit
aac runkapseln. - Claude Code, Codex oder Cursor nur noch das Wrapper-Skript ausführen lassen.
- Keine API-Keys mehr in Prompts,
.env-Dateien oder Agent-Chats kopieren.
Kombinieren Sie Agent Access mit Apidog für API-Vertragstests: Der Tresor hält das Secret, Apidog prüft die API, der Agent liefert Code, und Anmeldeinformationen verlassen Ihre Maschine nicht im Klartext.

Top comments (0)