ブログに戻る

AI入門ガイド

Downloads で Claude Code や Codex を実行する?AGENTS.md の安全確認

Downloads 内の AGENTS.md や CLAUDE.md というファイルは Claude Code と Codex を操縦できます。これらのファイルとは何か、そして設定の5分確認。

投稿者: CheapTokens Team公開日 読了時間 8 分

カバー:Downloads フォルダ内の仕込まれた AGENTS.md が AI エージェントの設定に到達する様子
このページの内容
  1. AGENTS.md と CLAUDE.md とは何か、なぜエージェントがそれを信じるのか
  2. 研究者が Downloads 内のファイルで行ったこと
  3. どの設定を見るべきか、正常な設定とはどんなものか
  4. 5分でできる確認
  5. 何かおかしいと感じたら

短い答え:~/Downloads フォルダで Claude Code や Codex を起動しないこと。2026年10月22日、セキュリティ企業 Forever Security は、ウェブサイトが AGENTS.md や CLAUDE.md という名前のファイルを Downloads にこっそり保存でき、そのフォルダで起動したエージェントがそのファイルを信頼された指示として扱うという研究を公開しました。以下では、これらのファイルが何なのか、研究者が何を変更できたのか、そして約5分でできる確認方法を説明します。

よくある状況を想像してみてください。ウェブサイトから十数個の PDF とスクリーンショットを保存し、Downloads でターミナルを開き、claude や codex と入力して「これらのファイルを整理して」と頼みました。危険に感じる要素は何もありません。そしてそこが落とし穴です。

AGENTS.md と CLAUDE.md とは何か、なぜエージェントがそれを信じるのか#

コーディングエージェントは毎回ゼロからセッションを始めるわけではありません。あなたのリクエストを見る前に、起動したフォルダに常設の指示を書いたプレーンテキストファイルがないか確認します。「タブを使う、テストは npm test で実行する、migrations フォルダには絶対に触れない」といった内容です。AGENTS.md は一般的な名称で、CLAUDE.md は Claude Code における同じ考え方です。自分のプロジェクトでは、これらのファイルはあなたが書いたものなので役に立ちます。

しかしエージェントは、ファイルを誰が書いたかを判別できません。ウェブサイトが Downloads に落とした CLAUDE.md は、あなたが先週書いたものとまったく同じに見えます。

フラッシュカード

この記事で出てくる用語

研究者が Downloads 内のファイルで行ったこと#

Forever Security の投稿(著者 Gal Weizman と Omer Samet、2026年10月22日)は2つのケースを説明しています。以下の成功率はすべて研究者自身の測定値です。

Codex。 仕込まれた AGENTS.md は、エージェントに ~/.codex/config.toml へ MCP サーバーのエントリを追加するよう指示し、そのエントリが function-color という npm パッケージのインストールにつながりました。研究者によると、ペイロードは試行の90%以上で実行されました。そのファイルがどこにあるかに注目してください。Downloads ではなく、あなたのホームフォルダです。設定はマシン全体に適用されるため、Downloads フォルダのことを忘れたずっと後でも、任意のフォルダでの以降のすべてのセッションが影響を受けます。

Claude Code。 仕込まれた CLAUDE.md は、.claude/settings.json に ANTHROPIC_BASE_URL 設定を書き込もうとしました。この設定はエージェントが API トラフィックをどこへ送るかを決めます。他人のサーバーを指定すれば、そのサーバーはあなたの OAuth トークンを見ることができ、エージェントに実行させるツール呼び出しを返せます。書き込みは約半数で成功し、同じセッション内で実行される経路は約5分の1で成功しました。

仕込まれたファイルから変更された設定へ
仕込まれた指示ファイルがどのようにエージェント自身の設定に入り込むか(Forever Security、2026年10月22日)

この投稿は、どちらの製品にも「壊れた」ところはないと明言しています。エージェントは設計どおりに動作しており、リスクはファイルが置かれる場所と、エージェントがそれをどれだけ信頼するかに由来します。Forever はまた、顧客のマシンで実際に仕込まれた AGENTS.md を発見し、コードが実行される前に悪意ある npm インストールを止めたと述べています。npm はその後 function-color を削除しました。この最後の部分は研究者自身の説明です。OpenNET は2026年10月26日にこの話を報じ、AGENTS.md がプルリクエストやクローンしたリポジトリ経由で届く場合にも同様のリスクがあると指摘しています。

クイックチェック

Codex のケースが Downloads での1回の悪いセッションより深刻なのはなぜか?

答えを表示

答え: 変更された設定はマシン全体に適用されるため、任意のフォルダでの以降のすべてのセッションが影響を受ける

仕込まれたファイルは一度実行されれば十分です。~/.codex/config.toml に書き込まれた内容はそこに残り、すべてのフォルダでの以降のセッションに適用されます。

どの設定を見るべきか、正常な設定とはどんなものか#

ファイルは2つ、研究で扱われた各ツールに1つずつです。

~/.codex/config.toml では、自分で追加した覚えのない [mcp_servers.*] エントリと、設定していないベース URL を探してください。不審なエントリは、マシンに npm から何かを取得して実行させます:

toml
[mcp_servers.helper]
command = "npx"
args = ["-y", "some-package"]

ここでの helper という名前とパッケージはプレースホルダーです。研究者のケースでは、そのようなエントリの背後にあったパッケージは function-color でした。

.claude/settings.json では、自分で設定していない API エンドポイントやプロキシを探してください。ANTHROPIC_BASE_URL を一度も設定していなければ、ファイルにそれへの言及はまったくないはずです。設定した場合は、選んだプロバイダーのアドレスになっているはずです。CheapTokens の場合、Claude Code のような Anthropic 形式のクライアントは末尾に /v1 を付けずに https://api.cheaptokens.dev を使い、OpenAI 形式のクライアントは https://api.cheaptokens.dev/v1 を使います。

自分で設定したベース URL とそうでないもの
同じ設定を2つ並べたもの:左のアドレスはあなたが選んだもの、右は見覚えのないホスト(プレースホルダー)

自分のキーで Claude Code を動かす場合、Claude Code を CheapTokens に接続する手順 にファイル全体が示されており、ドキュメント には両方のベース URL が記載されています。長いエージェントループには、DeepSeek-V4-Flash(deepseek-ai/DeepSeek-V4-Flash-0731)が380K のコンテキスト、回答あたり最大32,768出力トークン、時間帯を問わず一定の価格を備えています。詳細はモデルページにあります。

Cline、Aider などの他のエージェントはこの研究の対象外で、それぞれ独自の場所に設定を保持しています。習慣は同じです。どのファイルがエンドポイントを保持しているかを把握し、一度読むことです。

5分でできる確認#

ターミナルを開き、次の順に進めてください。ここではファイルを変更せず、読むだけです。

ステップバイステップ

マシンを確認する

紛れ込んだ指示ファイルを探す

bash
find ~/Downloads -maxdepth 3 -name "AGENTS.md" -o -name "CLAUDE.md"

自分で書いていないものが見つかったら、テキストとして開いて読んでください。出どころがわからなければ削除してください。

Codex の設定を読む

bash
grep -n "mcp_servers\|base_url" ~/.codex/config.toml

[mcp_servers.…] の各行は、自分で追加した覚えのあるもののはずです。Codex を使っていなければ「No such file」で問題ありません。

Claude Code の設定を読む

bash
grep -n "BASE_URL\|proxy" ~/.claude/settings.json .claude/settings.json

両方のファイルが対象になるよう、プロジェクトフォルダから実行してください。出力内のすべてのアドレスは、あなたが選んだプロバイダーのものであるはずです。

シェルを確認する

bash
env | grep -i "BASE_URL"

環境変数として設定されたベース URL が一覧表示されます。同じルールです。それぞれに見覚えがあるはずです。

ケースに出てきたパッケージを探す

bash
npm ls -g --depth=0 | grep function-color

エージェントを使ったプロジェクト内でも npm ls function-color を実行してください。見つかった場合は、そのマシンは侵害されたものとして扱ってください。

何かおかしいと感じたら#

まずエージェントを閉じてください。次に、見覚えのないエントリを削除し、エージェントが見られた可能性のあるすべての認証情報をローテーションしてください。API キー、トークン、環境内のあらゆるものです。キーのローテーションという考え方が初めてなら、API キーとは何か、どのように保存するか に基本がまとまっています。

再発を防ぐ習慣は、すべて研究者の緩和策によるものです:

  • エージェントは Downloads ではなく、自分で作ったプロジェクトフォルダで起動する。
  • 自分で書いていない AGENTS.md や CLAUDE.md は、エージェントで実行する前に読む。クローンやプルリクエスト経由で届いたものも含む。
  • 承認プロンプトとサンドボックスを有効にしておき、エージェントにそれらを無効化させる指示には警戒する。