mcpField
1
1password

1password

github.com/openclawセキュリティ393.3k6.3k 回インストール今日更新
リポジトリ

1password について

このスキルは、公式の1Password CLIの認証設定確認からアクセス検証までをエージェントに案内します。サービスアカウント、デスクトップアプリ連携、単独サインインと認証情報の保護を扱います。

主な機能

  1. 01CLIの認証方式の判別
  2. 02op whoamiによるアクセス確認
  3. 03認証方式に応じたコマンド実行
  4. 04ログやチャットへのシークレット記録防止
  5. 05認証情報ツールを使ったブラウザーサインイン

活用シーン

  1. 01ヘッドレス環境でのCLIアクセス設定
  2. 02デスクトップアプリ連携でのCLI実行
  3. 03単独サインインによる認証
  4. 04ウェブサイトログイン時のパスワード露出防止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/openclaw/openclaw --skill 1password

インストール後、Claude Code で/1passwordを入力して読み込まれたか確認します。

同梱ファイルreferences/get-started.mdreferences/cli-examples.md

詳細

1Password CLI

公式の CLI 入門手順に従ってください。インストールコマンドを推測しないでください。

参照

  • references/get-started.md (インストール + アプリ連携 + サインインフロー)
  • references/cli-examples.md (実際の op の例)

ワークフロー

  1. OS とシェルを確認します。
  2. CLI が存在することを確認します: op --version。
  3. ユーザーが設定した認証モードを検出します:
    • サービスアカウント: OP_SERVICE_ACCOUNT_TOKEN が設定されている (ヘッドレス構成、CI、ゲートウェイで一般的)。
    • デスクトップアプリ連携: 1Password デスクトップアプリが CLI 連携を有効にして実行されている (macOS / Windows / Linux デスクトップで一般的)。
    • スタンドアロンサインイン: 上記のいずれでもない — op signin はセッションごとにアカウントパスワードの入力を求めます。
  4. 認証モードに応じて op を実行します (以下を参照)。
  5. アクセスを確認します: シークレットを読み取る前に op whoami が成功するはずです。
  6. 複数のアカウントがある場合: --account または OP_ACCOUNT を使用します。

認証モードごとの op の実行

サービスアカウント (ヘッドレス / ゲートウェイでの使用に推奨)

直接実行します。tmux もサインイン手順も不要です。

export OP_SERVICE_ACCOUNT_TOKEN="ops_..."
op vault list
op read op://app-prod/db/password
デスクトップアプリ連携

直接実行します。tmux でラップしないでください — デスクトップアプリ連携は、ゲートウェイの実行環境用に確立されたユーザーごとの IPC チャネルを使用しますが、異なる環境コンテキストで実行される tmux サブシェルからは必ずしも確実に到達できるとは限りません。トランスポートはプラットフォームごとに異なります (macOS では 1Password Browser Helper 経由の XPC、Linux では Unix ドメインソケット、Windows では名前付きパイプ)。エージェントにとっての実践的なルールは 3 つすべてで同じです: op を直接実行してください。macOS では、有用な症状の指標として ~/Library/Group Containers/2BUA8C4S2C.com.1password/t/ にある 1Password 連携グループコンテナがあります。

op vault list      # may trigger Touch ID / Windows Hello / system auth on first call
op whoami

呼び出しが 1Password CLI couldn't connect to the 1Password desktop app を返した場合、tmux に切り替えないでください。デスクトップアプリが実行中でロック解除されていることを確認し、直接実行を再試行してください。

スタンドアロンサインイン (アプリなし、対話式パスワード)

これが tmux が役立つ唯一のモードです。op signin は POSIX シェル用の OP_SESSION_* トークンを設定する eval 形式の export を出力します。同じシェル内の後続のコマンドは、その環境変数によって認証されます。ゲートウェイのコマンドごとのシェルは呼び出し間でその状態を失うため、永続的な tmux ペインがセッショントークンを存続させます — ただし、export が POSIX シェルで eval を使って実際に適用されている場合に限ります。op signin を通常のコマンドとして送信すると、stdout がペインに出力されたままになり、op whoami は失敗します。

tmux フローは、tmux スキルが利用可能な macOS/Linux ホストでのみ実行可能です。この例では、ユーザーの通常のシェルが fish であっても POSIX の eval "$(op signin ...)" 出力が有効になるように、意図的に /bin/sh を開いています。Windows では、デスクトップアプリ連携またはサービスアカウント認証を優先してください。ユーザーが Windows でスタンドアロンの対話式サインインしか利用できない場合は、作業を中止し、永続的な PowerShell セッションの仕組みを提供するか、デスクトップ連携 / サービスアカウント認証に切り替えるよう依頼してください。tmux コマンドを直接翻訳しないでください。

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

サインインがプロンプトを表示している間に後続のコマンドをキューに入れないでください。capture-pane でペインをポーリングし、 サインインが完了してシェルプロンプトが戻るか、明確に人間の入力を待っている状態になるまで確認します。プロンプトがパスワード、MFA、またはアカウントの選択を要求する場合は、一時停止して、ユーザー自身のターミナルでサインインを完了するよう依頼してください。ユーザーがローカルでアタッチできるように、ソケットとセッションの値を伝えてください。エージェントは exec から tmux attach を実行すべきではありません。attach は現在の TTY を消費し、スクリプトによる send-keys / capture-pane の制御を妨げるためです。

シェルプロンプトが戻ったら、同じペインにチェックを送信して確認します:

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

tmux セッションを実行したままにして、後続の op read / op run コマンドが同じ認証済みシェルを再利用できるようにします。

このスタンドアロンサインインフローでは、後続のすべてのコマンドで同じ SOCKET と SESSION の値を使用してください。-S "$SOCKET" フラグは tmux サーバーソケットを選択します。ユーザー所有の 0700 ディレクトリに置き、ユーザー間で共有せず、新しいサインイン試行ごとに新しいセッション名を選択してください。

ブラウザーサインイン(Claude 用 1Password)

セッションが Chrome の Claude 資格情報ツール(request_credentials、autofill_credential、enter_verification_code)を公開している場合は、Web サイトへのサインインに op よりもそれらを優先してください。1Password はページに直接入力し、シークレットがコンテキストに入ることはありません。ルール:

  • ナビゲートする前に、タスクに必要なすべての資格情報を 1 回の request_credentials 呼び出しで要求してください。
  • 承認はゲートウェイホスト上の 1Password プロンプトです。保留のままの場合は、再試行するのではなく、どのホストのロックを解除すべきかをユーザーに伝えてください(「1Password がこの Mac で承認を待っています」)。
  • ユーザーにチャット経由でパスワードやワンタイムコードを送るよう依頼しないでください。コードは enter_verification_code のみを通します。
  • ブラウザーフローに承認が必要だからといって、Web サイトのパスワードに対して op read にフォールバックしないでください。それは非露出の設計を損ないます。op はコマンドや設定が消費するシークレットに使用し、ブラウザーフローが存在する場合は Web ログインには使用しないでください。

ガードレール

  • シークレットをログ、チャット、コードに貼り付けないでください。
  • シークレットをディスクに書き込むよりも op run / op inject を優先してください。
  • アプリ統合なしでのサインインが必要な場合は、最初に op account add を使用してください。
  • コマンドが「account is not signed in」を返した場合:
    • サービスアカウント: OP_SERVICE_ACCOUNT_TOKEN を再エクスポートしてください
    • デスクトップアプリ: アプリが実行中で、統合が有効になっていることを確認してください
    • スタンドアロン: 同じ tmux セッション内で op signin を再実行し、承認してください

コメント