mcpField
2
2password

2password

github.com/kitlangtonセキュリティ31383 回インストール3 週間前に更新
リポジトリ

2password について

2passwordは、秘密の値を出力に露出させずに認証情報を扱うための、1Password CLI(`op`)ラッパーです。エージェント向けに、環境変数を使った実行、認証情報の作成、パスワード確認、保管庫の監査を提供します。

主な機能

  1. 01認証情報の参照先検索
  2. 02環境変数を使ったコマンド実行
  3. 03環境テンプレートの解決と実行
  4. 04API認証情報の作成
  5. 05ログインパスワードの確認と更新
  6. 06保管庫メタデータの監査

活用シーン

  1. 01開発コマンドにAPI認証情報を渡す
  2. 02複数の環境参照をまとめて解決
  3. 03新しいAPIキーの作成と検証
  4. 04重複または古い保管庫項目の確認

インストール

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

$npx skills add https://github.com/kitlangton/2password --skill 2password

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

詳細

2password

2password は 1Password CLI(op)をラップし、シークレットを目にすることなく、1Password の確認をできるだけ少なくして作業できるようにします。出力はすべて JSON です。

ルール

  • シークレットの値を表示、ログ出力、要約、または繰り返し出力しないでください。代わりに op:// 参照を渡してください。
  • 1Password の呼び出しでは、ユーザーに承認を求めるプロンプトが表示されることがあります。また、新しく開いたシェルでは、その都度あらためて承認が必要になる場合があります。タスクの作業は、できるだけ少ないコマンドにまとめてください。複数のクエリは 1 回の find にまとめ、多数の参照は env run で実行する 1 つの環境ファイルにまとめてください。
  • op whoami やその他の事前確認は実行しないでください。そのままコマンドを実行し、必要なときはデスクトップアプリが承認します。
  • 書き込みに失敗した場合や「未検証」と報告された場合は、再試行しないでください。まず find を実行し、すでに書き込まれていないか確認してください。

認証情報を検索する

2password find openai anthropic "github actions"   # many queries, one prompt
2password find stripe --vault Work --account my.1password.com

各一致項目は { ref, title, kind } として 1 回ずつ表示され、複数のクエリを指定した場合は queries も含まれます。一致する項目がないクエリでは、同じ検索から近いタイトル(誤字を含む)を suggestions として返します。再検索したり、ボールト全体を一覧表示したりせず、それらを使用してください。値は返しません。

認証情報を使用する

2password run --env "OPENAI_API_KEY=op://Personal/OpenAI API Key/credential" -- bun run dev
2password env write .env.tpl "OPENAI_API_KEY=op://Personal/OpenAI API Key/credential" "STRIPE_KEY=op://Work/Stripe API Key/credential"
2password env run .env.tpl -- bun run dev       # preferred: no plaintext on disk
2password env resolve .env.tpl --output .env    # only when a real file is required (mode 0600)
2password read "op://Personal/OpenAI API Key/credential"   # last resort: prints the value

テンプレート内のすべての参照は、1 回のプロンプトで解決されます。read を繰り返し実行しないでください。op:// 参照だけを含む .env.tpl は安全に確認できますが、解決済みの .env は平文です。

run と env run は、シークレットを argv、テンプレート、および 2password 自身の出力に含めません。ただし、選択した子プロセスの環境変数には平文で渡されます。その子プロセスは、シークレットを扱う信頼できるプロセスとして扱ってください。環境変数のダンプやデバッグを行うコマンド、または値を明らかにすることを目的としたヘルパーに、認証情報を渡さないでください。

新しい API キーを保存する

2password create api-credential --title "OpenAI API Key" --vault Personal --clipboard
some-command-that-prints-a-key | 2password create api-credential --title "OpenAI API Key" --vault Personal --stdin
  • --vault は必須です。ユーザーが指定したボールト、またはユーザーのドキュメントで既定とされているボールトを使用してください。どちらもない場合は、ユーザーに確認してください。
  • 値を引数、コマンド置換、または一時ファイルに入れないでください。また、クリップボードの内容を会話に読み込まないでください。
  • 任意指定の --url、--notes、--account には、シークレットではないメタデータのみを指定してください。
  • 成功とは、終了コードが 0 で "verified": true であることです。返された ref を再利用し、二重確認のために read を実行しないでください。
  • ボールト内でタイトルが重複している場合は拒否されます。上書きされることはありません。

ログインパスワードを確認または更新する

2password password "Example Airline" --vault Personal --clipboard           # compare only
2password password "Example Airline" --vault Personal --clipboard --apply   # update, then verify

パスキーまたは名前のないインポート済みフィールドを含むログインは、コマンドによって拒否されます。--repair-imported-fields は、ユーザーの承認を得た後にのみ使用してください。

ボールトを監査する

2password inventory --vault Work   # item and field metadata, never values or URL query strings
2password audit --vault Personal   # duplicate titles, untagged machine credentials, old logins, transient URLs

検出結果は、確認すべき候補として扱ってください。名前の変更や修正を提案し、ユーザーの承認を得てから実行してください。

プロンプトなしで実行する:サービスアカウント(macOS、Windows)

ユーザーが承認プロンプトに疲れている場合は、サービスアカウントを提案してください。ユーザーに求められた場合にのみ設定してください。

2password service-account setup --vault Automation --create-vault --write --save-vault Personal

設定後、すべてのコマンドは macOS の Keychain に保存されたトークン(Windows では %LOCALAPPDATA% 配下の DPAPI 暗号化ファイル)を使って、プロンプトなしで認証されます。ただし、アクセスできるのは Automation ボールトのみです。Windows では、ユーザーとして実行されるプロセスならどれでもこのファイルを復号できるため、実質的な境界となるのはボールトの限定されたアクセス範囲です。エージェントが使用する認証情報は、そのボールトに保管してください。

  • 2password --desktop <command> は、他のボールトへのアクセスなどに、通常のデスクトップログインを使用します。
  • service-account status | connect --clipboard | recover | forget。forget はこの Mac のコピーのみを削除し、アカウントは失効させません。
  • 設定が途中で失敗した場合は、再実行しないでください。2password service-account status を実行してください。
  • 環境変数の OP_SERVICE_ACCOUNT_TOKEN は、保存済みのアカウントより優先されます(Linux、CI)。
  • run と env run は、子プロセスの環境変数からサービスアカウントのトークンを削除します。

項目の規則

  • API キーには、API Credential カテゴリーと組み込みの credential フィールドを使用し、タイトルは <Provider> API Key または <Provider> <Purpose> API Key のようにします。
  • ログインには、組み込みの password フィールドを使用し、タイトルは <Provider> または <Provider> <Account> のようにします。
  • ボールトには項目の所有者が表示されるため、タイトルにボールト名を繰り返し含めないでください。各項目につき、現在有効なシークレットを 1 つだけ保持してください。

問題があれば報告してください

2password はエージェント向けに構築されているため、皆さんの体験をもとに改善されます。コマンドが予期せず失敗した場合や、回避策が必要だった場合はお知らせください。想定より承認プロンプトが多かった場合、出力が扱いにくい、または冗長だった場合、このスキルの内容が不明瞭または誤っていた場合も同様です。ユーザーに伝え、イシューの作成を提案してください。GitHub アカウントから公開されるため、必ず事前に許可を得てください。

gh issue list --repo kitlangton/2password --state all --search "<keywords>"   # add to an existing issue instead of duplicating it
gh issue create --repo kitlangton/2password --title "<what went wrong>" --body "<details>"

2password doctor の出力(バージョンとセットアップ情報。プロンプトは表示されず、安全に共有できます)、実行したコマンド、期待していた結果と実際に起きたことを含めてください。シークレット値、アイテム名、保管庫名やアカウント名、op:// 参照は絶対に含めないでください。これらはプレースホルダーに置き換えてください。

その他すべて

その他のアイテムカテゴリの操作、編集、移動、共有、削除、保管庫の管理には、生の op を使用してください。平文は引数ではなく、標準入力で JSON テンプレートを介して渡してください。アイテムや保管庫を特定した後は、ID で参照してください。

コメント