Claude Code のクラウドセッション: API キーは環境変数ではなく「network secrets」に置き、VM の外で付けてもらう
クラウド環境の設定で API キーを network secret として登録すると、Anthropic のプロキシが、指定したホスト宛てのリクエストに VM を出たあとでヘッダを付ける。セッション内の Claude やコマンドからはキーが見えない。
なぜ必要か
- クラウド環境の「環境変数」は、その環境を使う人全員とセッション内のコマンドから読める。ドキュメント自身が「秘密を入れないで」と書いている
- エージェントにキーが見えると、ログや出力、プロンプトインジェクション経由で漏れる余地がある
- 2026-11-06 の更新で、Pro/Max/Ultra ではリポジトリに必要な依存・ネットワーク・API キーを Claude が判断して環境を作り、次回のために保存するようになった。そのときもキーは network secret として保存される(@ClaudeDevs)
登録の手順(claude.ai/code)
- 環境を編集する画面を開き、Network secrets を選ぶ
- Add secret で、Secret type は既定の Bearer のまま
- Allowed websites:
api.example.com(*.で始めるとサブドメインすべて) - Custom headers:
Authorization/PrefixBearerに値を貼る。X-Api-Keyのように素の値を送る API は名前を変えて Prefix を消す
- Allowed websites:
- Add を押すとすぐ保存される。保存後は値を再表示できない
- セッションで
curl https://api.example.com/...を頼み、キーなしで通ること、環境変数やファイルにキーが出てこないことを確かめる
仕様のポイント
- 登録したホストへは、環境のネットワーク許可レベルに関係なく到達できる(そのホストが許可リストに入るのと同じ効果)
- 付かないもの: GitHub(専用の GitHub プロキシが担当)、
api.anthropic.comと npm/PyPI/crates などの公開レジストリ、セットアップスクリプト中のリクエスト(プロキシに繋がる前に動くため) - 自前ホスト(self-hosted)の環境には network secrets がない
- Team/Enterprise で組織の管理者ロール(Owner)がない人は、1ホスト1件の簡易フォームになる(
*.は使えない)。共有環境の secret は Owner が管理画面から追加する
注意点
- 環境を archive しても、実行中のセッションでは secret が付いたまま。不要になったら先に消す
- ローカルでも同じ考え方(キーを渡さず外側で差し替える)は Deno Sandbox: API キーはプレースホルダーで渡し、許可した宛先への通信のときだけ本物に差し替える や 情報窃取型マルウェアが Claude Code・Codex・Cursor のトークンを盗む: 感染を疑ったらパスワードより先にトークンとキーを無効にする も参照
出典
- @laiso · 2026-11-08
- @ClaudeDevs · 2026-11-07
- Claude Code ドキュメント(Cloud environments: Add network secrets): code.claude.com
- Claude Code ドキュメント(Use Claude Code in the cloud: Security and isolation): code.claude.com