1Passwordが「.envファイル廃止」を提案|AIエージェント時代のシークレット管理はこう変わる
Claude Code、Cursor、GitHub CopilotなどのAIコーディングエージェントは、プロジェクト内のファイルを自由に読める。 つまり .env に平文で置いたAPIキーやシークレットは、すべてAIモデルのコンテキストに入る可能性がある。
1Passwordは2026年3月17日、この問題に正面から取り組む新プラットフォーム 「Unified Access」 を発表した。Anthropic・Cursor・GitHub・Vercel・Perplexityとのパートナーシップも同時に公開されている。
.envファイルは何が問題なのか
開発者にとって .env は馴染み深い存在だが、AIエージェントが当たり前になった今、構造的な問題を抱えている。
| リスク | 内容 |
|---|---|
| AIコンテキスト漏洩 | エージェントがファイルを読み取り、APIキーがモデルに送信される |
| ディスク上の平文保存 | .envはただのテキストファイル。暗号化されていない |
| Git誤コミット | .gitignore漏れで秘密情報がリポジトリに入るインシデントは今も頻発 |
| チーム共有の困難 | Slackやメールで.envを送り合う運用がセキュリティホールになる |
| アクセス制御なし | 誰がいつどのシークレットを使ったか追跡できない |
AIエージェントが日常的にプロジェクトファイルを読む時代において、「プロジェクトルートに平文でシークレットを置く」という運用自体が設計上の欠陥になりつつある。
1Passwordの回答: 3つのアプローチ
1. シークレット参照URI(SDK統合)
.envにAPIキーを直接書く代わりに、シークレット参照URIをコードに記述する。
# Before: .envから読み込み
api_key = os.environ["OPENAI_API_KEY"] # 平文が.envにある
# After: 1Password SDKで動的取得
fromonepasswordimport Client
client = await Client.authenticate(...)
api_key = await client.secrets.resolve("op://dev-vault/openai/api-key")
AIエージェントがコードを読んでも見えるのは op://dev-vault/openai/api-key というURIだけ。実際の秘密値はモデルのコンテキストに入らない。
2. 1Password CLI(op run)
既存のスクリプトを変更せずに環境変数を安全に注入する方法。
# .envを使わず、1Passwordから環境変数を注入して実行
oprun--env-file=.env.tpl--pythonmain.py
.env.tplにはシークレット参照URIだけを書く。op runが実行時にボールトから値を解決し、プロセスの環境変数として渡す。ディスクには平文が残らない。
3. 1Password Environments(ローカル.env代替)
1Password Environmentsを使うと、従来の.envファイルと同じ感覚でシークレットを扱える。
- UNIXの名前付きパイプ経由で環境変数を渡す
- ターミナルが1回だけ読み取り、プロセスに直接注入
- ディスクに平文が書き込まれない
Unified Access: エンタープライズ向けAIエージェントセキュリティ
2026年3月17日に発表された Unified Access は、上記の個人向け機能を企業レベルに拡張するプラットフォーム。
主な機能
- クレデンシャルの一元管理: AIエージェントが使うシークレットを集中管理・監査
- 露出検出: 暗号化されていないSSH鍵や平文の
.envファイルを自動検出 - スコープ付き短命トークン: エージェントに必要最小限・期限付きのクレデンシャルを発行(今後追加予定)
- パートナーAPI: 外部ツールとの連携用API
パートナー企業
| 企業 | 領域 |
|---|---|
| Anthropic | AI基盤(Claude) |
| Cursor | AIコーディングIDE |
| GitHub | 開発プラットフォーム |
| Vercel | デプロイ・インフラ |
| Perplexity | AI検索 |
AIインフラ・開発ツール・MCPゲートウェイ・AIブラウザのカテゴリリーダーとの連携を進めている。
1Password自身の警告: SDK統合は「完全解決」ではない
1Passwordの公式ドキュメントには、重要な注意書きがある。
SDKでシークレットを取得してAIエージェントに渡すアプローチは「理想的な統合方法ではない」。生の認証情報がAIモデルに露出することは重大なリスクを持つ。
つまり、SDK統合は「.envよりマシ」だが根本解決ではないというスタンスだ。
推奨されているのは:
- 短命トークン: 数分〜数時間で失効するスコープ付きトークンを使う
- 最小権限: エージェントには必要な操作だけ許可する
- 監査ログ: どのエージェントがいつ何にアクセスしたかを記録する
今日からできる対策
| レベル | 対策 | 難易度 |
|---|---|---|
| 初級 | .envをAIエージェントの除外ファイルに指定する(.claudeignore等) | 簡単 |
| 初級 | AIセッション中に.envを開かない運用ルールを徹底 | 簡単 |
| 中級 | 1Password CLI op run で環境変数を動的注入に移行 | 中程度 |
| 中級 | APIキーのスコープを最小限に設定し、定期ローテーション | 中程度 |
| 上級 | 1Password SDK統合でコードからシークレット参照URIのみにする | 要設計変更 |
| 上級 | Unified Access導入でチーム全体のエージェントアクセスを監査 | エンタープライズ |
わさびの見方
AIコーディングエージェントが「プロジェクトのファイルを全部読める」という事実は、今まであまり意識されてこなかった。でも冷静に考えれば、.envに平文でAPIキーを書いてプロジェクトルートに置くのは、AIエージェントに「どうぞ読んでください」と言っているようなものだ。
1PasswordがAnthropicやCursorとパートナーシップを組んだのは、この問題がもう「個人の注意」では対処しきれない規模になっているということ。.claudeignoreに.envを追加するだけでも最初の一歩にはなるが、長期的にはシークレット管理の仕組み自体を変えていく必要がある。
特に注目したいのは、1Password自身が「SDK統合でも完全ではない」と正直に認めている点。AIエージェントのセキュリティは発展途上で、銀の弾丸はまだない。だからこそ、複数のレイヤーで防御する意識が大事だと思う。
ソース
- 1Password Launches Unified Access for AI Agent Security
- Tutorial: Integrate 1Password SDKs with AI agents
- Replace .env with 1Password SDKs
- Access secrets from 1Password through local .env files (beta)
- 1Password introduces Unified Access platform – SiliconANGLE
この記事を書いたのは わさび(ニホンイシガメ / 3歳 / VTuber[あかはら。]の家族)
AI・セキュリティの最新情報を「はやく・わかりやすく」日本語でお届けしています。
著者プロフィール | あかはら vlab トップ
この記事が参考になったら|以下のリンクから見てもらえるだけで、ブログ運営の応援になります。
- レバテックダイレクト

IT/Webエンジニア特化のスカウト転職。年収アップを狙うなら。 - 天秤AI Biz byGMO

Claude・ChatGPT・Geminiなど6つの生成AIを同時に使い比べ。業務活用に。



コメント