mcpField
1
1password

1password

github.com/steipeteセキュリティ7.4k303 回インストール1 週間前に更新
リポジトリ

1password について

1Password CLI のセットアップと安全な操作手順に従うためのスキルです。シークレットを扱う前のアクセス確認、tmux 内でのコマンド実行、値の露出防止を重視します。

主な機能

  1. 01公式セットアップ手順の参照
  2. 02CLI とアカウントアクセスの確認
  3. 03tmux 内で `op` コマンドを実行
  4. 04アカウントの明示的な選択
  5. 05シークレットのマスキング処理

活用シーン

  1. 011Password CLI アクセスの設定
  2. 02シークレット取得前のサインイン確認
  3. 03認証情報の安全な保存や編集
  4. 04値を漏らさず CLI 状態を調査

インストール

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

$npx skills add https://github.com/steipete/agent-scripts --skill 1password

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

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

詳細

1Password CLI

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

参考資料

  • 公式ドキュメント:https://developer.1password.com/docs/cli/get-started/
  • references/get-started.md(インストール+アプリ連携+サインインの流れ)
  • references/cli-examples.md(安全なアイテム作成・編集パターンを含む、実際の op の例)

ワークフロー

  1. OS とシェルを確認します。
  2. tmux 内で CLI が利用できることを確認します:op --version。
  3. デスクトップアプリとの連携が有効になっていること(スタートガイドに従って)と、アプリのロックが解除されていることを確認します。
  4. 必須:すべての op コマンドを新しい tmux セッションで実行します(tmux の外で op を直接呼び出さないでください)。
  5. tmux 内でサインイン/認証します:op signin(アプリに確認が表示されます)。
  6. tmux 内でアクセスを確認します:op whoami(シークレットを読み取る前に、必ず成功する必要があります)。
  7. 複数のアカウントがある場合は、--account または OP_ACCOUNT を使います。

Peter アカウントのデフォルト設定

  • Peter が個人用/仕事用のシークレットに使うデフォルトのアカウントは my.1password.com(「Peter Steinberger's Clan」)です。
  • Peter から依頼がない限り、my.1password.eu/Titan を暗黙的に使用しないでください。
  • Peter のシークレットを保存または読み取るすべての op コマンドに --account my.1password.com を指定してください。暗黙のアカウント選択に頼らないでください。
  • op account list はメタデータのみを扱いますが、それでも tmux 内で実行する必要があります。アカウントの振り分け先が不明確な場合に、アカウント名の確認に使ってください。
  • op signin --account my.1password.com は、有用な出力がなくても終了ステータス 0 を返すことがあり、その後のシェルがサインイン済みにならない場合があります。サインイン、作成/編集/取得、確認は、同じ tmux シェル内で行ってください。

必須の tmux セッション(T-Max)

シェルツールはコマンドごとに新しい TTY を使用します。再度の確認や失敗を避けるため、必ず新しいソケット名/セッション名を使った専用 tmux セッション内で op を実行してください。

例(ソケット名の規則については tmux スキルを参照し、以前のセッション名を再利用しないでください):

SOCKET_DIR="${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/clawdbot-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/clawdbot-op.sock"
SESSION="op-auth-$(date +%Y%m%d-%H%M%S)"

tmux -S "$SOCKET" new -d -s "$SESSION" -n shell
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op signin --account my.1password.com" Enter
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 -p -J -t "$SESSION":0.0 -S -200
tmux -S "$SOCKET" kill-session -t "$SESSION"

動作確認済みのシークレット書き込みパターン

新しい tmux セッションを使い、内容を表示せずにクリップボードからシークレットを読み取り、必要に応じて想定されるトークンのプレフィックスを検証してから、Peter のアカウントを明示的に指定して書き込みます。この CLI ビルドでは、op のカテゴリ文字列は人が読める形式で、大文字と小文字が区別されます。api_credential ではなく "API Credential" を使ってください。

tmux new-session -d -s op-store-secret 'bash -lc '\''set -euo pipefail
set +x
ACCOUNT="my.1password.com"
ITEM_TITLE="Service API Tokens"
FIELD_NAME="api_token"
EXPECTED_PREFIX=""
NOTES="Created via tmux-safe op workflow"
TOKEN="$(pbpaste)"
if [ -n "$EXPECTED_PREFIX" ]; then
  case "$TOKEN" in "$EXPECTED_PREFIX"*) ;; *) echo "clipboard value does not match expected prefix" >&2; exit 2;; esac
fi
op item create --account "$ACCOUNT" --category "API Credential" --title "$ITEM_TITLE" "$FIELD_NAME[password]=$TOKEN" "notesPlain=$NOTES" >/dev/null
op item get "$ITEM_TITLE" --account "$ACCOUNT" --fields "label=$FIELD_NAME" >/dev/null
echo "stored and verified secret field without printing it"
sleep 30
'\'''

同じアイテムに 2 つ目のシークレットを追加する場合:

tmux new-session -d -s op-edit-secret 'bash -lc '\''set -euo pipefail
set +x
ACCOUNT="my.1password.com"
ITEM_TITLE="Service API Tokens"
FIELD_NAME="app_token"
EXPECTED_PREFIX=""
TOKEN="$(pbpaste)"
if [ -n "$EXPECTED_PREFIX" ]; then
  case "$TOKEN" in "$EXPECTED_PREFIX"*) ;; *) echo "clipboard value does not match expected prefix" >&2; exit 2;; esac
fi
op item edit "$ITEM_TITLE" --account "$ACCOUNT" "$FIELD_NAME[password]=$TOKEN" >/dev/null
op item get "$ITEM_TITLE" --account "$ACCOUNT" --fields "label=$FIELD_NAME" >/dev/null
echo "stored and verified secret field without printing it"
sleep 30
'\'''

マスクされたデバッグ

パイプライン全体を tmux 内で実行してください。ステータスと出力の長さを確認し、シークレットの値は決して確認しないでください。

tmux new-session -d -s op-debug 'bash -lc '\''set -euo pipefail
set +x
SIGNIN_OUTPUT="$(op signin --account my.1password.com 2>&1 || true)"
echo "signin output bytes: ${#SIGNIN_OUTPUT}"
op account list 2>&1 | sed -E "s/(xox[baprs]-)[A-Za-z0-9-]+/\\1REDACTED/g; s/(xapp-)[A-Za-z0-9-]+/\\1REDACTED/g"
sleep 30
'\'''

安全上の注意

  • シークレットをログ、チャット、コードに貼り付けないでください。
  • シークレットをディスクに書き込むより、op run/op inject を優先してください。
  • アプリ連携なしでサインインする必要がある場合は、op account add を使ってください。
  • コマンドが「account is not signed in」を返した場合は、tmux 内で op signin を再実行し、アプリで認証してください。
  • tmux の外で op を実行しないでください。tmux が利用できない場合は、作業を止めて確認してください。

コメント