1password について
1Password CLI のセットアップと安全な操作手順に従うためのスキルです。シークレットを扱う前のアクセス確認、tmux 内でのコマンド実行、値の露出防止を重視します。
主な機能
- 01公式セットアップ手順の参照
- 02CLI とアカウントアクセスの確認
- 03tmux 内で `op` コマンドを実行
- 04アカウントの明示的な選択
- 05シークレットのマスキング処理
活用シーン
- 011Password CLI アクセスの設定
- 02シークレット取得前のサインイン確認
- 03認証情報の安全な保存や編集
- 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の例)
ワークフロー
- OS とシェルを確認します。
- tmux 内で CLI が利用できることを確認します:
op --version。 - デスクトップアプリとの連携が有効になっていること(スタートガイドに従って)と、アプリのロックが解除されていることを確認します。
- 必須:すべての
opコマンドを新しい tmux セッションで実行します(tmux の外でopを直接呼び出さないでください)。 - tmux 内でサインイン/認証します:
op signin(アプリに確認が表示されます)。 - tmux 内でアクセスを確認します:
op whoami(シークレットを読み取る前に、必ず成功する必要があります)。 - 複数のアカウントがある場合は、
--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 が利用できない場合は、作業を止めて確認してください。
コメント
Markdown 対応