Table of Contents

コマンドラインエージェントには、すべての認証情報のコピーではなく、有用なアクセス権限が必要です。 このガイドでは、1Password CLI、1Password SSH Agent、Bitbucket Git アクセス、および Model Context Protocol (MCP) 向けの限定された設計を提示します。最初のワークフローでは、合成名、読み取り専用アクション、および SSH 境界での人間による承認を使用します。

重要な区別は単純です。対話型 SSH は、1Password SSH Agent を通じた同意を使用します。無人自動化には、独立したアイデンティティ、狭いアクセス権限、および異なる鍵のライフサイクルが必要です。 MCP 接続を、どちらかのワークフローを実行するための許可として扱わないでください。

要点

  • 秘密鍵の保護: 1Password SSH Agent は、秘密鍵を 1Password アプリ内に保持したまま SSH 認証を実行します。
  • 公開鍵の処理: Bitbucket またはリモートアカウントには公開鍵のみを公開します。秘密鍵の半分は SSH Key アイテム内に保持します。
  • 対話型同意: SSH Agent が鍵を使用する前に、人がクライアントまたはターミナルセッションを承認します。
  • 無人分離: スケジュールされたジョブには、専用のサービスアカウントと狭い Vault スコープが必要です。対話型 SSH Agent の承認はこのニーズを満たしません。
  • MCP の境界: MCP はエージェントをツールやリソースに接続します。クライアント、サーバー、オペレーティングシステム、および 1Password ポリシーが引き続きアクセスを制御します。

開始前

前提条件: 1Password 8 と 1Password CLI 2.20.0 以降をインストールしてください。サポートされている 1Password アカウントでサインインしてください。OpenSSH クライアントを使用してください。テスト用の Bitbucket リポジトリまたはその他の非本番ターゲットを作成してください。ロールバックのために第 2 の管理パスを確保してください。

時間: 設計レビューと合成ウォークスルーに 30〜45 分。

難易度: 中級。基本的な Git、SSH、シェル、およびアクセス制御の知識が必要です。

このガイドは設計と計画をカバーします。リンクされた Bitbucket 記事は、Bitbucket 固有のアクセス境界をカバーします。このガイドでは、ライブアカウントのテスト、実際の鍵の作成、実際のホストへの接続、または実際の MCP サーバーの登録は行いません。以下のすべての識別子は合成です。プレースホルダーは、ご自身の管理された環境内でのみ置き換えてください。

バージョン方針: このワークフローには、1Password 8 と 1Password CLI 2.20.0 以降 を使用してください。 1Password CLI 1 は非推奨です 。 1Password 7 は 2027 年初頭に終了します 。SSH 鍵の生成、インポート、共有には 1Password 8 が必要です。テスト前に、インストールされた Git、OpenSSH、MCP ホスト、および MCP サーバーのバージョンを確認してください。以下の例は未テストのままです。

vault(ボルト)とは、1Password における項目の保護されたコレクションです。OpenSSH は、多くのオペレーティングシステムで使用される SSH クライアントおよびサーバーソフトウェアです。MCP(Model Context Protocol、モデルコンテキストプロトコル)は、エージェントを承認されたツールまたはリソースに接続します。

プライベートキーを読み取らない理由

SSH キーペアには公開キーと秘密キーがあります。リモートの Git サービスまたはサーバーは公開キーを保存します。クライアントは認証時に秘密キーの所有を証明します。秘密キーがリモートサービスに送信される必要はありません。

1Password SSH Agent はこのモデルを拡張します。そのドキュメントには、SSH および Git クライアントがエージェントを介して認証を行い、秘密キーは 1Password アプリ内に保持されると記載されています。クライアントが受け取るのは署名結果であり、秘密キーファイルではありません。

この境界線により、いくつかの露出経路が削減されます:

  • ソースコントロール: 秘密キーがリポジトリやプルリクエストに含められることはありません。
  • シェル履歴: 秘密キーの値がコマンド引数に表示されることはありません。
  • 一時ファイル: スクリプトが秘密キーを ~/.ssh/ に書き出す必要はありません。
  • エージェントコンテキスト: 大規模言語モデル(LLM)が SSH 操作を要求するために秘密キーのテキストを必要としません。
  • 意図しない再利用: タスク終了後、コピーされたキーが古いワークスペースに残り続けることはありません。

この境界線により SSH が無害になるわけではありません。エージェントソケットを使用する権限を持つプロセスは、承認されたキーとしてアクションを実行する可能性があります。ホストキーの検証、リモートアカウントの制限、リポジトリの権限、コマンドポリシー、プロセス分離は依然として重要です。

秘密キーの境界線はキー材料を保護します。この境界線はリモートコマンドを承認したり、ターゲットホストが信頼できることを証明したりするものではありません。

インタラクティブな SSH 同意

エージェントキー用に専用の vault を設定します。SSH Agent の設定ファイルを使用して、最小限のキーセットとホスト固有のキーを選択します。組み込みのすべての vault からすべての対象キーを自動化プロセスに公開しないでください。

1Password SSH Agent セキュリティモデル は、承認をキーと要求プロセスに紐付けます。プロンプトはプロセスとキーを特定します。その後、ユーザーは設定された認証方法を通じて要求を承認します。

1Password は複数の承認スコープをドキュメント化しています。キーごとおよびアプリケーションごとの承認がデフォルトです。ターミナルセッションスコープは、承認をタブまたはセッションに限定します。リクエストごとの承認は、すべての要求に対して再度確認を求めます。全プロセス承認オプションは存在しますが、このオプションは現在のオペレーティングシステムユーザー配下のすべてのプロセスに、セッション中のアクセス権を付与します。

タスクに適した最も狭い承認範囲を使用してください。 システム管理エージェントは、専用のターミナルまたはサンドボックス内で実行されるべきです。単一のターミナルセッションで十分な場合、すべてのプロセスを承認しないでください。

承認セッションは恒久的な権限付与ではありません。1Passwordは、設定された期間またはアプリがロックまたは終了するまでの認可を記録します。アプリがロックされている場合、エージェントは後で使用するために秘密鍵を保持しません。サポートされる設定が有効な場合、1Passwordが閉じられている間もSSHエージェントプロセスはバックグラウンドで継続しますが、新しい署名リクエストには1Passwordのロック解除が必要です。

1Password SSHセットアップガイド ]は一般的なフローを示しています: キーの生成またはインポート、公開鍵の公開、SSHエージェントの有効化、SSHクライアントの設定、SSHまたはGitコマンドの実行、リクエストの承認。正確なソケットパスはオペレーティングシステムによって異なります。他のマシンからのパスをコピーするのではなく、現在のプラットフォームの指示を使用してください。

新しい署名リクエストが成功する前に、1Passwordアプリのロック解除が必要です。アプリが閉じられている間も、エージェントプロセスはバックグラウンドで継続する可能性があります。ロックされたアプリは、署名のために秘密鍵のデータを解放しません。

公開鍵とBitbucket

1Password鍵管理ガイド ]は、SSH Keyアイテム、キーの生成、キーのインポート、公開鍵、フィンガープリント、秘密鍵を文書化しています。CLIの例では、op item create --category sshを使用してSSH Keyアイテムを作成します。この例では、1Password CLIはデフォルトでEd25519キーを生成し、出力内で秘密鍵をマスクします。

Bitbucket Cloudは、通常のGitおよびOpenSSHコマンドラインワークフローを使用します。その コマンドラインガイド ]は、ローカルリポジトリからのGit操作を説明しています。その SSH設定ガイド ]は、SSHリモート形式とサポートされる公開鍵形式を列挙しています。

Bitbucketを公開鍵の消費者として扱ってください。 承認されたBitbucketアカウントまたはリポジトリ設定を通じて、公開鍵またはフィンガープリントを登録してください。秘密鍵は1Password内に保持します。GitクライアントはSSHエージェントに署名を依頼します。クライアントは秘密鍵ファイルを読み取りません。

Bitbucketのアクセス鍵のスコープ、登録パス、および読み取り専用Gitテストについては、 Bitbucket Cloud SSH Keys and Git CLI: Read-Only Access for AI Agents ]を参照してください。

Bitbucketのドキュメントでは、これをGit CLIワークフローと呼んでいます。この記事は、個別のBitbucket MCPサーバーやBitbucket CLIという製品名を前提としていません。Bitbucket固有のCLIには、それ自身の最新のドキュメントとそれ自身の権限レビューが必要です。

エージェントとMCPの境界

新しいサーバーのレビューを行う際は、現在の MCP仕様 を使用してください。

以下の背景説明段落に記載されている2025-06-18仕様のURLは、歴史的なバージョンです。新しいレビューには2026-07-28仕様を使用してください。

MCP は、LLMアプリケーション、クライアントコネクタ、およびサーバー間の接続を標準化します。サーバーはツール、リソース、またはプロンプトを提供します。仕様では、ホストがデータを開示したりツールを呼び出したりする前に、ユーザーの同意を得る必要があることも規定されています。

MCP自体は権限を付与しません。 MCPツールは依然として、そのサーバープロセス、OSユーザー、ネットワークパス、クラウドアカウント、および設定された認証情報の権限内で実行されます。ツールの説明は、認可ポリシーではありません。

1Password Security for AIドキュメント は、Environments MCPサーバーと安全なMCP設定パターンを説明しています。同じページでは、1PasswordからのMCP設定値のランタイム読み込みについても説明されています。これらのページは、汎用的な1Password SSHキーMCPプロダクトや、すべてのエージェントクライアント向けの普遍的なSSHワークフローを定義していません。

MCPを狭い制御インターフェースとして使用してください:

  • 読み取りツール: サービスのステータス、リポジトリのメタデータ、または承認済みログを検査します。
  • 計画ツール: コマンドを実行せずに、コマンドや変更レコードを準備します。
  • 承認ツール: リモート書き込みの前に、人間の判断を要求します。
  • 書き込みツール: ターゲット、コマンド、スコープ、およびロールバックプランが明示的になるまで、無効のままにします。

エージェントには、参照情報、メタデータ、および操作結果を提供すべきです。エージェントには、秘密鍵のテキスト、ボルト全体のアイテムダンプ、または制限のないシェルを提供すべきではありません。

安全な最初のポリシー

エージェントを有効にする前に、書面によるポリシーを開始してください。ポリシーはMCP設定に近づけて配置しますが、ファイル内に認証情報を保存しないでください。

agent_policy:
  purpose: "Read-only repository and system inspection"
  identities:
    interactive_ssh: "1Password SSH Agent with per-terminal consent"
    unattended_jobs: "Dedicated service account with one narrow vault"
  allowed:
    - "Read repository metadata through Git"
    - "Read approved service status and logs"
    - "Run one synthetic SSH connectivity check"
  approval_required:
    - "Any remote write"
    - "Any package, firewall, clock, or service change"
    - "Any new host-key acceptance"
    - "Any private-key export"
  denied:
    - "Read or print private-key fields"
    - "List every vault or every item"
    - "Write tokens or secrets to shell profiles"
    - "Run arbitrary commands from tool output"
  rollback:
    - "Revoke the service account"
    - "Remove the public key from the target"
    - "Disable the MCP server entry"
    - "Lock 1Password and end the agent session"

このポリシーは例示であり、1Passwordの設定形式ではありません。実際のポリシーは、エージェントクライアントが使用するコントロールプレーンに保存してください。各ツールを有効にする前に、ポリシーに対してすべてのツールをレビューしてください。

サービスアカウントとシークレット参照

サービスアカウント は、自動化プロセスに独自のアイデンティティを与えます。 1Password CLIスクリプトガイド は、選択されたボルトへの最小権限アクセスのためにサービスアカウントの使用を推奨しています。これにより、無人ジョブが、個人のSSO、MFA、ボルトインベントリ、および日常のアカウントから分離されます。

シークレット参照は、ソースに値を配置せずに値を指定します。 1Password CLI リファレンス では、形式op://vault/item/fieldを使用しています。参照は、周囲のプロセスが依然として狭いアクセス権限を持っている場合のみ、安全に保存できます。参照はポリシーをバイパスしません。

1つのコマンドが1つの値を必要とする場合はop readを使用します。子プロセスが制御されたセットのランタイム値を必要とする場合はop runを使用します。承認済みボルトに新しいSSH Keyアイテムが存在する必要がある場合はop item createを使用します。

ランタイムインジェクションと秘密鍵の保護を混同しないでください。環境変数として渡されるAPIトークンは、依然として子プロセスから可視です。環境変数を通じて渡される秘密鍵は、値がプロセス検査、クラッシュレポート、デバッグ出力、シェルトレース、および意図しないログ出力への露出を拡大するため、さらに悪化します。

ソースには参照を、可能な限り最小のプロセスにはランタイム値を優先的に使用してください。 プロセスは短命に保ちます。シェルトレースを無効にします。環境を出力しないでください。実行が失敗した後は、一時ファイルを削除します。

安全な初期ワークフロー

以下のシーケンスは、公開鍵の登録、対話型SSH、MCPの検出、および無人設計を分離します。

1. ターゲットの定義

ターゲットクラス、リモートアカウント、意図されたリポジトリまたはコマンド、ホスト鍵ソース、承認者、およびロールバックアクションを記録します。最初の演習では、合成レコードを使用します。

target_class: test-repository
remote_account: git
operation: read-only connectivity check
host_key_source: approved administrator record
approval_owner: named operator
rollback: remove public key and revoke test identity

期待される結果(未テスト): レコードは1つのターゲットと1つの操作を特定します。レコードには、ホスト名、IPアドレス、トークン、秘密鍵、または個人データが含まれていません。

2. SSH Keyアイテムの作成または選択

公式の 1Password SSHキーガイド ]は、CLIによる作成パターンを文書化しています。以下のコマンドは、合成タイトルと名前付きのテストボルトを使用しています。

op item create --category ssh --ssh-generate-key=ed25519 --vault "synthetic-test-vault" --title "synthetic-agent-admin-key"

期待される出力(未テスト): 1Passwordは名前付きのテストボルトにSSH Keyアイテムを作成し、ターミナル出力で秘密鍵をマスクします。このコマンドは1Passwordの状態を変更します。正確な人間可読な出力は、CLIバージョンとサインイン状態に依存します。

プライベートキーフィールドをコピーせずに、返されたアイテム識別子をテストレコードに記録します。アイテムスキーマが確認された後、識別子または正確なアイテムタイトルを使用して、後続のフィールド固有の読み取りを行うこと。

この出力を共有ログにリダイレクトしないでください。ローカル手順が安全な構造化出力をサポートする場合、アイテム識別子、公開鍵フィンガープリント、および承認レコードのみを記録します。

3. 公開鍵の処理

1Password で SSH キー項目を開き、その「公開鍵をコピー」アクションを使用してください。公開鍵フィールドのラベルを自分のアカウントで確認した後にのみ、フィールド固有の参照を使用してください。完全な項目をダンプしないでください。

PUBLIC_KEY_REF="op://synthetic-test-vault/synthetic-agent-admin-key/synthetic-public-key-field"
op read "$PUBLIC_KEY_REF"

期待される出力(未検証): 1 行の合成 OpenSSH 公開鍵、または確認済みのフィールドからの公開鍵値。上記のプレースホルダーフィールド名は、あなたの項目のフィールドラベルに関する保証ではありません。

承認済みの Bitbucket アカウント、Bitbucket リポジトリ、またはリモートアカウントに公開鍵を登録してください。対応する秘密鍵を Bitbucket に貼り付けたり、入力したりしないでください。 Bitbucket SSH ガイド は、初回接続前に Bitbucket ホストキーを記録することも推奨しています。

Bitbucket の場合、公開されているホストキーレコードを取得し、行を ~/.ssh/known_hosts に追加する前に、そのレコードを独立した信頼できるコピーと比較してください。比較が成功した後、厳格なホストチェックを使用してください。エージェント実行中にホストキーの変更を受け入れないでください。

4. インタラクティブ SSH を有効にする

デスクトップアプリで 1Password SSH エージェントをオンにします。 公式セットアップガイド のプラットフォーム固有の IdentityAgent または SSH_AUTH_SOCK の値を使用して OpenSSH を設定してください。最初のテストは、1 つのリポジトリまたは 1 つの非本番アカウントに限定してください。

macOS または Linux では、プラットフォームセットアップガイドからソケットを設定し、ssh-add -l を実行します。Windows では、サポートされている名前付きパイプ設定を使用し、1Password SSH エージェントインターフェースまたは文書化された Windows SSH テストを通じて利用可能な鍵を確認してください。ssh-add -l をクロスプラットフォームの検証コマンドとして提示しないでください。

macOS または Linux の場合のみ:

ssh-add -l
git ls-remote "<repository-ssh-url>" HEAD

期待される出力(未検証): macOS または Linux では、ssh-add -l がアクティブなエージェントからのフィンガープリントをリストします。Windows では、文書化された名前付きパイプテストまたは 1Password SSH エージェントインターフェースを使用してください。Git の読み取りが成功すると、コミット参照が返されます。上記のリポジトリプレースホルダーは、制御されたテストで置き換える必要があります。

このコマンドはリポジトリプレースホルダーを使用しています。プレースホルダーは、制御されたテストでのみ置き換えてください。予期しないターゲットまたはプロセスのプロンプトを承認しないでください。

5. SSH パスが機能するようになった後に MCP を追加する

まず、MCP を使用せずに SSH クライアントとターゲットを検証してください。その後、読み取り専用の MCP サーバーまたはローカルコネクタを 1 つ追加します。エージェントに read_status または prepare_command のようなツールを与えてください。一般的なシェルツールから開始しないでください。

MCP設定では、クライアントがサポートする環境メカニズムを通じてランタイム値を参照する必要があります。 1Password AIセキュリティガイド では、1Passwordから読み込まれる環境変数に置き換えることで、プレーンテキストのMCP設定トークンを回避する方法が説明されています。設定には参照または変数名を保持します。解決された値はエージェントのトランスクリプトから除外します。

このセクションは設計を説明するものであり、テスト済みのMCP設定ではありません。ここではクライアント、サーバー、トランスポート、バージョン、またはフィクスチャのいずれも固定されていません。エージェントを本番システムに接続する前に、別のテストプロファイルで読み取り専用サーバーを1つ検証してください。

6. 結果を記録する

対象クラス、ツール名、承認判断、公開鍵のフィンガープリント、コマンドの結果、およびクリーンアップの結果を記録します。シークレット値は省略します。各出力を「観察されたもの」または「期待されるもの」としてマークします。

期待される結果(未テスト): エージェントはステータスを読み取り、範囲が限定されたコマンドを提案し、SSHリクエストに対する明示的な承認を受け、読み取り専用操作を完了し、秘密鍵のテキストを含まない記録を生成します。

合成コマンドシーケンス

以下のシーケンスは、実際のインフラストラクチャを使用せずに順序を示しています。これらのコマンドは例示のみです。記事の準備中に実行されたものではありません。

op --version
op item create --category ssh --ssh-generate-key=ed25519 --vault "synthetic-test-vault" --title "synthetic-agent-admin-key"
op read "op://synthetic-test-vault/synthetic-agent-admin-key/synthetic-public-key-field"
# macOS or Linux only
ssh-add -l
git ls-remote "<repository-ssh-url>" HEAD

期待される出力(未テスト):

2.x.y
SSH Key item created. Private key: redacted
ssh-ed25519 AAAA<synthetic-public-key> synthetic-key-label
256 SHA256:<synthetic-fingerprint> synthetic-agent-admin-key (ED25519)
<synthetic-commit-id>        HEAD

出力ブロックは例示的なものです。このブロックは、1Passwordアカウント、Bitbucket、Gitプロバイダー、またはリモートホストに対する実行を表していません。本番環境の記録では、承認されたメタデータと成功または失敗の状態のみを保存する必要があります。

インタラクティブアクセスと無人アクセス

アクセスモードアイデンティティ秘密鍵パス承認モデル
インタラクティブSSH1Password SSHエージェント経由の人間アカウント秘密鍵は1Passwordアプリ内に保持人間がプロセス、ターミナルセッション、またはリクエストを承認
スケジュールされた読み取り専用のサービスアカウントop run が狭い範囲のランタイム値を供給ジョブポリシーとサービスアカウントのスコープ
スケジュールされたSSH専用の自動化アイデンティティ鍵のエクスポートは最終手段の設計として残るジョブの分離、短い生存期間、ホスト制限、およびローテーション
エージェントによる書き込み人間またはタスク固有のアイデンティティ承認された統合に依存各定義された変更前の人間による承認

インタラクティブSSHエージェントのプロンプトを軸にワークフローをスケジュールしないでください。別の自動化設計を使用するか、そのステップを人間が操作するものにしてください。

無人ジョブの場合、1つのボルトまたは少数のアイテムへのアクセス権限を持つサービスアカウントを作成します。ジョブには単一の目的を割り当ててください。専用のリポジトリまたはサーバーアカウントを使用してください。ホストキーの検証を追加してください。実行タイムアウトを設定してください。シークレットを含まないアクションメタデータをログに記録してください。テスト後にアイデンティティをローテーションまたは失効してください。

無人ジョブが本当にSSH秘密鍵を必要とする場合は、狭い範囲のリモートアカウントと文書化された終了日を持つ専用の自動化鍵を使用してください。op readで秘密鍵を取得しても、プロセス境界をまたいで鍵材料がエクスポートされます。この設計は、1Password SSH Agentよりも影響範囲が広くなります。ターゲットがサポートしている場合は、プラットフォームアイデンティティ、デプロイサービス、またはその他のワークロードアイデンティティを優先してください。

平文の環境変数がリスクを高める理由

環境変数はソースファイルからシークレットを隔離しますが、シークレットを不可視にするわけではありません。子プロセスは自分の環境を読み取ります。プロセスの検査、クラッシュハンドラー、デバッグ出力、シェルトレース、コピーされたコマンド記録によって、値が露出する可能性があります。

1Passwordは、op runをサブプロセスに参照を読み込むためのランタイム方法として文書化しています。プロセスが本当に必要な値にはop runを使用してください。子プロセスは短命にし、そのコマンドを制限してください。SSH Agentがエクスポートの必要性を排除できる場合、SSH_PRIVATE_KEY、KEY、または同様の環境変数を通じて秘密鍵を渡さないでください。

より安全な順序は以下の通りです:

  1. 対話型SSHにはSSH Agentを使用する。
  2. Bitbucketまたはリモートアカウントには公開鍵登録を使用する。
  3. 狭い範囲の無人の子プロセスにはop runを使用する。
  4. 子プロセスが完全な環境を必要としない場合、1つの値にはop readを使用する。
  5. 秘密鍵のエクスポートは、書面による例外承認、狭いスコープ、クリーンアップ計画、ローテーション計画の後にのみ行う。

意思決定テーブル

要件推奨されるパス停止または再設計の理由
人間が SSH 経由で Git を実行する1Password SSH Agentプロンプトが予期しないプロセスやキーを指定している場合は停止
リポジトリキーを登録する公開鍵を読み取るか、自動入力を使用する秘密鍵をリポジトリサービスにコピーしないこと
エージェントがサービス状態を読み取るOS レベルのスコープを持つ読み取り専用 MCP ツールツールが無制限のシェルを公開している場合は停止
エージェントがリモート変更を提案するプランツールを実行し、その後人間による承認を得るターゲット、コマンド、またはロールバックが不明確な場合は停止
ジョブが 1 つの API トークンを読み取るサービスアカウントと op read または op runトークンがソース、ログ、またはグローバルプロファイルに入る場合は停止
ジョブに SSH アクセスが必要ワークロードアイデンティティまたは専用の自動化キージョブが個人キーまたは広範なアカウントを必要とする場合は停止
MCP 設定にトークンが必要サポートされているクライアントによって読み込まれるランタイム参照プレーンテキストのトークンが設定にコミットされる場合は停止

障害処理

予期しない SSH 同意プロンプト: プロンプトを拒否する。プロセス名、ターミナルセッション、キーフィンガープリント、リポジトリターゲット、ホストキーを確認する。再試行する前に SSH クライアント設定をレビューする。

SSH Agent ソケットが見つからない: 1Password デスクトップアプリがサポートされている方法でインストールされていること、SSH Agent が有効化されていること、クライアントがプラットフォーム固有のソケットを使用していることを確認する。 公式 SSH Agent ページ には、オペレーティングシステム要件とソケット設定へのリンクが記載されています。

公開鍵認証が失敗する: 選択された公開鍵、リモートアカウント、リポジトリ権限、ホストキー、SSH 設定を確認する。公開フィンガープリントの比較を使用する。無関係な秘密鍵をエクスポートしてエラーを解決しないこと。

op read がアクセスを拒否する: サービスアカウントのボルトスコープ、アイテム識別子、フィールド参照、サインイン状態、アイテム状態を確認する。参照を承認された 1 つのアイテムに限定する。最初の対応としてボルトの権限を拡大しないこと。

op run が値を公開する: ジョブを停止する。最小限のインシデント記録のみを保持する。保持手順に従って、コピーされたログと一時ファイルを削除する。影響を受けたシークレットまたはキーをローテーションする。シェルトレース、プロセス検査、クラッシュレポート、MCP トランスクリプトの保持状況をレビューする。

MCP ツールの動作が異常: ツールの出力を信頼できないデータとして扱います。出力によって提案されたコマンドを実行する前に停止してください。サーバーのソース、設定、権限、トランスポートを調査してください。MCP ホストはユーザーの同意を取得する必要があります。仕様書には同意とアクセス制御に関する実装者のガイダンスも提供されていますが、このプロトコルはあなたのレビューを代替するものではありません。

ロールバックと削除

ロールバックはファイルの削除ではなく、アクセスの削除から始まります。

  1. エージェントまたはスケジュールされたジョブを停止します。 MCP サーバーのエントリを無効化するか、クライアントを切断してください。
  2. 1Password をロックします。 インタラクティブな SSH 認証セッションを終了してください。
  3. 公開鍵を削除します。 Bitbucket、リポジトリ、またはリモートアカウントからテスト用の鍵を削除してください。
  4. サービスアカウントを失効させます。 そのベールへのアクセスを削除し、トークンを無効にしてください。
  5. テスト用の SSH Key アイテムを削除します。 承認済みのワークフローがそのアイテムを使用していないことを確認した後に削除してください。
  6. 一時的な設定を削除します。 テスト用の参照、ローカルソケットのオーバーライド、生成されたログを削除してください。
  7. 証拠を確認します。 ロールバック記録に秘密鍵、トークン、環境ダンプが含まれていないことを確認してください。

ローカルファイルの削除は、公開鍵、サービスアカウント、キャッシュされたトークン、またはリモート認証を失効させるものではありません。各権限をそのソースで削除してください。

トラブルシューティング

エージェントがすべてのコマンドで鍵を要求する

選択された認証スコープを確認してください。リクエストごとの承認はより制限が厳しいです。ターミナルまたはアプリケーションセッションが終了している可能性があります。1Password は、ロックまたは終了イベントの後でもう一度要求します。

エージェントがトランスクリプトに秘密鍵を確認している

ワークフローを停止し、鍵をローテーションしてください。MCP サーバーの応答、シェルコマンド、デバッグログ、ツールラッパーを調査してください。インタラクティブなタスクでは、秘密鍵の読み取りを SSH Agent の使用に置き換えてください。ジョブについては、個人鍵を専用のアイデンティティと文書化された例外に置き換えてください。

鍵のリストに多くのアイデンティティが含まれている

1Password SSH Agent は、設定されたベールから対象となる鍵を公開します。スコープされたエージェント設定またはホスト固有の SSH 設定を使用してください。 エージェントのドキュメント ] には、OpenSSH サーバーの 6 鍵制限についても言及されています。

コマンドを手動では動作するがジョブでは失敗する

アイデンティティ、ベールスコープ、環境、ホスト鍵データ、作業ディレクトリ、承認の前提条件を比較してください。インタラクティブな 1Password セッションには人間の同意が含まれます。スケジュールされたジョブには含まれません。ジョブは別のアクセスモードとして設計してください。

MCP サーバーは接続されているがタスクが失敗する

接続は認可を証明しません。ツールの検出、サーバー認証情報、クライアントの同意、オペレーティングシステムの権限、ネットワークアクセス、およびターゲット側の権限を、それぞれ独立した手順で確認してください。最初のテストは読み取り専用として保持してください。

次のステップ

新しい承認には、現在の2026-07-28版MCP仕様を使用してください。本記事内の2025-06-18版仕様のリンクは、歴史的な背景情報です。

1つの合成リポジトリと1つの読み取り専用MCPツールから開始してください。制御された環境で証拠が得られるまで、各期待される結果は未テストとして記録してください。その後、本番環境以外のターゲット、指定されたオペレーター、検証済みのホストキー、および書面によるロールバック記録を用いて、ワークフローを繰り返してください。

現在のコマンドフラグについては、 1Password CLIリファレンス ] をお読みください。サービスアカウントの自動化を作成する前に、 スクリプトにシークレットを読み込む ] をお読みください。新しいサーバーからのツールを承認する前に、 MCP仕様 ] をお読みください。

対話型SSHは人間の承認を必須とします。無人アクセスは分離してください。ターゲットがエージェントベースの認証をサポートしている場合、秘密鍵は常に読み取らないようにしてください。