1Password CLI
Befolgen Sie die offiziellen CLI-Erste-Schritte-Schritte. Erraten Sie keine Installationsbefehle.
Referenzen
references/get-started.md(Installation + App-Integration + Anmeldeablauf)references/cli-examples.md(echteop-Beispiele)
Arbeitsablauf
- Betriebssystem + Shell ermitteln.
- Vorhandensein der CLI prüfen:
op --version. - Den vom Benutzer eingerichteten Authentifizierungsmodus erkennen:
- Service-Account:
OP_SERVICE_ACCOUNT_TOKENist gesetzt (typisch für Headless-Setups, CI, Gateways). - Desktop-App-Integration: Die 1Password Desktop-App läuft mit aktivierter CLI-Integration (typisch auf macOS / Windows / Linux Desktops).
- Standalone-Anmeldung: Weder das eine noch das andere –
op signinwird bei jeder Sitzung nach einem Kontopasswort fragen.
- Service-Account:
opentsprechend dem Authentifizierungsmodus ausführen (siehe unten).- Zugriff überprüfen:
op whoamisollte erfolgreich sein, bevor ein Secret gelesen wird. - Bei mehreren Konten:
--accountoderOP_ACCOUNTverwenden.
op pro Authentifizierungsmodus ausführen
Service-Account (bevorzugt für Headless-/Gateway-Nutzung)
Direkte Ausführung. Kein tmux, kein Anmeldeschritt.
export OP_SERVICE_ACCOUNT_TOKEN="ops_..."
op vault list
op read op://app-prod/db/password
Desktop-App-Integration
Direkte Ausführung. Nicht in tmux verpacken – die Desktop-App-Integration verwendet einen benutzerspezifischen IPC-Kanal, der für die Ausführungsumgebung des Gateways eingerichtet ist, aber von tmux-Subshells, die in einem anderen Umgebungskontext laufen, nicht immer zuverlässig erreicht werden kann. Der Transport unterscheidet sich je nach Plattform (XPC über den 1Password Browser Helper auf macOS, ein Unix-Domain-Socket auf Linux, eine Named Pipe auf Windows); die praktische Regel für einen Agenten ist auf allen drei gleich: op direkt ausführen. Auf macOS ist ein nützlicher Symptomindikator der 1Password Integrations-Container in ~/Library/Group Containers/2BUA8C4S2C.com.1password/t/.
op vault list # kann beim ersten Aufruf Touch ID / Windows Hello / Systemauthentifizierung auslösen
op whoami
Wenn ein Aufruf 1Password CLI konnte keine Verbindung zur 1Password Desktop-App herstellen zurückgibt, nicht zu tmux wechseln. Bestätigen, dass die Desktop-App läuft und entsperrt ist, dann die direkte Ausführung wiederholen.
Standalone-Anmeldung (keine App, interaktives Passwort)
Dies ist der einzige Modus, in dem tmux hilft. op signin gibt einen eval-artigen Export aus, der ein OP_SESSION_*-Token für POSIX-Shells setzt; spätere Befehle in derselben Shell werden durch diese Umgebungsvariable authentifiziert. Die befehlsweisen Shells des Gateways verlieren diesen Zustand zwischen den Aufrufen, daher hält ein persistenter tmux-Bereich das Sitzungstoken am Leben – aber nur, wenn der Export tatsächlich mit eval in einer POSIX-Shell angewendet wird. Das Senden von op signin als einfachen Befehl hinterlässt die Ausgabe lediglich im Bereich und op whoami wird fehlschlagen.
Der tmux-Ablauf ist nur auf macOS/Linux-Hosts sinnvoll, auf denen die tmux-Fähigkeit verfügbar ist. Das Beispiel öffnet absichtlich /bin/sh, damit die POSIX-Ausgabe eval "$(op signin ...)" selbst dann gültig ist, wenn die normale Shell des Benutzers fish ist. Unter Windows ist die Desktop-App-Integration oder die Service-Account-Authentifizierung zu bevorzugen. Wenn der Benutzer nur eine interaktive Standalone-Anmeldung unter Windows hat, anhalten und ihn bitten, einen persistenten PowerShell-Sitzungsmechanismus bereitzustellen oder auf Desktop-Integration/Service-Account-Authentifizierung umzusteigen; die tmux-Befehle nicht direkt übersetzen.
SOCKET_DIR="${OPENCLAW_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/openclaw-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
chmod 700 "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/openclaw-op.sock"
SESSION="op-auth-$(date +%Y%m%d-%H%M%S)"
tmux -S "$SOCKET" new -d -s "$SESSION" -n shell /bin/sh
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'eval "$(op signin --account my.1password.com)"' Enter
tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -40
Keine Folge-Befehle in die Warteschlange stellen, während die Anmeldung zur Eingabe auffordert. Den Bereich mit capture-pane abfragen, bis die Anmeldung entweder abgeschlossen ist und die Shell-Eingabeaufforderung zurückgekehrt ist, oder eindeutig auf Benutzereingabe wartet. Wenn die Eingabeaufforderung ein Passwort, MFA oder eine Kontowahl erfordert, anhalten und den Benutzer bitten, die Anmeldung in seinem eigenen Terminal abzuschließen; ihm die Socket- und Sitzungswerte geben, damit er lokal anhängen kann. Der Agent sollte tmux attach nicht von exec aus ausführen, da attach das aktuelle TTY verbraucht und die Skriptsteuerung von send-keys / capture-pane verhindert.
Nachdem die Shell-Eingabeaufforderung zurückgekehrt ist, überprüfen, indem die Prüfungen in denselben Bereich gesendet werden:
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op whoami' Enter
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op vault list' Enter
tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -80
Die tmux-Sitzung laufen lassen, damit spätere op read / op run-Befehle dieselbe authentifizierte Shell wiederverwenden.
Dieselben SOCKET- und SESSION-Werte für jeden Folge-Befehl in diesem Standalone-Anmeldeablauf verwenden. Das Flag -S "$SOCKET" wählt den tmux-Server-Socket; ihn in einem benutzereigenen 0700-Verzeichnis aufbewahren, nicht zwischen Benutzern teilen und für jeden neuen Anmeldeversuch einen neuen Sitzungsnamen wählen.
Browser-Anmeldung (1Password für Claude)
Wenn die Sitzung Claude in Chrome-Anmeldeinformationen-Tools (request_credentials, autofill_credential, enter_verification_code) bereitstellt, diese gegenüber op für die Anmeldung bei Websites bevorzugen: 1Password füllt die Seite direkt aus und das Secret gelangt nie in den Kontext. Regeln:
- Jeden benötigten Credential in einem
request_credentials-Aufruf anfordern, bevor navigiert wird. - Die Genehmigung ist eine 1Password-Aufforderung auf dem Gateway-Host. Wenn sie aussteht, dem Benutzer mitteilen, auf welchem Host er entsperren soll („1Password wartet auf Genehmigung auf diesem Mac“), anstatt es erneut zu versuchen.
- Niemals den Benutzer bitten, Passwörter oder Einmalcodes über den Chat zu senden; Codes nur über
enter_verification_codeverwenden. - Nicht auf
op readfür ein Website-Passwort zurückfallen, nur weil der Browser-Ablauf eine Genehmigung benötigt; das untergräbt das Design der Nicht-Exposition.opfür Secrets verwenden, die von Befehlen und Konfigurationen verbraucht werden, nicht für Web-Anmeldungen, wenn der Browser-Ablauf existiert.
Leitplanken
- Niemals Secrets in Logs, Chat oder Code einfügen.
op run/op injectgegenüber dem Schreiben von Secrets auf die Festplatte bevorzugen.- Wenn eine Anmeldung ohne App-Integration erforderlich ist, zuerst
op account addverwenden. - Wenn ein Befehl „account is not signed in“ zurückgibt:
- Service-Account:
OP_SERVICE_ACCOUNT_TOKENerneut exportieren - Desktop-App: bestätigen, dass die App läuft und die Integration aktiviert ist
- Standalone:
op signininnerhalb derselben tmux-Sitzung erneut ausführen und autorisieren
- Service-Account: