シークレットスキャン
Secret Scanningは、シェル履歴ファイル(.zsh_history、.bash_history)、AIコーディングエージェントのセッション、認証情報ファイルなど、チームのデバイス上のローカルファイルに残されたハードコードされたシークレットを検出し、そのクリーンアップを支援します。curl コマンドや環境変数を貼り付けたことで、APIキーやトークンが誤ってシェル履歴に漏れてしまうことはよくあり、そうしたシークレットは何か月も残り続けることがあります。
スキャンはすべてデバイス上で実行されます。すべての検出結果が表示されるため、開発者は自分のマシン上で直接それらを確認し、修正できます。
ディスク全体をクロールするわけではありません。履歴ファイルや認証情報ファイルなど、シークレットが蓄積しやすい場所のみを確認します。完全なリストについてはスキャン対象を参照してください。
Secret ScanningはAikido Device Protectionの一部です。まだエージェントをデプロイしていない場合は、Device Protectionのデプロイを参照してください。
仕組み
Secret Scanningは、シークレットの値がデバイス上に留まるように設計されています。
- スキャンは完全にローカルで行われます。 エージェントはデバイス自体でファイルを読み取り、検査します。ファイルの内容がAikidoにアップロードされることはありません。
- シークレットの値はデバイス上に留まります。 検出されたシークレットの完全な値が送信されることはありません。デスクトップクライアントではマスクされた状態(例:
[AIK********...])で表示されるため、値を露出させることなく識別できます。 - 報告されるのはシークレットの種類と数文字のみです。 Aikidoが受け取るのは、検出されたシークレットの_種類_(例: 「認可トークン」)と、検出結果を識別するのに十分な値の数文字のみです。完全なシークレットが送信されることはありません。これにより、シークレットそのものを渡すことなく、どのような種類のシークレットが露出しているかを組織が把握できます。
flowchart LR
A[Files on device<br/>e.g. .zsh_history] --> B[On-device scan]
B --> C[Findings shown locally<br/>file, type, masked preview]
B --> D[Secret type and a few<br/>characters reported to Aikido]
classDef local fill:#d6f5d6,stroke:#27ae60;
classDef cloud fill:#fff2cc,stroke:#e1a100;
class C local;
class D cloud;検出されたシークレットの確認
デスクトップクライアントで Secrets タブを開くと、エージェントが検出したすべての項目を確認できます。このタブには、検出されたシークレットの総数が表示されます。

各検出結果には以下が表示されます。
- Type - 検出された内容の説明。例: 「curlコマンドのヘッダーで指定された潜在的な認可トークンを検出しました。これにより、curlでアクセスされたリソースが侵害される可能性があります。」
- Location - シークレットが見つかったファイルと行。例:
/Users/samuel/.zsh_history:370。同じ種類のシークレットが複数の場所に出現する場合は、まとめてグループ化されます(例: 「and 8 more」)。行を展開すると、すべての出現箇所を確認できます。 - Value - 検出されたシークレット。常にマスクされています。
シークレットのクリーンアップ
シークレットは1つずつ、または一括で修正できます。
- 1つずつ - 検出結果の erase アイコンをクリックして、個々のシークレットをクリーンアップします。
- 一括 - チェックボックスを使って複数の検出結果を選択するか、特定の種類のシークレットをすべて選択し、1回の操作でクリーンアップします。
クリーンアップを行うと、デバイス上のファイルからシークレットが削除されます。
クリーンアップは、書き換え可能なカテゴリであるシェル履歴とAIエージェントセッションでのみ利用できます。認証情報ファイル、クラウド認証情報、AIツール認証情報の検出結果は報告されますが変更されないため、認証情報をローテーションし、設定ファイルをご自身で更新して修正してください。これらの認証情報が再び平文で保存されないようにするには、シークレットを安全に保存するを参照してください。
シークレットをクリーンアップしても、ローカルファイルから削除されるだけです。シークレットがまだ有効な場合は、使用できなくなるよう、発行元でローテーションまたは失効させてください。
スキャン対象
検出結果は5つのカテゴリに分類されます。シェル履歴とAIエージェントセッションは、その場でクリーンアップできます。3つの認証情報カテゴリは検出のみです。これらのファイルはツールが読み込む設定であるため、Aikidoは検出内容を報告しますが、書き換えることはありません。
| カテゴリ | 対象範囲 | クリーンアップ |
|---|---|---|
| シェル履歴 | シェルおよびREPLの履歴ファイル | 書き換え可能 |
| AIエージェントセッション | ローカルAIコーディングエージェントのセッショントランスクリプトとプロンプト履歴 | 書き換え可能 |
| 認証情報ファイル | パッケージマネージャー、git、CI、データベースの認証情報ファイル | 検出のみ |
| クラウド認証情報 | クラウドプロバイダーおよびインフラストラクチャツールの認証情報 | 検出のみ |
| AIツール認証情報 | AIツールおよびMCPクライアントの設定ファイルと認証情報ファイル | 検出のみ |
以下のパスはすべて、ユーザーのホームディレクトリからの相対パスです
シェル履歴
すべてのプラットフォーム: .zsh_history, .bash_history, .local/share/fish/fish_history, .ksh_history, .history, .sh_history, .python_history, .node_repl_history, .psql_history, .mysql_history, .irb_history, .rediscli_history
macOSおよびLinux: .zsh_sessions/*.history(new), .bash_sessions/*.history(new), .local/share/powershell/PSReadLine/*_history.txt
Windows: AppData/Roaming/Microsoft/Windows/PowerShell/PSReadLine/*_history.txt, AppData/Roaming/postgresql/psql_history
これらの固定の場所に加えて、エージェントはユーザー自身が設定した履歴パスも追跡します。対象となるのは、.zshenv、.zshrc、.zprofile、.zlogin、.bashrc、.bash_profile、.bash_login、.kshrc、.profile で設定された HISTFILE=、およびPowerShellプロファイル(Documents/(Windows)PowerShell/*.ps1、それに相当するOneDrive内のファイル、.config/powershell/*.ps1)で設定された -HistorySavePath です。
AIエージェントセッション
.claude/projects/*/*.jsonl, .claude/history.jsonl, .claude.json, .claude/paste-cache/*.txt, .codex/sessions/*/*/*/rollout-*.jsonl, .codex/history.jsonl, .gemini/tmp/*/chats/*
認証情報ファイル
すべてのプラットフォーム: .npmrc, .yarnrc.yml, .pypirc, .config/pip/pip.conf, .pip/pip.conf, .gem/credentials, .cargo/credentials(.toml), .m2/settings.xml, .gradle/gradle.properties, .config/composer/auth.json, .composer/auth.json, .nuget/NuGet/NuGet.Config, .git-credentials, .config/git/credentials, .config/gh/hosts.yml, .config/glab-cli/config.yml, .netrc, .pgpass, .my.cnf, .circleci/cli.yml, .config/argocd/config
Windows: AppData/Roaming/pip/pip.ini, AppData/Roaming/Composer/auth.json, AppData/Roaming/NuGet/NuGet.Config, AppData/Roaming/GitHub CLI/hosts.yml, _netrc, AppData/Roaming/postgresql/pgpass.conf
クラウド認証情報
すべてのプラットフォーム: .aws/credentials, .aws/config, .config/gcloud/application_default_credentials.json, .azure/msal_token_cache.json, .azure/service_principal_entries.json, .kube/config, .docker/config.json, .vault-token, .terraform.d/credentials.tfrc.json, .config/doctl/config.yaml, .config/hcloud/cli.toml, .aliyun/config.json, .fly/config.yml
macOSおよびLinux: Library/Application Support/doctl/config.yaml
Windows: AppData/Roaming/gcloud/application_default_credentials.json, AppData/Roaming/terraform.d/credentials.tfrc.json
AIツール認証情報
すべてのプラットフォーム: .claude/settings.json, .claude/settings.local.json, .claude/.credentials.json, .codex/auth.json, .codex/config.toml, .gemini/settings.json, .gemini/oauth_creds.json, .cursor/mcp.json, .config/opencode/opencode.json, .local/share/opencode/auth.json, .codeium/windsurf/mcp_config.json, .config/github-copilot/apps.json, .config/github-copilot/hosts.json
macOSおよびLinux: Library/Application Support/Claude/claude_desktop_config.json, Library/Application Support/Code/User/mcp.json, .config/Code/User/mcp.json
Windows: AppData/Roaming/Claude/claude_desktop_config.json, AppData/Roaming/Code/User/mcp.json