DEV Community

Cover image for Bitwarden Agent Zugriff: Sichere Freigabe von Vault Zugangsdaten für KI-Coding-Agenten
Emre Demir
Emre Demir

Posted on • Originally published at apidog.com

Bitwarden Agent Zugriff: Sichere Freigabe von Vault Zugangsdaten für KI-Coding-Agenten

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.

Teste Apidog noch heute

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:

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.

Agent Access Architektur

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/
Enter fullscreen mode Exit fullscreen mode

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/
Enter fullscreen mode Exit fullscreen mode

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/
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Schnellstart: Credentials koppeln und abrufen

Starten Sie zuerst den Listener auf dem Rechner, der Zugriff auf Ihren Tresor hat, typischerweise Ihr Laptop:

aac listen
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Beispielausgabe:

{
  "credential": {
    "notes": null,
    "password": "alligator5",
    "totp": null,
    "uri": "https://github.com",
    "username": "example"
  },
  "domain": "github.com",
  "success": true
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Wichtig:

  • --domain und --id schließ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
Enter fullscreen mode Exit fullscreen mode

In diesem Beispiel erhält der psql-Prozess:

DB_PASSWORD=<credential.password>
DB_USER=<credential.username>
Enter fullscreen mode Exit fullscreen mode

Alle Felder injizieren

aac run --domain example.com --env-all -- ./deploy.sh
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Verfügbare Felder sind:

  • username
  • password
  • totp
  • uri
  • notes
  • domain
  • credential_id

Beispiel: Deployment-Skript mit aac run

Statt einen API-Key in .env zu speichern:

# nicht ideal
API_KEY=sk_live_...
./deploy.sh
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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()
Enter fullscreen mode Exit fullscreen mode

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/
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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:

  1. aac im Runner installieren.
  2. Den Runner mit einem Provider koppeln.
  3. Den eigentlichen CI-Schritt über aac run starten.

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Dann im Projekt:

./scripts/test-staging.sh
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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

  1. Transport zwischen Consumer und Provider

Der Datenverkehr wird über das Noise-Protokoll-Framework Ende-zu-Ende-verschlüsselt.

  1. Zugriff auf den gesamten Tresor

Der Consumer fragt eine Domain oder Tresorelement-ID an. Er kann nicht einfach den gesamten Tresor auflisten.

  1. 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.

  1. 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.
Enter fullscreen mode Exit fullscreen mode

Beispielworkflow: Agent schreibt Code, Apidog testet die API

Ein realistischer Workflow für API-Teams sieht so aus:

  1. Agent implementiert Änderung

Claude Code, Codex oder Cursor erstellt einen PR mit einem neuen oder geänderten API-Endpunkt.

  1. CI startet Tests

Der Test-Runner ruft aac run auf, um den benötigten API-Key zur Laufzeit abzurufen.

  1. 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Dann in einem zweiten Terminal:

aac connect --provider example --domain test.com --output json
Enter fullscreen mode Exit fullscreen mode

Wenn JSON zurückkommt, funktioniert der Grundpfad.

Danach:

  1. Demo-Provider durch bw ersetzen.
  2. Ein echtes Skript mit aac run kapseln.
  3. Claude Code, Codex oder Cursor nur noch das Wrapper-Skript ausführen lassen.
  4. 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)