mcpField
P
pp-1password

pp-1password

github.com/mvanhornセキュリティ2.1k78 回インストール今日更新
リポジトリ

pp-1password について

pp-1passwordは、値を既定で公開せずに1Passwordへのアクセスを計画・監査するための、エージェントや運用担当者向けコマンドラインスキルです。正確なシークレット参照を特定し、ポリシーを確認したうえで、明示的な手順を経て読み取りや環境変数への注入を行います。

主な機能

  1. 01リクエストを正確なop://参照に解決
  2. 02ポリシー確認と明示的な許可を伴うシークレット読み取り
  3. 03環境変数の対応付けと注入を計画
  4. 04アイテム、カード、文書、所有者情報を監査
  5. 05アクセス範囲とポリシー遵守を確認

活用シーン

  1. 01値を開示せずにトークン参照を特定
  2. 02所有者情報が不足する認証情報を確認
  3. 03ファイル出力前に環境変数注入を計画
  4. 04タスクに必要なVault権限を確認

インストール

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

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-1password

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

詳細

1Password — Printing Press CLI

前提条件:CLI をインストールする

このスキルは 1password-pp-cli バイナリを使用します。**このスキルのコマンドを実行する前に、CLI がインストールされていることを必ず確認してください。**インストールされていない場合は、先にインストールしてください。

  1. Printing Press インストーラーを使ってインストールします。macOS/Linux では既定で $HOME/.local/bin に、Windows では %LOCALAPPDATA%\Programs\PrintingPress\bin にバイナリがインストールされます。
    npx -y @mvanhorn/printing-press-library install 1password --cli-only
    
  2. 確認します:1password-pp-cli --version
  3. 報告されたインストールディレクトリが、このスキルを実行するエージェント/ランタイムの $PATH に含まれていることを確認します。

npx によるインストールに失敗した場合(Node がない、オフラインなど)は、Go から直接インストールしてください(Go 1.26.6 以降が必要です)。これは $GOPATH/bin(既定値は $HOME/go/bin)にインストールされるため、代わりにそのディレクトリを $PATH に追加してください。

go install github.com/mvanhorn/printing-press-library/library/auth/1password/cmd/1password-pp-cli@latest

インストール後に --version で「command not found」と表示される場合、ランタイムから $PATH 上のバイナリディレクトリが見えていません。確認に成功するまでは、スキルのコマンドを実行しないでください。

タスクのたびにシークレットを明かすことなく、エージェントから 1Password を利用できます。CLI はあいまいなリクエストを正確な op:// 参照に解決し、メタデータを監査してポリシーを確認したうえで、明示的な計画の後にのみ op read、op inject、または op run を呼び出します。

この CLI を使用しない場合

作成、更新、削除、公開、コメント、賛成票の投票、招待、注文、メッセージの送信、予約、購入、またはリモート状態の変更が必要なリクエストには、この CLI を使用しないでください。この印刷用 CLI は、シークレット参照の計画、メタデータの監査、ポリシーの確認、および厳格な制限付きのローカルな op read/op inject ワークフローを目的としています。

独自の機能

この API では、ほかのどのツールでも利用できない機能です。

シークレット
  • secrets resolve — エージェントのあいまいなリクエストを、値を表示せずに正確な op:// ボールト/アイテム/フィールド参照へ解決します。

    誤って広範囲を読み取るのを防ぎ、後続のコマンドで使う正確な参照を提供します。

    1password-pp-cli secrets resolve --query "token" --json
    
  • secrets read — ポリシーを確認し、値を表示する前に明示的な --reveal ゲートを要求して、正確な op:// 参照のみを読み取ります。

    値へのアクセスをあいまいな検索ではなく、対象を限定した監査可能な操作にします。

    1password-pp-cli secrets read op://Engineering/GitHub/token --dry-run --json
    
  • secrets explain — フィールドの値を明かさずに、特定のアイテムとフィールドがタスクに選ばれた理由を説明します。

    1password-pp-cli secrets explain --query "token" --json
    
  • secrets preflight — 計画されたタスクまたはコマンドで、シークレットの値、ドキュメント、カード、または書き込み権限が必要と思われるかを確認します。

    1password-pp-cli secrets preflight --task "deploy using op run --env-file .env" --json
    
環境
  • env plan — .env、config、またはシェルファイルを解析して不足している変数を特定し、安全な op:// 参照に対応付けます。

    1password-pp-cli env plan API_TOKEN= --json
    
  • env inject — まずマスキングされた計画を提示して op inject をラップし、出力ファイルを生成する前に --write を要求します。

    1password-pp-cli env inject --in-file README.md --out-file injected.env --json
    
アイテム
  • items classify — API 認証情報、ログイン情報、SSH キー、カード、またはドキュメントに見えるセキュアノートを検索します。

    1password-pp-cli items classify --json
    
  • items duplicates — シークレットの値を表示せずに、ボールト間で重複するタイトル、URL、ユーザー名、およびコピーされた可能性の高い認証情報を検出します。

    1password-pp-cli items duplicates --json
    
  • items ownership — 所有者、目的、ローテーション、または環境のタグがない共有認証情報やサービス認証情報にフラグを付けます。

    1password-pp-cli items ownership --json
    
カード
  • cards audit — カードの値を表示せずに、ノートやログイン情報として保存されたカード、所有者/目的のタグがないカード、または CVV のようなフィールドを検出します。

    1password-pp-cli cards audit --json
    
  • cards resolve — カード番号、有効期限、または CVV を表示せずに、カードアイテムとフィールドの参照を返します。

    1password-pp-cli cards resolve --query "card" --json
    
ドキュメント
  • documents inventory — ドキュメントの内容をダウンロードせずに、ドキュメントのメタデータと正確な参照を一覧表示します。

    1password-pp-cli documents inventory --json
    
  • documents audit — 機密性の高いファイル名、サイズの大きいドキュメント、秘密鍵/証明書のようなドキュメント、および共有ボールト内のドキュメントにフラグを付けます。

    1password-pp-cli documents audit --json
    
  • documents read — ポリシーを確認し、明示的な --reveal ゲートを通過した後にのみ、正確に指定されたドキュメントまたは添付ファイルの参照を 1 つストリーミングします。インメモリのコンシューマーにはこれを使用してください。ドキュメントのバイトデータをクライアントプロファイルに保存しないでください。

    1password-pp-cli documents read op://Engineering/Google-Analytics/service-account.json --reveal --agent
    
共有
  • share preflight — アイテムを共有する前に、受信者、アイテムのカテゴリ、含まれるフィールド、有効期限、リスクを表示します。

    1password-pp-cli share preflight --ref op://Engineering/GitHub/token --recipient recipient --expires-in 1d --json
    
  • share audit — 既存または共有可能なアイテムのリンク検査が op または SDK でサポートされているかを報告し、サポートされていない場合はその旨を明確に記録します。

    1password-pp-cli share audit --json
    
ポリシー
  • policy check — クレジットカードの値を読み取らない、本番環境では正確な参照を使用する、所有者タグを必須にする、といったルールを適用します。

    1password-pp-cli policy check --ref op://Production/API/token --require-exact --json
    
アクセス
  • access scope — 現在のサービスアカウントまたは op セッションがアクセスできる対象を、値を表示せずに、保管庫、カテゴリ、件数ごとにまとめます。

    1password-pp-cli access scope --json
    
  • rate-limit status — op サービスアカウントのレート制限をラップし、エージェントがクォータを無駄に消費しないようにします。

    1password-pp-cli rate-limit status --json
    
エージェント
  • agent grant-plan — タスクに必要なサービスアカウントの保管庫権限を最小限に抑えたプランを提案します。

    1password-pp-cli agent grant-plan --task "read staging deploy token" --json
    
ランタイム
  • run plan — op の実行コマンドまたは環境ファイルを検査し、実行前に解決されるシークレット参照を表示します。

    1password-pp-cli run plan --command "npm test" --json
    
監査
  • audit stale — メタデータから、古い、タグがない、重複している、またはおそらく使われていないアイテムを特定します。

    1password-pp-cli audit stale --days 180 --json
    
  • audit misplaced — API キー、カード、ドキュメント、SSH 情報が誤った 1Password カテゴリに保存されていないかを検出します。

    1password-pp-cli audit misplaced --json
    

レシピ

値を明かさずにシークレットのリクエストを解決する
1password-pp-cli secrets resolve --query "token" --json

値を伏せた状態で正確な op:// 参照と候補のメタデータを返すため、後続のステップで正確な参照を必須にできます。

出力を書き込む前に環境変数の注入を計画する
1password-pp-cli env inject --in-file README.md --out-file injected.env --json

op が注入時に解決する参照を表示します。明示的に --write が指定されない限り、will_write は false のままです。

コマンドリファレンス

op — ローカルの 1Password CLI 認証状況を確認します

  • 1password-pp-cli op — シークレットの値を読み取らずに、op がインストールされ、認証済みかどうかを表示します
適切なコマンドを見つける

実行したい操作はわかっていても、どのコマンドを使えばよいかわからない場合は、CLI に直接尋ねてください。

1password-pp-cli which "<capability in your own words>"

which は、自然言語による機能の問い合わせを、この CLI の厳選された機能インデックス内で最も一致するコマンドに対応付けます。終了コード 0 は少なくとも 1 件一致したことを意味し、終了コード 2 は確信を持てる一致がなかったことを意味します。一致がなかった場合は --help を使うか、より具体的な問い合わせをしてください。

認証のセットアップ

公式の 1Password CLI(op)をインストールし、このラッパーを使う前に認証してください。

自動化では、1Password サービスアカウントのトークンを設定してください。

export OP_SERVICE_ACCOUNT_TOKEN="<service-account-token>"

エージェントが複数の 1Password アカウントを使う場合は、名前付きの Keychain 保存トークンを優先してください。

1password-pp-cli service-accounts add team --account example-team.1password.com
1password-pp-cli service-accounts add sandbox --account example-sandbox.1password.com
1password-pp-cli --op-service-account team op --agent

セットアップにはマスクされたプロンプトを使うか、トークンを argv に含めずに --token-stdin / --token-env NAME を使ってください。macOS 以外のシステムでは、--op-service-account-token-env NAME を使って、1 回の実行で使用する既存の環境変数を選択してください。これらの認証選択フラグを --profile に指定しないでください。CLI はこれらのフラグをプロファイルに保存せず、MCP のシェルアウトにも渡しません。

バックグラウンドの macOS エージェントには、一貫してコード署名された CLI を使用してください。以前のバイナリで作成されたエントリを移行する場合は、ローカルの対話型 Terminal から一度だけ 1password-pp-cli service-accounts repair-access <name> --json を実行してください。この操作は Keychain のアクセス制御のみを変更し、トークンを明かすことはありません。この操作では --agent を使用しないでください。対話的な承認が意図的に無効になります。

ローカルのデスクトップワークフローでは、通常の 1Password CLI またはデスクトップアプリとの連携を使って、op にサインインしてください。--op-account を使うと、子プロセスの op に対してのみ OP_ACCOUNT を設定できます。Connect の変数が設定されている場合、または選択したトークンが利用できない場合、名前付き/環境変数によるサービスアカウントの選択はハードエラーになります。

セットアップを確認するには、1password-pp-cli doctor を実行してください。

エージェントモード

任意のコマンドに --agent を追加します。次のオプションに展開されます:--json --compact --no-input --no-color --yes。

  • パイプ可能 — 標準出力に JSON、標準エラー出力にエラーを出力します

  • フィルタ可能 — --select でフィールドを絞り込めます。ドット区切りのパスはネストされた構造をたどり、配列は各要素を走査します。出力の多い API でコンテキストを小さく保つために重要です:

    1password-pp-cli op --agent --select id,name,status
    
  • プレビュー可能 — --dry-run で送信せずにリクエストを表示します

  • オフライン対応 — 同期/検索コマンドでは、利用可能な場合にローカルの SQLite ストアを使用できます

  • 非対話型 — プロンプトを表示せず、すべての入力をフラグで指定します

  • 読み取り専用 — 作成、更新、削除、公開、コメント、賛成票、招待、注文、送信、その他の変更を伴うリクエストには、この CLI を使用しないでください

レスポンスエンベロープ

ローカルストアまたは API から読み取るコマンドは、出力を出所情報のエンベロープでラップします:

{
  "meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
  "results": <data>
}

データには .results を、ライブデータかローカルデータかの確認には .meta.source を解析してください。人が読める N results (live) の概要は、標準出力がターミナルで、かつ機械可読形式のフラグ(--json、--csv、--compact、--quiet、--plain、--select)が設定されていない場合に限り、標準エラー出力にのみ表示されます。パイプ/エージェントの利用者と、形式を明示した実行では、標準出力に純粋な JSON が出力されます。

エージェントからのフィードバック

この CLI について、あなた(またはエージェント)が気になる点に気づいたら、記録してください:

1password-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
1password-pp-cli feedback --stdin < notes.txt
1password-pp-cli feedback list --json --limit 10

エントリーはローカルの ~/.local/share/1password-pp-cli/feedback.jsonl に保存されます。API_1PASSWORD_FEEDBACK_ENDPOINT が設定されており、かつ --send が渡されるか API_1PASSWORD_FEEDBACK_AUTO_SEND=true が設定されている場合を除き、POST されることはありません。デフォルトの動作はローカルのみです。

バグ報告ではなく、意外だったことを書いてください。短く、具体的に、1 行で記録してください。積み重ねにつながるのは、そこです。

出力の配信

すべてのコマンドで --deliver <sink> を指定できます。エージェントがコマンド結果を手動でパイプせずに振り分けられるよう、出力は標準出力に加えて(または標準出力の代わりに)指定したシンクに送られます。次の 3 種類のシンクに対応しています:

シンク動作
stdoutデフォルト。標準出力のみに書き込みます
file:<path>出力を <path> にアトミックに書き込みます(一時ファイル+リネーム)
webhook:<url>出力本文を URL に POST します(--compact 指定時は application/json または application/x-ndjson)

不明なスキームは、対応するスキームを示す構造化エラーとともに拒否されます。Webhook の失敗時は、ゼロ以外の終了コードを返し、URL と HTTP ステータスを標準エラー出力に記録します。

名前付きプロファイル

プロファイルは保存済みのフラグ値のセットで、複数回の実行で再利用できます。スケジュールされたエージェントが毎回、同じ設定で同じコマンドを呼び出す場合に使用します。これは HeyGen の「Beacon」パターンです。

1password-pp-cli profile save briefing --json
1password-pp-cli --profile briefing op
1password-pp-cli profile list --json
1password-pp-cli profile show briefing
1password-pp-cli profile delete briefing --yes

明示的に指定したフラグは常にプロファイル値より優先され、プロファイル値はデフォルト値より優先されます。agent-context は available_profiles の下にすべての利用可能なプロファイルを一覧表示するため、情報を調べるエージェントは実行時にプロファイルを検出できます。

プロファイルには --op-service-account、--op-service-account-token-env、--op-account は保存も適用もされません。各実行では、専用のサービスアカウントセレクターを使用してください。プロファイルの読み込み時に従来の認証値はメモリ上で削除され、次にプロファイルを明示的に書き込む際にはディスク上からも削除されます。

終了コード

コード意味
0成功
2使用方法エラー(引数が誤っています)
3リソースが見つかりません
5API エラー(上流の問題)
7レート制限中(待ってから再試行してください)
10設定エラー

引数の解析

$ARGUMENTS を解析します:

  1. 空、help、または --help → 1password-pp-cli --help の出力を表示します
  2. install で始まる → mcp で終わる場合は MCP のインストール、それ以外の場合は上記の前提条件を参照してください
  3. それ以外 → 直接使用(--agent を付けて CLI コマンドとして実行します)

MCP サーバーのインストール

  1. MCP サーバーをインストールします:
    go install github.com/mvanhorn/printing-press-library/library/auth/1password/cmd/1password-pp-mcp@latest
    
  2. Claude Code に登録します:
    claude mcp add 1password-pp-mcp -- 1password-pp-mcp
    
  3. 確認します:claude mcp list

直接使用

  1. インストール済みか確認します:which 1password-pp-cli 見つからない場合は、インストールを提案します(このスキルの上部にある「前提条件」を参照してください)。
  2. ユーザーのクエリに最適なコマンドを、上記の「独自の機能」と「コマンドリファレンス」から選びます。
  3. --agent フラグを付けて実行します:
    1password-pp-cli <command> [subcommand] [args] --agent
    
  4. 曖昧な場合は、サブコマンドのヘルプを確認します:1password-pp-cli <command> --help。

コメント