📖 この記事で分かること
・CursorとはAIがコードを書いてくれるエディタで、1PasswordはパスワードやAPI鍵を安全に管理するツールです
・この2つが連携することで、AIにAPI鍵を直接見せずに開発できるようになりました
・開発速度を落とさず、秘密情報の流出リスクをほぼゼロにできます
・実際の設定方法と使い方を、手順を追って解説します
💡 知っておきたい用語
・1Password:パスワードやAPI鍵などの秘密情報を暗号化して保管・管理するツール。個人用から企業向けまで幅広く使われています
・Cursor:AIがコード補完や生成を支援してくれるコードエディタ。Visual Studio Codeベースで、自然言語でプログラムを書けます
・Hooks【フックス】:特定のタイミングで自動実行されるスクリプト。今回はコマンド実行前にセキュリティチェックを行います
最終更新日: 2025年12月23日
なぜ今、AIコーディングにセキュリティ統合が必要なのか
正直に言って、.envファイルにAPI鍵を直接書き込んだ経験、ありませんか?
開発現場では、データベースのパスワードやOpenAIのAPIキー、AWSの認証情報など、様々な秘密鍵を扱います。ただ、これまでは「開発効率」と「セキュリティ」がトレードオフの関係にありました。厳重に管理しようとすると手間がかかり、手軽にしようとするとリスクが高まる。この矛盾に、多くの開発者が悩んできました。
そこにAIコーディングツールの普及が加わりました。CursorのようなAI支援エディタは、コード生成の速度を劇的に向上させています。ただ、ここで新たな問題が浮上します。AIエージェントに秘密鍵へのアクセスを許可すべきかという問題です。
実に興味深いのは、1PasswordとCursorが2025年12月19日に発表した統合が、この問題に対して「AIは秘密鍵を見る必要がない」という答えを提示したことです。
1Passwordとは?開発者が知るべき基礎知識
記事の本題に入る前に、1Passwordについて簡単に整理しておきましょう。
1Passwordは、もともと個人向けのパスワード管理ツールとして広く知られていますが、実は企業向けのシークレット管理機能も持っています。特に「1Password Environments」という機能は、開発者にとって重要です。
これは何かというと、API鍵やデータベース認証情報などの開発に必要な秘密情報を、暗号化して一元管理できる仕組みです。従来の.envファイルと違い、以下のような特徴があります:
- 暗号化保存:秘密鍵はすべて暗号化され、プレーンテキストでディスクに保存されない
- アクセス制御:チームメンバーごとに細かくアクセス権限を設定できる
- 監査ログ:誰がいつ秘密鍵にアクセスしたか記録が残る
- ローカルマウント:必要な時だけ
.envファイルとして利用可能
つまり、セキュリティを保ちながら、開発者の使い勝手も損なわない設計になっているわけです。
Cursor×1Password統合で何が変わったのか
では、本題のCursor統合について見ていきましょう。
従来の課題:秘密鍵管理のジレンマ
これまでAI支援開発では、こんな問題がありました:
- ハードコーディングのリスク:
.envファイルに直接API鍵を書くと、誤ってGitにコミットしてしまう危険性 - AIエージェントの無制限アクセス:Cursorが環境変数を読み取れる状態だと、AIにすべての秘密鍵が見えてしまう
- 履歴への残留:コマンド履歴やログにトークンが残ってしまう
- 管理の手間:セキュアにしようとすると、毎回手動で鍵を入力する必要がある
「Developers should never have to paste tokens into config files or store long-lived credentials on disk.」
この1Passwordの指摘は、まさに開発現場の実態を表しています。
新統合の画期的な仕組み
今回の統合では、Hooks Script【フックスクリプト】という技術が鍵になります。
Cursorには「Hooks」という機能があり、特定のタイミング(例:コマンド実行前、ファイル保存時など)で自動的にスクリプトを実行できます。1PasswordはこのHooksに対応したスクリプトを提供し、以下のフローを実現しました:
1. 事前チェック
CursorのAIエージェントがシェルコマンドを実行しようとすると、その前にHooks Scriptが起動します。
2. 環境検証
スクリプトは、1Password Environmentsで管理されている.envファイルが正しくマウントされているか確認します。
3. ユーザー認可
必要な秘密鍵へのアクセスが必要な場合、1Passwordが開発者に承認を求めます。ここが重要で、AIではなく人間が判断します。
4. ジャストインタイム提供
承認されると、秘密鍵はそのランタイムセッションのメモリ内にのみ展開されます。ディスクには書き込まれません。
5. 実行または通知
すべてのチェックが通れば、Cursorはコマンドを実行します。問題があれば、具体的なエラーメッセージが返されます。
「When a process requests access, 1Password prompts you to authorize and then makes the required secret available in memory for the runtime session.」
注目すべき点は、この仕組みによりAIエージェントが生の秘密鍵を直接扱うことがないということです。AIはあくまでコード生成や補完を担当し、実際の秘密鍵へのアクセスは1Passwordと人間が管理します。
具体的なメリット:3つのゼロ
この統合がもたらす効果を、具体的に見てみましょう。
1. プレーンテキスト鍵のゼロ化
「No plaintext keys committed to disk or source code.」
これまでのように.envファイルにAPI鍵を書き込む必要がなくなります。すべて1Passwordで管理され、必要な時だけメモリに展開されます。つまり、誤ってGitにコミットしてしまうリスクがゼロになります。
2. ハードコード環境変数のゼロ化
コード内に直接process.env.API_KEYのような記述をしても、その値は1Passwordから動的に提供されます。ソースコード自体には秘密情報が含まれません。
3. 履歴残留トークンのゼロ化
コマンド履歴やログファイルに秘密鍵が残ることもありません。メモリのみでの提供なので、セッション終了と同時に情報は消えます。
でも、これだけではありません。実は既存の1Passwordポリシーをそのまま活用できるというのが、企業にとって大きなメリットです。
新しいツールを導入する際、既存のセキュリティポリシーやアクセス権限を再設定する必要があると、それだけで導入のハードルが上がります。ただ、今回の統合では、すでに1Passwordで設定しているヴォルトやポリシー、ユーザー権限がそのまま使えます。
実際に使ってみよう:設定ガイド
では、具体的にどう設定するのか見ていきましょう。
前提条件
以下が必要です:
- 1Passwordアカウント(個人版または企業版)
- Cursor エディタ(最新版推奨)
- 1Password CLI【コマンドラインインターフェース】がインストール済み
※ 1Password CLI インストール方法はこちら
https://developer.1password.com/docs/cli/get-started/
ステップ1:1Password Environmentsの設定
まず、1Passwordで開発用の環境を作成します。

- 1Passwordアプリを開き、「Developer」セクションへ移動
- 「Environments」から新しい環境を作成
- 必要なAPI鍵やデータベース認証情報を登録
- プロジェクトに応じた
.envファイル形式で設定
例えば、こんな感じです:
DATABASE_URL=postgresql://user:pass@localhost/db
OPENAI_API_KEY=sk-xxxxxxxxxxxxx
AWS_ACCESS_KEY_ID=AKIAXXXXXXXX
これらの情報は、1Password内で暗号化されて保存されます。
ステップ2:Hooks Scriptのインストール
次に、Cursor用のHooks Scriptを設定します。
- 1Passwordの公式ドキュメントから、Hooks Script用の設定ファイルをダウンロード
- プロジェクトのルートディレクトリに
hooks.jsonを配置 - スクリプト内で、使用する1Password Environmentを指定
hooks.jsonの基本構造は以下のようになります:
{
"beforeCommand": {
"script": "op run --env-file=.env -- $COMMAND"
}
}
これにより、Cursorがコマンドを実行する前に、1Passwordが環境を検証します。
ステップ3:Cursorでの動作確認
設定が完了したら、実際に動かしてみましょう。
- Cursorでプロジェクトを開く
- ターミナルで環境変数を使うコマンドを実行
- 1Passwordから承認を求めるプロンプトが表示される
- 承認すると、秘密鍵がメモリに展開され、コマンドが実行される
初回は、Touch IDや1Passwordのマスターパスワードでの認証が必要です。以降は、設定したポリシーに応じて自動的に承認されるか、都度確認が入ります。
トラブルシューティング
もしエラーが出た場合、Hooks Scriptが具体的な修正方法を教えてくれます。例えば:
- 「1Password Environment ‘dev’ が見つかりません」→ Environment名を確認
- 「認証に失敗しました」→ 1Password CLIにログインしているか確認
- 「必要な環境変数が不足しています」→ 1Password Environment内の設定を確認
このように、エラーメッセージが親切なので、初めてでも比較的スムーズに設定できます。
今後の展開:さらなる統合が予定されている
現在の統合は「第一歩」に過ぎません。
1PasswordとCursorは、今後数ヶ月で以下の機能拡張を予定しています:
- より豊富なポリシーと権限管理:チームやプロジェクトごとに、さらに細かくアクセス制御を設定可能に
- Model Context Protocol【エムシーピー】統合の拡大:Cursorが利用するAIモデルとの連携強化
- 自動シークレットローテーション:定期的にAPI鍵を自動更新し、漏洩リスクをさらに低減
- 可視性の向上:誰がいつどの秘密鍵にアクセスしたか、より詳細なログ機能
特に注目なのは、自動ローテーション機能です。これが実現すれば、たとえAPI鍵が外部に漏れても、すぐに無効化されるため、被害を最小限に抑えられます。
エンジニアとして感じること
個人的には、この統合は「開発ツールのセキュリティ思想が進化した」象徴だと感じています。
これまでのセキュリティツールは、どうしても「使いにくい」「面倒」という印象がありました。でも、Cursor×1Passwordの統合は違います。開発者のワークフローを邪魔せず、むしろ自然に組み込まれています。
AI支援開発が当たり前になる時代に、「AIに何を見せるべきか」という新しい課題が生まれました。今回の統合は、その課題に対する一つの明確な答えです。
セキュリティは、もはや「後付け」ではなく、開発フローの「自然な一部」になるべきだ。そんなメッセージが伝わってきます。
よくある質問
Q: 既存のCursorプロジェクトにも適用できますか?
A: はい、可能です。既存プロジェクトにhooks.jsonを追加し、1Password Environmentsに秘密鍵を移行するだけで利用開始できます。既存の.envファイルは、段階的に移行できます。
Q: 1Passwordの有料プランが必要ですか?
A: 1Password Environmentsは、個人向けプランでも利用できます。ただし、チームでの利用やより高度なポリシー管理が必要な場合は、企業向けプランが推奨されます。
Q: Cursor以外のエディタでも使えますか?
A: 現時点では、Cursor専用の統合です。ただ、1Password CLIを使えば、他のエディタやツールでも同様の仕組みを構築できます。今後、他のツールとの統合も拡大する可能性があります。
Q: パフォーマンスへの影響はありますか?
A: Hooks Scriptの実行は瞬時に完了するため、体感的な遅延はほとんどありません。初回認証時のみ、1Passwordでの承認操作が必要ですが、以降はポリシーに応じて自動化できます。
Q: オフライン環境でも動作しますか?
A: 1Passwordはローカルキャッシュを持つため、短時間のオフラインであれば動作します。ただし、長期間のオフライン作業には向いていません。
まとめ
Cursor×1Passwordの統合は、AI時代の開発セキュリティに新しい標準を示しました。
重要なポイントをおさらいしましょう:
- AIエージェントは秘密鍵を直接扱わない:ジャストインタイムでの提供により、AIがプレーンテキストの鍵を見ることがない
- 開発速度を犠牲にしない:セキュリティを強化しながらも、開発者のワークフローは変わらない
- 既存のポリシーをそのまま活用:新しいツールでも、既存の1Password設定が使える
- 今後さらに進化:自動ローテーションや高度なポリシー管理が予定されている
開発現場では、「速度」と「セキュリティ」の両立が常に課題でした。この統合は、その課題に対する一つの明確な答えです。
もしあなたがCursorで開発しているなら、ぜひ今すぐ試してみてください。設定は思ったより簡単で、得られる安心感は大きいはずです。
セキュリティは、もう「面倒なもの」ではなく、「開発を加速させるもの」になりつつあります。
用語解説
API【エーピーアイ】
Application Programming Interfaceの略。ソフトウェア同士が情報をやり取りするための「窓口」や「規約」のこと。例えば、OpenAIのAPIを使うと、自分のアプリからChatGPTの機能を呼び出せます。
環境変数
プログラムが動作する際に参照する設定情報のこと。データベースの接続先やAPI鍵など、環境ごとに異なる情報を管理するために使われます。従来は.envファイルに記述されることが多かったです。
ジャストインタイム(Just-in-Time)
「必要な時だけ、必要なものを提供する」という考え方。セキュリティの文脈では、秘密鍵を常に利用可能にするのではなく、実際に使う瞬間だけアクセスを許可することで、リスクを最小化します。
ランタイム(Runtime)
プログラムが実際に実行されている時間・状態のこと。「ランタイムエラー」といえば実行中に発生するエラー、「ランタイム環境」といえばプログラムを動かすための環境を指します。
Hooks【フックス】
特定のイベントやタイミングで自動的に実行される仕組み。釣りの「フック(釣り針)」のように、イベントを「引っ掛けて」処理を挟み込むイメージです。Gitのpre-commitフックなども同じ概念です。
免責事項: 本記事の情報は2025年12月23日時点のものです。1PasswordとCursorの機能は今後のアップデートで変更される可能性があります。実際の導入前には、最新の公式ドキュメントをご確認ください。
Citations:
[1] https://1password.com/blog/bringing-secure-just-in-time-secrets-to-cursor-with-1password
[2] https://www.1password.community/discussions/developers/%F0%9F%94%8A-securing-cursor-agentic-development-with-1password-environments/165674
[3] https://developer.1password.com/docs/environments/cursor-hook-validate
