AIにアプリを作ってもらい、外部サービスへ接続する段階で「APIキーを設定してください」と言われる。ここでキーを会話に貼り付けたり、プロジェクトのファイルへそのまま書いたりしていませんか。

1Password Environments MCPは、開発用の秘密情報の置き場所や接続設定を、Claude CodeやCodexから管理する仕組みです。 APIキーなどの値を1Passwordに保管し、必要なアプリへ渡すための準備を進められます。

このガイドでは、開発用のアプリ1つにAPIキーを設定する例で、できること、接続方法、依頼文、注意点を整理します。2026年11月11日時点の公式資料と、Macで撮影した実際の設定・承認画面を使って説明します。

実機で確認できたのは、Codexの会話にEnvironment名の一覧が表示されたことまでです。 アプリからのAPI呼び出しや、秘密値が会話・ログへ出ないことは検証していません。以下では、確認できた画面と、今後の動作確認で行う手順を分けて記載します。

何ができる? 開発用の秘密情報をまとめて管理する

Environmentsは、プロジェクトや開発段階ごとにAPIキーなどをまとめる機能です。普段ログイン情報を入れている保管庫(Vault)のアイテムとは別に管理します。

たとえば、試作中の社内ツール用に report-app-dev、公開前の検証用に report-app-staging と分けます。それぞれに必要なキーだけを入れれば、どの設定を開発で使うか整理しやすくなります。1Password Environmentsの公式説明

MCPは、AIが外部ツールの機能を使うための接続方式です。このMCPサーバーは手元の1Passwordデスクトップアプリの一部として動き、次の操作を提供します。

やりたいこと できる操作
プロジェクト別に設定を整理する Environmentの一覧取得、作成、名前の変更
必要なキーが登録されているか確認する 秘密情報の名前を一覧で取得する
設定項目を増やす・更新する 秘密情報の追加・更新
アプリから設定を読み込む準備をする ローカルの .env をマウントし、その一覧を確認する

保存済みの秘密値をMCPの応答として取り出す機能はありません。 名前や設定を扱う操作と、実際に値を使ってアプリを動かす操作を分けて考えます。MCPサーバーの公式仕様

この記事の対象は、開発用のEnvironmentsです。通常のVaultにあるログイン情報全般の操作や、「1Password for Claude」の使い方は扱いません。

最初に理解したい「MCP」と「.env」の違い

.env は、アプリへ渡す設定をまとめるときによく使うファイル名です。たとえば REPORT_API_KEY が設定の名前で、その右側に入れる文字列が秘密値に当たります。

1Passwordでマウントする .env は、秘密値を平文で保存した普通のファイルではありません。指定した場所に名前付きパイプ(FIFO)という読み取り用の入口を作り、アプリが読むときに1Passwordから値を渡します。

MCPはAIへ名前などを返し、保存済みの秘密値は返さない。一方、マウントした.envは一度読み取りを承認すると、1Passwordのロックかマウント無効化まで全プロセスが読めることを示す模式図。

図の上段はAIによる管理、下段はアプリによる値の読み取りです。上段で秘密値が返らなくても、下段を使えるプロセスは値を読めます。

一度 .env の読み取りを承認すると、1Passwordをロックするか、そのマウントを無効にするまで、すべてのプロセスが読めます。読み取るプロセスごとの区別はありません。 AIにシェルやファイルの読み取りを許していれば、そちらから値へ到達する可能性があります。ローカル.envの仕組みと承認の範囲

したがって、「MCPが値を返さない」という性質だけを根拠に、AIへどんなコマンドでも実行させてよいとは判断できません。

使い始める前に確認すること

このガイドのローカルMCPと .env マウントを使う経路は、Mac・Linuxが対象です。1Passwordの契約とデスクトップアプリ、ローカルの stdio 接続に対応したMCPクライアントが必要です。リモート接続専用のMCPクライアントでは使えません。公式プラグインの対応環境

  • 会社のアカウントなら利用許可を確認する。 EnvironmentsやローカルMCPが管理者のポリシーで無効になっている場合があります。
  • 最初は開発用のキーにする。 本番データを読み書きするキーではなく、権限と利用額を小さくした検証用のものを用意します。
  • 1Passwordとアプリを動かすPCを確認する。 このローカル接続を設定しただけで、別のクラウド実行環境にも秘密情報が届くとは考えないでください。
  • 既存の .env を上書きしない。 まず何が入っているか、Gitで追跡しているか、他のアプリが使っていないかを担当者と確認します。

Windows版1PasswordでEnvironmentsを管理できることと、このローカルMCP・マウントの対応は別です。Windowsの別経路を使う場合は、CLIやSDKの公式案内から対応方法を確認してください。

先に1Password側のMCP連携を有効にする

1Passwordデスクトップアプリの 設定 → 開発者 を開き、MCPクライアントとの統合(英語表示では Integrate with MCP clients)を有効にします。Claude CodeとCodexのどちらでも、この設定が先に必要です。

1Passwordの設定の開発者画面。MCPクライアントとの統合はチェックが外れている。

撮影時は「MCPクライアントとの統合」のチェックが外れており、オフの状態です。上の「1Password CLIと連携」「1Password SDKsと連携」にチェックがあっても、MCP連携が有効になったことにはなりません。

接続する:Claude Codeの場合

  1. Claude Codeで /plugin を開き、1Password Developer Tools を検索します。
  2. 詳細画面で配布元とリポジトリ 1Password/1password-claude-plugin を確かめ、インストール範囲を選びます。最初の検証なら、今のリポジトリで自分だけ使う Install for you, in this repo only (local scope) が範囲を絞りやすい選択です。
  3. 新しいセッションを開始し、/mcp で1Passwordサーバーの接続状態を確認します。
  4. 次のように依頼し、1Password側に出る承認画面の対象と操作を確認します。

1Password Environmentsの一覧を、名前だけ表示してください。作成や変更はまだしないでください。

Claude Codeの1Password Developer Tools詳細画面。user、project、localのインストール範囲を選べる。

詳細画面には、user scope、project scope、local scopeの3つが並びます。画像は選択前の画面で、先頭のuser scopeが選ばれています。リポジトリ内の自分だけに入れたい場合は、local scopeへ移動してから確定します。

公式プラグインは、MCP接続設定と、Environmentsを扱う手順をAIへ伝えるスキルをまとめて入れます。公式資料では、ターミナル・IDEで利用するClaude Codeは 2.1.273以降 と案内されています。Claude Codeプラグインの導入手順

検索から見つからない場合は、公式マーケットプレースを追加する方法もあります。Claude Codeのセッション内で、次の順に入力します。

/plugin marketplace add 1Password/1password-claude-plugin
/plugin install 1password@1password

インストール先の範囲を確認し、再起動後に接続状態を確かめます。知らない配布元の同名プラグインを代わりに入れないようにしてください。1Password公式の接続手順

接続する:Codexの場合

Codexの設定で プラグイン → MCP → 追加 から、カスタムMCPに接続する画面を開きます。公式資料では MCP servers → + Add server と案内されている箇所です。表示はアプリのバージョンや言語設定で異なります。

CodexのカスタムMCP追加フォーム。STDIOが選択され、名前と起動用コマンドはまだ未入力。

画像は未入力のフォームです。設定済みの例ではありません。 起動用コマンド欄に薄く表示されている openai-dev-mcp serve-sqlite は入力例で、1Password用のコマンドではありません。次のように入力します。

  • 名前: 1password など、識別しやすい名前
  • タイプ: STDIO
  • 起動用コマンド: 1password-mcp

引数・環境変数などは、1Passwordの接続に別途必要な指定がなければ追加せず保存します。MCP一覧にサーバーが表示され、有効になっていることを確認します。Codex向けの公式接続手順

一覧表示を頼み、承認される権限を確認する

最初は、次のように変更とファイルの読み取りを除外して依頼します。

1PasswordのEnvironmentの名前を一覧表示して。変更や.envの読み取りはしないで。

今回のCodexでの操作では、1Passwordの承認画面に接続元が ChatGPT と表示されました。アカウント単位とEnvironment単位で、表示される権限が異なります。

ChatGPTによる1Passwordアカウントへのアクセス承認。Environmentの一覧取得と作成の権限を表示している。

アカウント単位の画面には、List environments(一覧取得)と Create environment(作成)が表示されています。

ChatGPTによるreport-app-devへのアクセス承認。名前変更、秘密情報の追加・更新、ローカルenvファイル作成などの権限を表示している。

report-app-dev に対する画面には、次の5項目が表示されています。

  • Rename environment: Environment名の変更
  • List environment secret names: 秘密情報の名前の一覧取得
  • Create/update environment secrets: 秘密情報の作成・更新
  • Create a local env file: ローカルenvファイルの作成
  • List local env files: ローカルenvファイルの一覧取得

「一覧を表示して」と頼んでも、承認画面には作成・更新を含む権限が表示されることがあります。 依頼文を読み取りだけにしても、それだけで接続先に与える権限が読み取り専用になるわけではありません。接続元、対象アカウント・Environment、許可する操作を見てから承認してください。ここに掲載した2枚はMCPアクセスの権限承認画面で、.env の読み取り承認とは別です。

Codexの会話にEnvironment名report-app-devが1件表示された結果。変更と.envの読み取りを行わないよう依頼している。

承認後、Codexの会話には report-app-dev が1件表示されました。画面上では「変更や.envの読み取りはしていない」と回答されています。この記事で確認できた接続結果は、この一覧表示です。 この結果だけで、APIキーを使ったアプリの動作や、秘密値の保護まで検証できたとは扱いません。

プロジェクトの指示にも確認方法を書く

プロジェクトの指示には、たとえば次のように、使うツールと確認方法を書けます。

1Password Environmentsの管理にはMCPを使ってください。秘密値は会話やログに出さず、登録の確認は名前の一覧、マウントの確認はマウント一覧で行ってください。マウント済み.envを確認目的で読み取らないでください。

こうした指示は操作をそろえる助けになりますが、読み取りを技術的に禁止する設定ではありません。AI側のファイル・コマンド実行権限も別に確認します。

実用例:アプリ1つに開発用のAPIキーを設定する

ここからは、架空の社内レポート作成アプリを例にします。Environment名を report-app-dev、アプリが読む設定名を REPORT_API_KEY とします。実際には、利用するアプリで決められた変数名に置き換えてください。

1. 保存先を決め、値は1Password側で入力する

AIには、まず名前の確認と作成だけを依頼します。

開発用のEnvironmentとしてreport-app-devを使います。同名のものがあるか確認し、なければ作成してください。同名のものがあれば変更せず知らせてください。秘密値は私が1Passwordで入力します。

次に1Passwordデスクトップアプリの開発者向け画面から対象のEnvironmentを開き、シークレットを追加する(英語では New secret)で REPORT_API_KEY と値を登録します。今回撮影した画面では、開発者 → 環境 → report-app-dev の中に名前が表示され、値は伏せ字になっていました。実際のキーはAIとの会話へ貼り付けません。Environmentの作成・秘密情報の登録

AIには REPORT_API_KEY という名前が存在するかだけを確認してもらいます。空欄やダミー値でも名前は存在するため、これだけで接続成功とは判断しません。

2. アプリが読む場所へマウントする

対象のアプリがどの .env を読むかを確認してから、場所を指定します。以下の /絶対パス/report-app/.env は説明用なので、実際の場所に置き換えます。

report-app-devを、/絶対パス/report-app/.envにマウントしてください。既存のファイルや同じ場所のマウントがある場合は、上書きせず状況を知らせてください。完了後はマウント一覧でEnvironmentとパスを確認し、中身は読み取らないでください。

1Passwordの接続画面でローカル .env とパスが表示されても、それだけで稼働確認は完了しません。今回撮影した接続画面にも 「有効化」 ボタンがありました。この表示を、有効なマウントやアプリからの読み取り成功の証拠にはしていません。

公式プラグインの手順でも、マウント確認には list_local_env_files を使います。対象Environment、パス、有効状態を確認します。普通のファイルとは形式が違うため、単純なファイル存在チェックだけで成否を決めないことが大切です。公式プラグインの確認手順

3. アプリを起動して、小さく動作確認する

ここからは、一覧表示の次に行う動作確認の手順です。本記事ではAPI呼び出しの成功までは確認していません。 利用中のアプリの手順に沿って起動します。読み取り時に1Passwordの承認が出たら、自分が始めた操作によるものか確かめてから承認します。MCP接続時の権限承認と、.env を使う際の認証は分けて確認してください。

確認するのは、キーそのものではなく、次の結果です。

  • 指定した設定名をアプリが認識しているか
  • 開発用の接続先に対する小さなテストが成功するか
  • エラーやデバッグログにキーが出ていないか

APIを呼ぶテストは、課金やデータ変更のある操作を避け、サービスに用意された検証用の方法から始めます。cat .env や環境変数全体の表示を、AIへの確認依頼に使わないようにします。

4. 作業を終えたら入口を閉じる

使い終わったら1Passwordをロックするか、不要なローカルマウントを無効にします。

ただし、すでに読み取ったアプリのメモリや、誤って出力したログの値まで消えるわけではありません。漏えいが疑われるときは、接続先サービスでキーを失効・再発行する対応が必要です。

既存の.envを移すときは、AIが元の値を読む点に注意

Claude Codeプラグインには、既存の平文 .env を読み、Environmentsへ取り込み、元の場所へマウントする流れがあります。この移行ではAIが元ファイルの名前と値を読み取ります。会話に値を表示しないことと、AIが値を処理しないことは別です。

AIへ元の値を渡したくない場合は、1Passwordアプリの .envファイルをインポート(英語では Import .env file) を使って自分で取り込み、AIには登録名やマウント設定の確認を依頼する進め方を検討します。既存ファイルを消す前には、取り込み結果とアプリの動作を確認してください。取り込み時の公式手順

また、移行しても、過去のGit履歴、チャット、ログなどに出た値は無効になりません。以前に平文で扱っていたキーは交換を計画します。Gitで追跡されている .env を置き換える場合は、公式手順が案内する削除とコミットの工程も担当者と確認してください。公式プラグインの移行手順

うまく動かないときは、値を表示する前に切り分ける

状況 最初に確認すること
MCPが接続できない 1Passwordの起動・ロック状態、MCP連携設定、管理者の許可、クライアントの再起動
Environmentが見つからない 1PasswordのアカウントとEnvironment名が合っているか
マウントしたのに読めない マウント一覧のパスと有効状態、アプリが実際に読むパス
起動が止まる・読み取りに失敗する IDEなど別のアプリで同じ.envを開いていないか
開発サーバーが再起動を繰り返す .envの変更を監視する設定が影響していないか

ローカルマウントは同時読み取り向けではなく、ファイルを監視する開発ツールとの相性にも注意が必要です。たとえばViteについては、マウントした .env を監視対象から外す設定例が公式にあります。使っている言語のdotenvライブラリの対応状況も確認してください。互換性と制約の一覧

追加の対策として、必要なマウントが設定されているか、コマンド実行前に確かめる公式の検証フックもあります。これはマウントの状態を確認する仕組みで、秘密値の持ち出し全般を防ぐものではありません。標準モードには、確認用データベースへアクセスできない場合に処理を続ける動作もあります。検証フックの公式説明

チームで使う前に決めておくこと

開発担当者や委託先とは、次の5点をそろえておくと運用しやすくなります。

  1. 分け方: 開発・検証・本番のEnvironmentとキーをどう分けるか。
  2. 許可: 誰が値を登録・更新し、AIにどこまでの操作を許すか。
  3. 実行場所: どのPCでアプリを動かし、ローカルの入口をいつ閉じるか。
  4. 確認方法: 値を見せずに、登録・マウント・アプリの動作をどう確かめるか。
  5. 事故対応: チャットやログへ値が出たとき、誰がキーを失効・交換するか。

最初の目標は、開発用のアプリ1つで、値を会話に貼らずに設定し、正しく動いたことまで確認できる手順を作ることです。MCPで設定作業を任せながら、実際に値を読める範囲は別に管理してください。