あなたの AI コーディング支援ツールが秘密情報を漏えいしています
May 12, 2026
AI デスクトップアシスタントやコーディングツールは外部サービスに接続するために認証情報(credentials)が必要で、多くの場合、それらの認証情報をユーザーのホームディレクトリ内の予測可能なパスに平文(plaintext)の JSON として保存しています。 この調査では、14 の人気 AI ツールにおける認証情報の保存がどのように機能するか、OS のキーチェーン統合が存在する場合/存在しない場合の違い、そして、マルウェアによる窃取からリモートセッションのハイジャック、MCP サーバー経由のサプライチェーン侵害まで、露出(exposure)を実際のリスクに変える 8 つの攻撃シナリオを扱います。
Claude、Copilot、Cursor などの AI ツールが認証情報を平文(plaintext)で保存する方法と、攻撃者がそれを悪用する 8 つの例
問題
AI デスクトップ アプリケーションは外部サービスで認証する必要があります。Claude Code は OAuth トークンを必要とします。GitHub Copilot は GitHub の認証情報を必要とします。Continue.dev は API キーを必要とします。MCP サーバーは、Azure DevOps、Slack、データベース、そしてあなたが接続したその他すべてのサービスに対するトークンを必要とします。これらの資格情報はどこに保存されるのでしょうか?ほとんどの場合、ホームディレクトリ内の平文 JSON ファイルに保存されます。これらのファイルはよく知られた場所、または予測可能な場所にあるため、システムへの読み取りアクセス権さえあれば見つけやすくなっています。
わかったこと
私は Windows、macOS、Linux のそれぞれで、14 の人気 AI ツールを調査しました(ブログ末尾の参照情報をご覧ください)。特に印象に残ったのは、以下の点です。
Claude Code CLI
~/.claude/.credentials.json には、OAuth のアクセス トークンとリフレッシュ トークンが プレーンテキストの JSON として保存されています:
{
"claudeAi": {
"type": "oauth",
"access": "sk-ant-oat01-...",
"refresh": "sk-ant-ort01-...",
"expires": 1776098433694
}
}
Linux では、そのファイルは 0600 の権限(所有者のみが読み取り/書き込み可能)で作成されます。macOS では、認証情報は Keychain に保存されます。しかし WSL では、Windows 側のファイルがマウントのデフォルト 0777 の権限を継承してしまい、Claude の OAuth トークンが 全てのプロセスから読み取れる状態 になります。ここで特に危険なのはリフレッシュ トークンです。これは長期間有効で、アクセス トークンを無期限に新たに生成できます。攻撃者がそれを入手すると、あなたが明示的に取り消すまで Claude アカウントへの継続的なアクセスが可能になります。
MCP サーバー設定:集約(aggregation)の問題
Model Context Protocol (MCP) サーバーにより、AI アシスタントが外部ツールに接続できます。各接続には認証が必要で、こうしたトークンは通常、次のような単一の設定ファイルにまとめて保存されます:
{
"mcpServers": {
"github": { "env": { "GITHUB_TOKEN": "ghp_realToken..." } },
"azure": { "env": { "ADO_MCP_AUTH_TOKEN": "eyJ0eX..." } },
"slack": { "env": { "SLACK_BOT_TOKEN": "xoxb-..." } },
"database": { "env": { "DB_PASSWORD": "prod_password" } }
}
}
1 つのファイルに複数のサービス。1 回の読み取り操作で全部を危険にさらせます。 Trend Micro は 19,402 件の MCP サーバー実装のうち 48% が、プレーンテキストで認証情報を保存することを推奨していることを発見しました。
Continue.dev: API キーがプレーンテキスト
Continue.dev は設定されたすべての API キーを ~/.continue/config.json に直接保存します:
{
"models": [{
"provider": "anthropic",
"apiKey": "sk-ant-api03-YOUR-ACTUAL-KEY"
}]
}
コミュニティでは、これが問題であることを認めています(GitHub issue #1729)。環境変数の置換はサポートされています(${VAR_NAME})が、デフォルトの動作ではありません。
Cline:認証情報がクラウドに同期される
Cline の MCP 設定は、VS Code の globalStorage 内にある暗号化されていない JSON ファイルに保存されます。問題は、VS Code の Settings Sync がこのファイルを自動的に GitHub にアップロードしてしまうことです。 Settings Sync を有効にしている場合、MCP の認証情報は GitHub のクラウド上に置かれたままになります。
VS Code SecretStorage の混乱
GitHub Copilot、Cline、そしてその他の VS Code 拡張機能は SecretStorage API を使用しており、SQLite データベース内でシークレットを暗号化します(state.vscdb)。AES-128-CBC を使います。安全に聞こえますが、次に気づくまでです:
- VS Code の拡張機能はサンドボックスなしで実行されます
- 暗号化キーは OS のキーチェーンにあり、あらゆるユーザーレベルのプロセスからアクセスできます
- 悪意のある拡張機能なら、他の拡張機能のシークレットを読み取れます
- 拡張機能の識別システムはスプーフィングに対して脆弱です
暗号化はオフラインのディスクアクセスに対しては防御になりますが、同じユーザーとして実行される任意のプロセスからの防御にはなりません。
攻撃対象面(Attack surface)の例
AI の認証情報(資格情報)の露出によって可能になる、実際の攻撃シナリオを 8 つ特定しました。
1. マルウェアによる認証情報(資格情報)の窃取
ファイルパスはインストール環境を通じて予測可能で、一貫しています:
~/.claude/.credentials.json
~/.continue/config.json
~/.aws/credentials
~/.config/gcloud/application_default_credentials.json
~/Library/Application Support/Claude/claude_desktop_config.json
~/.claude.json
Infostealer マルウェアはすでにブラウザの Cookie、SSH キー、クラウドの認証情報を狙っています。AI ツールのパスをターゲット一覧に数個追加するのは簡単です。権限昇格は不要で、標準的なユーザーレベルのファイル読み取りで十分です。
マルウェアに一度感染すると、Claude の OAuth トークン、Continue.dev のすべての API キー、すべての MCP サーバートークン、そして AWS の認証情報が得られる可能性があります。パスは、すべてのツールのすべてのインストールで同じです。
リスク:CRITICAL。 発生の可能性が高く、影響も大きいです。
2. Claude Code のリモート制御セッションをハイジャックする
これは、あなたを怖がらせるべきシナリオです。Claude Code には Remote Control 機能(claude remote-control)があり、ユーザーは claude.ai/code 経由でスマホ、タブレット、またはブラウザからローカルの Claude Code セッションを操作できます。コードの実行はすべてローカルのマシン上で行われます。リモート端末は単なる操作用インターフェースです。
問題はこれです:リモート接続には再認証が不要です。 セッションが有効になると、セッションURLを知っている誰でも指示を送れます。そして、その指示はすべて開発者のマシン上でローカルに実行されます。
そしてそれを --dangerously-skip-permissions.
このフラグは、すべてのインタラクティブな権限プロンプトを無効にします。ファイル書き込み、シェルコマンド、ネットワーク要求、MCP ツール呼び出しなど、すべてがユーザーに確認せず自動的に実行されます。これは隔離された CI/CD コンテナ向けに意図されていますが、時にはユーザーが利便性のためにワークステーションで使ってしまうことがあります。さらに settings.json で "defaultMode": "bypassPermissions" として永続的なデフォルトに設定することもできます。
攻撃チェーン:
- 攻撃者が次の場所から OAuth トークンを盗みます:
~/.claude/.credentials.json(マルウェア、SSRF、またはファイル読み取りの脆弱性経由) - トークンは持ち運び可能なので、どのマシンでも利用できます
- 被害者にアクティブなリモートコントロール セッションがある場合、攻撃者が接続して乗っ取ります
- 被害者が
--dangerously-skip-permissionsで実行している場合、攻撃者は現在 被害者のユーザーとして、制限のないシェル(shell)アクセス権:- システム上の任意のファイルを読み書きできます
- 任意のコマンドを実行します(
curl、ssh、docker、パッケージマネージャーなど) - バックドアをインストールし、データを持ち出し、他のマシンへ横展開する
- SSH キー、クラウド認証情報、そしてシステム上のその他のすべての秘密情報にアクセスする
- Git リポジトリ、CI/CD パイプライン、およびデプロイ設定を変更する
たとえ --dangerously-skip-permissions がなくても、acceptEdits モードの Claude Code はファイルの編集や一般的なファイルシステムコマンドを自動で承認します。これは依然として危険になり得ます。権限モデルは、セッションを操作する悪意のある人物から守るためではなく、偶発的な操作を防ぐために設計されています。
リスク:CRITICAL(--dangerously-skip-permissions を使用)、HIGH(デフォルト権限)。
3. Claude OAuth トークンを介した横方向への移動
攻撃者が ~/.claude/.credentials.json から Claude OAuth のリフレッシュ トークンを入手すると、次のことができます。
- リモートで新しいアクセス トークンを生成する(アクセス トークンは約 60 分で期限切れになりますが、リフレッシュ トークンは長寿命です)。
- 被害者の Claude の会話およびワークスペースのファイルにアクセスする
- 被害者が設定している任意の MCP サーバーを使用する(AI アシスタントをプロキシとして、GitHub リポジトリ、Azure DevOps プロジェクト、Slack ワークスペース、データベースにアクセスする)
トークンは持ち運び可能です。認証情報ファイルを別のマシンにコピーすれば、Claude Code がそれを使用します。Anthropic はリフレッシュトークンのローテーションを実装しているため、盗まれたトークンを使うと最終的に元のトークンが無効になる可能性があります。ただし最初の利用は成功するため、ローテーションが発動する前に攻撃者がアクセス権を得ることがあります。
リスク:高。 中程度〜高い可能性、影響は大きい。
4. MCP トークンの集約:横方向への移動
1 つの MCP 設定ファイルが 複数の 外部サービス向けのトークンを集約します。たとえば、1 つのファイルで次のような内容が得られる場合があります:
GITHUB_PERSONAL_ACCESS_TOKEN→ コードリポジトリ、PR、CI/CDADO_MCP_AUTH_TOKEN→ Azure DevOps のプロジェクトSLACK_BOT_TOKEN→ 社内の Slack ワークスペース- データベースのパスワード → 本番データ
JIRA_API_TOKEN→ プロジェクト管理、社内チケット
1つのチャネルの侵害が、限られた一部の資格情報だけを露出させる分散型の資格情報ストレージとは異なり、MCP の集約(aggregation)パターンでは、単一ファイルの開示(漏えい)が連鎖して、接続されているすべてのサービスの侵害につながります。
リスク:CRITICAL。 発生可能性が高く、影響も大きい。
5. 悪意のある VS Code 拡張機能:資格情報の流出(exfiltration)
VS Code の拡張機能はサンドボックス化なしで実行されます。すべての拡張機能が同じプロセス権限を共有しています。悪意のある、または侵害された拡張機能は、次のことができます:
-
state.vscdbの SQLite データベースに直接アクセスする - OS のキーチェーンから暗号化キーを取得します(あらゆるユーザーレベルのプロセスからアクセス可能)
- すべての拡張機能のシークレットを復号します:Copilot トークン、Cline API キー、MCP 認証情報
Cline の cline_mcp_settings.json はそもそも復号する必要がありません。VS Code の globalStorage 内に未暗号化の平文として保存されており、Settings Sync によりクラウドへ同期されます。
拡張機能を識別する package.json の publisher および name フィールドはスプーフィングに対して脆弱であり、正規の拡張機能になりすますことが可能になります。
リスク:高。 発生可能性は中程度、影響は大きい。
6. WSL 権限エスカレーション
WSL を使う開発者は、両側から攻撃を受けます。Windows にインストールされた AI ツールは認証情報を C:\Users\<you>\ の下に保存しており、これは WSL では /mnt/c/Users/<you>/ としてマウントされ、既定で 0777 の権限が付与されます。Windows 側で NTFS により保護されている同じ認証情報ファイルは、Linux 側からは world-readable になります。
マルチユーザーの WSL 環境や侵害されたコンテナでは、これは悪用しやすいです。WSL システム上で動作する任意のプロセスが、Windows 側に保存されている Claude OAuth トークンや MCP 設定などを読み取れます。
リスク:高(HIGH)(WSL ユーザー向け)。発生可能性は高く、影響は中〜中高です。
7. .mcp.json を git にコミット:認証情報の持ち出し(credential exfiltration)
リポジトリのルートにある Claude Code の .mcp.json は、チームが MCP サーバー設定を共有できるように、バージョン管理されることを目的に設計されています。開発者が env var 参照の代わりにインライン トークンを含めた場合:
- トークンが git の履歴に表示されます
- 削除した後でも
git log -p .mcp.jsonがそれらを明らかにします - 自動スキャナー(TruffleHog、GitLeaks など)は、GitHub/GitLab 全体で大規模にそれらを見つけられます
Anthropic と GitHub の secret scanning 連携では、一部の露出した API キーを検知できますが、他のサービス(Azure DevOps、Slack、データベース)の MCP 設定トークンは not 自動スキャンの対象になっていません。JSON の env ブロックに埋め込まれた ADO_MCP_AUTH_TOKEN または SLACK_BOT_TOKEN に対応する GitHub の secret scanner パターンはありません。
リスク:MEDIUM。 発生の可能性は中程度、影響は中〜高。
8. MCPサーバーを介したサプライチェーン攻撃
MCPサーバーは多くの場合 npm パッケージです。サプライチェーンのリスクは、あらゆる npm の依存と同じですが、決定的な違いがあります。 MCPサーバーは起動時に認証情報を受け取ります。
- npm 上の人気 MCP サーバーパッケージが侵害される(またはタイポスクワットが公開される)
- ユーザーはそれを自分の
claude_desktop_config.jsonに、実際のトークンをenvブロック内で設定します。 - MCP サーバープロセスは、トークンを含む、プロセスに渡されたすべての環境変数にアクセスできます。
- 侵害されたサーバーがトークンを攻撃者のインフラへ流出します。
適切な OAuth 2.1 の audience 検証(RFC 8707)がない場合、悪意のある MCP サーバーがアクセス トークンを受け取り、他のサービスに対してそれらをリプレイする可能性があります(token passthrough attack)。
48% という平文(plaintext)の認証情報の割合は、すべての MCP サーバー設定のほぼ半数が、起動時に認証情報をサーバープロセスへ直接渡していることを意味します。もしそのサーバープロセスが侵害されれば、それをインストールしたすべてのユーザーも同様に侵害されます。
リスク:MEDIUM。 発生可能性は低〜中、影響は大きい。
ボーナス:CI/CD トークン窃取
コマンド claude setup-token は、1年間有効な OAuth トークン(CLAUDE_CODE_OAUTH_TOKEN)を CI/CD パイプライン向けに生成します。これにより、固有のリスクが生じます:
- このトークンは どのマシンからでも 最長1年間使えます
- CI/CD システムでは、シークレット管理が弱いことが多く、ジョブの分離(isolation)も限定的です。
- ビルドログによって、環境変数の値が意図せず公開される可能性があります。
- 侵害された CI/CD runner により、パイプラインが実行される任意の権限で Claude への長期間のアクセスが可能になります
CI/CD パイプラインが --dangerously-skip-permissions を付けて(自動化のために多くの人がそうしています)Claude Code を実行している場合、盗まれた CLAUDE_CODE_OAUTH_TOKEN により、そのトークンが使用される任意のマシンで制限のないシェル実行が許可されます。
リスク:高。 発生確率は中程度、影響は大きい。
変更が必要な点
ユーザー向け(今すぐ)
- AIHoundを実行してください。 自分のマシンで何が公開されているのかを把握しましょう。
- 権限を修正します:
chmod 600を認証情報ファイルに適用してください。 - 実際の認証情報やネットワークアクセスがある
**--dangerously-skip-permissions**を絶対に使わないでください。 必要であれば、マウントした secrets(機密情報)がない隔離されたコンテナ内で使用してください。 - インラインのトークンの代わりに MCP の設定で環境変数参照を使ってください:
"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
- 誰でも読めるファイルや git の履歴に含まれていたトークンはローテーションしてください。
- VS Code の設定同期(Settings Sync)を無効にする MCP サーバーで Cline を使う場合。
- Treat
**CLAUDE_CODE_OAUTH_TOKEN**を root パスワードのように扱ってください。定期的にローテーションし、ビルドログに絶対に入れず、CI/CD の権限は必要最小限に絞りましょう。 - Add
**.mcp.json**to**.gitignore**インラインのシークレットが含まれている場合。
ツールビルダー向け
- OS のキーチェーンを使いましょう。 macOS Keychain、Windows Credential Manager、Linux libsecret はまさにこの用途のために用意されています。資格情報を平文の JSON で保存しないでください。
- 次の権限でファイルを作成します:
**0600**。.0644または0777は使用しないでください。 - ユーザーに警告 MCP 設定でインラインのシークレットを検出した場合。
- 認証情報(資格情報)をクラウドへ同期しないでください 設定同期の仕組みを通じて。
- OAuth 2.1 を実装し 遠隔の MCP サーバーに対して適切なトークンの audience 検証を行います。
- リモート コントロール(Remote Control)セッションでは再認証を必須にします。 セッション URL を、任意のコード実行のためのベアラートークンにしてはいけません。
- MCP サーバーパッケージを監査 。インストールを許可する前に実施し、サーバーの allowlisting をサポートします。
エコシステムのために
OWASP MCP Top 10 では「Token Mismanagement and Secret Exposure」を MCP01-2025 として挙げています。GitHub 上で API キーを自動検出するための Anthropic と GitHub の提携は素晴らしい出発点ですが、対象は公開リポジトリ内の Anthropic キーに限られます。Azure DevOps、Slack、データベース、その他のサービス向けの MCP トークンには、それに相当する保護がありません。
必要です:
- シークレットスキャン(Secret scanning) 。API キーの形式だけでなく、MCP の設定パターンも対象にする必要があります。
- 資格情報ヘルパー(MCP 用。git の資格情報ヘルパーと同様)で、実行時に安全なストレージからトークンを取得します
- OS のキーチェーン連携を必須にする をデフォルトとして
- VS Code 拡張機能のサンドボックス化
- トークンスコープのリモート制御 - リモートセッションは、それ自体の認証を要求し、ローカルセッションのフル機能を引き継がないようにすべきです
要するに
AI ツールのエコシステムは、機能を素早く出荷することに勢いがあり、資格情報(クレデンシャル)のセキュリティは、少し後回しにされてしまいました。MCP サーバーのほぼ半数は、資格情報をプレーンテキストで保存しています。AI アシスタントは、OAuth トークンをディスク上の JSON ファイルに保持します。リモートコントロール機能(Remote Control)によって、これらのトークンがリモートコード実行(remote code execution)につながります。そして --dangerously-skip-permissions は、盗まれた資格情報を他人のマシンでの完全なシェルアクセスに変えてしまいます。接続するツールが増えるほど、リスクも大きくなります。多くの AI の資格情報は安全に保存されていないため、資格情報の保存に関するベストプラクティスを必ず実装してください。AIHound のようなツールは、システム内のこれらのプレーンテキスト資格情報を見つけるのに役立ちます。
参考:AI デスクトップ アプリケーションの資格情報(クレデンシャル)保存場所
この参照資料は、人気の高い AI デスクトップ アプリケーション、コーディング支援ツール、CLI ツールの一部について、すべての資格情報(クレデンシャル)の保存場所をカタログ化しています。
Claude Code CLI
開発元: Anthropic 認証方法: OAuth 2.0(Claude.ai サブスクリプション)または API キー
認証情報ファイル
Platform | Path | Format | Encryption | Contents |
|---|---|---|---|---|
|
Linux |
|
JSON
|
Plaintext (mode 0600) |
OAuth access/refresh tokens, multi-provider auth |
|
macOS |
Keychain: |
Keychain |
OS Keychain (encrypted) |
OAuth access/refresh tokens |
|
Windows |
|
JSON
|
Plaintext (NTFS ACLs) |
OAuth access/refresh tokens |
|
WSL |
Both Linux path AND |
JSON
|
Plaintext (often 0777 via mount) |
Same as above |
認証情報ファイルの構造
{
"claudeAi": {
"type": "oauth",
"access": "sk-ant-oat01-...",
"refresh": "sk-ant-ort01-...",
"expires": 1776098433694
}
}
各 OAuth 接続は、それぞれ独自のエントリを保存します。このファイルには、ユーザーが設定した内容に応じて、Claude.ai、Claude API、Azure Auth、Bedrock Auth、Vertex Auth の認証情報が含まれます。
重要な指摘: WSL では、Windows 側の認証情報ファイルがマウントのデフォルト権限(0777)を継承するため、誰でも読み取れてしまいます。これは CRITICAL なリスクであり、ファイルが 0600 で作成されるネイティブ Linux には存在しません。
機密情報の可能性がある設定ファイル
Path | Contents |
|---|---|
|
|
Global MCP server configurations (may contain inline tokens) |
|
|
Project-scoped MCP server configs |
|
|
User preferences and permissions |
認証の優先順位
Claude Code は次の順で資格情報を確認します(最初に一致したものが適用されます):
- クラウドプロバイダーの環境変数(
CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX,CLAUDE_CODE_USE_FOUNDRY) ANTHROPIC_AUTH_TOKEN環境変数ANTHROPIC_API_KEY環境変数apiKeyHelperスクリプトの出力(動的/ローテーションする認証情報のため)CLAUDE_CODE_OAUTH_TOKEN環境変数(長寿命で、claude setup-tokenから取得)- OAuth 認証情報(
~/.claude/.credentials.jsonまたは Keychain)
既知の不具合
ドキュメント化された不具合(GitHub issue #36779)では、OAuth 認証情報が macOS Keychain に適切に永続化されないことが示されています。主となる認証トークンが欠落している一方で、mcpOAuth フィールドのみが保存され、新しいセッションでは再認証が強制されます。
Claude Desktop
開発者: Anthropic 認証方法: Claude.ai セッション(macOS では Keychain によるバックアップ)
Platform | Paths |
|---|---|
|
macOS |
|
|
Windows |
|
|
Linux |
|
Auth method: Claude.ai session (Keychain-backed on macOS)
設定ファイル
Platform | Path | Format | Encryption |
|---|---|---|---|
|
macOS |
|
JSON |
Plaintext (often 0644) |
|
Windows |
|
JSON
|
Plaintext |
|
Linux |
|
JSON
|
Plaintext |
MSIX 仮想化の問題(Windows)
Windows では、MSIX インストーラーがファイルシステムの仮想化を作成します。「Edit Config」ボタンを開くと %APPDATA%\Claude\claude_desktop_config.json になりますが、アプリケーションは実際には MSIX コンテナ内の仮想化されたパスから読み取る可能性があります。つまり:
- ユーザーが誤ったファイルを編集してしまう可能性があります
- MCP サーバーの設定は何も通知されずに無視されます
- エラーメッセージが問題を示しません
Pre-MSIX のインストールは既存のまま例外扱いされ、実際の AppData パスから読み取られます。
設定(config)には何が含まれていますか?
設定ファイルには主に MCP サーバー定義が含まれます:
{
"mcpServers": {
"azure-devops": {
"command": "npx",
"args": ["-y", "@anthropic/azure-devops-mcp"],
"env": {
"ADO_MCP_AUTH_TOKEN": "actual-token-here"
}
}
}
}
env ブロックには外部サービス向けの 平文トークン が頻繁に含まれます。
GitHub Copilot
開発元: GitHub / Microsoft 認証方式: GitHub OAuth
認証情報の保存
Platform | Location | Format | Encryption |
|---|---|---|---|
|
macOS |
Keychain: |
Keychain |
OS Keychain |
|
Windows |
Credential Manager |
Credential Manager |
DPAPI |
|
Linux (with libsecret) |
GNOME Keyring / KWallet |
libsecret |
OS-level |
|
Linux (no libsecret) |
|
JSON |
Plaintext (fallback) |
VS Code 拡張機能の保存領域
Platform | Path |
|---|---|
|
Linux |
|
|
macOS |
|
|
Windows |
|
state.vscdb ファイルは、Electron の safeStorage API(AES-128-CBC)で暗号化された SQLite データベースです。 しかし、セキュリティ調査では、これは 悪意のある VS Code 拡張機能に対して脆弱であることが示されています。サンドボックスがないため、どの拡張機能でも他の拡張機能の secrets にアクセスできます。
暗号化キーは OS のキーチェーンに保存されます(Code Safe Storage / macOS)。ユーザー権限を持つあらゆるプロセスからアクセス可能です。
トークンの種類
Prefix | Type | Supported |
|---|---|---|
|
|
OAuth token (default via |
Yes |
|
|
Fine-grained PAT (needs "Copilot Requests" permission) |
Yes |
|
|
GitHub App user-to-server token |
Yes (env var only) |
|
ghp_ |
Classic PAT
|
Not supported |
GitHub CLI 認証(Copilot でも使用)
Platform | Path | Format |
|---|---|---|
|
Linux |
|
YAML |
|
macOS |
|
YAML |
|
Windows |
|
YAML |
Cursor IDE
開発者: Anysphere 認証方法: Cursor アカウント + 任意の API キー
保存先
Platform | Paths |
|---|---|
|
macOS |
|
|
Windows |
|
|
Linux |
|
MCP 設定
~/.cursor/mcp.json は、mcpServers と同じ JSON 構造を Claude Desktop と同様に採用しています。インライン認証トークンが含まれる場合があります。
既知の問題
Cursor は、誰でも読み取れる権限で会話ログを保存します。ユーザーがトークンをチャット インターフェイスに貼り付けた場合、これらのログに認証情報が含まれる可能性があります。
Continue.dev
開発者: Continue(オープンソース) 認証方式: 提供者ごとに直接 API キー
設定ファイル
Platform | Path | Format | Encryption |
|---|---|---|---|
|
All |
|
JSON
|
Plaintext |
|
All |
|
YAML
|
Plaintext |
認証情報の形式
{
"models": [
{
"title": "Claude 3.5 Sonnet",
"provider": "anthropic",
"model": "claude-3-5-sonnet-20241022",
"apiKey": "sk-ant-api03-ACTUAL-KEY-HERE"
}
]
}
すべての API キーはユーザールートに平文で保存されます。 これは Continue.dev コミュニティによってセキュリティ上の懸念として認識されています(GitHub issue #1729)。
緩和策
Continue.dev は環境変数の置換をサポートしています:
"apiKey": "${CONTINUE_ANTHROPIC_API_KEY}"
プロジェクトのルートにある .env で指定したカスタムの場所を確認します。envFilesただし、デフォルトの動作はプレーンテキスト(plaintext) です(env 変数が設定されていない場合)。
Cline(VS Code 拡張機能)
開発者: Saoud Rizwan 拡張機能 ID: saoudrizwan.claude-dev
MCP 設定(プレーンテキスト(plaintext))
Platform | Path |
|---|---|
|
macOS |
|
|
Windows |
|
|
Linux |
|
重大: これらのファイルは プレーンテキスト(plaintext)JSON であり、VS Code の Settings Sync によりクラウドへ自動同期されます。そのため、同期が有効になっている場合、API キーと MCP 認証情報が GitHub にアップロードされます。
API キーの保存
Cline は VS Code の SecretStorage API を通じて API キーを保存します(Copilot が使用しているのと同じ AES-128-CBC で暗号化された state.vscdb )。同じ悪意のある拡張機能の脆弱性の影響を受けます。
Windsurf / Codeium
開発者: Codeium 認証方法: Codeium アカウント
保存場所
Platform | Path |
|---|---|
|
All |
|
このディレクトリ内で config.json、 auth.json、 credentials.json を探してください。
MCP 設定
~/.codeium/windsurf/mcp_config.json と同じ mcpServers の構造にしてください。
資格情報の詳細は、公開情報として十分に文書化されていません。多くの場合、認証はローカルのトークン保存ではなく、Codeium の集中型バックエンドを通じて行われているようです。
ChatGPT Desktop
開発者: OpenAI 認証方法: OpenAI アカウントセッション
保存場所
Platform | Path | Encryption |
|---|---|---|
|
macOS |
|
Keychain for session |
|
macOS |
|
Keychain for session |
|
Windows |
|
Credential Manager |
|
Windows |
|
Credential Manager |
ChatGPT Desktop は主に、OS の認証情報ストア(macOS の Keychain、Windows の Credential Manager)を使用してセッショントークンを保存します。アプリデータのディレクトリにある JSON 設定ファイルにも、セッションデータが含まれている場合があります。
Amazon Q Developer / AWS
開発者: Amazon Web Services 認証方法: IAM Identity Center / AWS Builder ID / IAM 認証情報
認証情報ファイル
Path | Format | Contents |
|---|---|---|
|
|
INI
|
Plaintext access key ID, secret access key, session token (per profile) |
|
|
INI |
Region, output format, SSO configuration |
|
|
JSON |
Plaintext SSO access tokens (cached) |
認証情報ファイルの構造
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token = FwoGZXIvYXdzEBY...
注記
- Amazon Q 自体はローカルのファイル ストレージではなく、IAM Identity Center または Builder ID を通じて認証します
- デフォルトの SSO セッションの有効期間は 90 日です(2024 年 4 月以降に作成したセットアップの場合)
- の静的クレデンシャル
~/.aws/credentialsが主なリスクです。代わりに SSO/IAM Identity Center の使用を検討してください
Google Gemini CLI / GCloud
開発者: Google 認証方法: Google アカウントの OAuth、API キー、またはサービスアカウント
API キーの保存
Location | Format | Contents |
|---|---|---|
|
|
Environment variable |
Gemini API key |
|
|
Environment variable |
Google API key |
|
|
Dotenv |
API keys |
|
|
Dotenv |
API keys |
アプリケーション デフォルト クレデンシャル(ADC)
Platform | Path | Format |
|---|---|---|
|
Linux |
|
JSON |
|
macOS |
|
JSON |
|
macOS (alt) |
|
JSON |
|
Windows |
|
JSON |
ADC ファイルには client_secret、refresh_token、そして場合によっては private_key(サービス アカウント用)が plaintext JSON の形式で含まれます。
認証方式
Method | How | Local Storage |
|---|---|---|
|
Sign in with Google |
|
Cached locally for future sessions |
|
Gemini API Key |
|
Environment or |
|
Service Account |
|
JSON key file on disk |
|
ADC via gcloud |
|
|
|
Cloud Shell |
Automatic (metadata server) |
No local storage |
OpenClaw
開発者: OpenClaw(オープンソース) 認証方式: 提供元ごとの OAuth 2.0、API キー、チャネル固有のトークン
概要
OpenClaw はローカルファーストの AI エージェントプラットフォームで、20 以上のメッセージングチャネル(WhatsApp、Telegram、Slack、Discord)に接続し、ローカルマシン上でツールを実行します。LLM プロバイダーとメッセージングチャネルの両方の認証情報を保存します。
認証情報ファイル
Path | Format | Encryption | Contents |
|---|---|---|---|
|
|
JSON
|
Plaintext (0600) |
OAuth access/refresh tokens + API keys per LLM provider |
|
|
JSON
|
Plaintext |
WhatsApp Baileys auth state |
|
|
JSON
|
Plaintext |
Legacy OAuth tokens (migration file) |
|
|
JSON |
Plaintext |
Channel pairing allowlists |
|
|
JSON
|
Plaintext |
Optional secrets payload for SecretRef resolution |
|
|
JSON5
|
Plaintext |
Main config with gateway auth token, channel tokens, agent API keys |
|
|
Dotenv
|
Plaintext |
Environment variable overrides (may contain API keys) |
認証プロファイルの構造
各エージェントにはそれぞれ独自の auth-profiles.json があり、プロバイダーの認証情報が含まれます:
{
"anthropic": {
"accessToken": "sk-ant-...",
"refreshToken": "sk-ant-ort01-...",
"expiresAt": 1776098433694
},
"openai": {
"apiKey": "sk-proj-..."
}
}
すべてのトークンはデフォルトで plaintext JSON に保存されます。OS のキーチェーン連携はありません。
SecretRef システム(オプトイン)
OpenClaw はオプトイン SecretRef システムに対応しており、プレーンテキストの値を外部ソースへの参照に置き換えます:
Provider | Example | Description |
|---|---|---|
|
|
|
Reads from environment variable |
|
|
|
Reads from file (JSON pointer or single value) |
|
|
|
Runs vault-like executable |
ユーザーは openclaw secrets configure を実行して、既存のプレーンテキスト値を消去し、SecretRefs に移行する必要があります。 デフォルトの動作はプレーンテキストの保存です。
ゲートウェイ認証
ゲートウェイはローカルのアクセス制御にトークンを使用します:
{
"gateway": {
"auth": {
"mode": "token",
"token": "long-random-string-here"
}
}
}
このトークンは SecretRef にすることもできますが、一般的には openclaw.json にハードコードされています。
既知のセキュリティ問題
Issue | Severity | Details |
|---|---|---|
|
Plaintext credential storage |
HIGH |
OAuth tokens and API keys in
|
|
Agent tool bypass |
HIGH |
Agents with filesystem/exec tools can |
|
Tailscale exposure |
MEDIUM |
Remote access via Tailscale could expose the local gateway if token auth isn't configured
|
|
OAuth refresh failures |
MEDIUM |
Silent token refresh failures, Anthropic token truncation bugs
|
|
Session persistence |
LOW |
WhatsApp sessions not always persisted across restarts |
資格情報(クレデンシャル)の配置場所の概要
すべてのファイルは、すべてのプラットフォーム(Linux、macOS、Windows)で ~/.openclaw/ 配下にあります。WSL では、Linux ネイティブのパスと Windows のマウントパスの両方を確認してください。
MCP サーバーの設定
設定ファイルの場所
Tool | Path | Scope |
|---|---|---|
|
Claude Desktop (macOS) |
|
Application |
|
Claude Desktop (Windows) |
|
Application |
|
Claude Code (local) |
|
User (private) |
|
Claude Code (project) |
|
Repository (shared) |
|
Cursor |
|
User |
|
VS Code |
|
Workspace |
|
Cline |
|
Extension |
一般的な MCP 認証の環境変数
Variable | Service |
|---|---|
|
|
Azure DevOps |
|
|
GitHub |
|
|
GitHub |
|
|
Slack |
|
|
Atlassian Jira |
|
|
Notion |
|
|
Linear |
環境変数
以下の環境変数は、ユーザーまたはツールによって一般的に設定され、AI 関連のシークレットを含みます。
Anthropic / Claude
Variable | Description |
|---|---|
|
|
Anthropic API key ( |
|
|
Bearer auth token |
|
|
Long-lived OAuth token (from |
OpenAI
Variable | Description |
|---|---|
|
|
OpenAI API key ( |
|
|
Organization identifier |
Variable | Description |
|---|---|
|
|
Gemini API key |
|
|
Google API key ( |
|
|
Path to service account JSON key file |
GitHub
Variable | Description |
|---|---|
|
|
GitHub token |
|
|
GitHub CLI token |
|
|
GitHub PAT |
|
|
Copilot-specific token |
AWS
Variable | Description |
|---|---|
|
|
AWS access key ( |
|
|
AWS secret key |
|
|
Temporary session token |
Azure
Variable | Description |
|---|---|
|
|
Azure DevOps MCP token |
|
|
Azure OpenAI key |
その他のAIプロバイダー
Variable | Description |
|---|---|
|
|
Hugging Face |
|
|
Cohere |
|
|
Replicate |
|
|
Together AI |
|
|
Groq |
|
|
Mistral AI |
|
|
DeepSeek |
|
|
xAI / Grok |
|
|
Perplexity |
|
|
Fireworks AI |
プレーンテキストの YAML に oauth_token フィールドが含まれています。
共有する
もっと詳しく
著者について
Darryl Baker
シニアスタッフ セキュリティリサーチャー
Darryl G. Baker は Netwrix のシニアスタッフセキュリティリサーチャーであり、Identity および Active Directory のセキュリティ分野で広く認められた権威者です。10年以上にわたるアイデンティティシステムの経験をもとに、彼は Active Directory、Entra ID、Azure 環境に焦点を当てたエンタープライズ向けのセキュリティ評価、アイデンティティセキュリティ研修、そして脅威のエミュレーション(threat emulations)を主導してきました。Darryl は BlueTeamCon、BSidesCT、The Experts Conference、Wild Wild West Hackin’ Fest にて高い評価を受けた研修やデモを提供しています。彼は、現在のレッドチーム/ブルーチームのツールを活用し、防御側が攻撃経路分析から脅威ハンティング(threat hunting)までを習得できるよう支援する、多数のハンズオン攻撃エミュレーションラボのアーキテクトです。彼のセッションでは、Darryl が深い技術的洞察と実世界のケーススタディを融合させ、ブルーチームのプロフェッショナルが Identity セキュリティ体制を強化し、進化し続ける攻撃者の手口に対して防御できるようエンパワーします。