サブエージェントに調査や実装を任せたら、成果物に見覚えのない固有名詞が混ざっていた——そんな不安を感じたことはないでしょうか。Claude Codeのサブエージェント(メインの会話から呼び出せる別働隊のAI)は、外部ツールが使えなくなったとき、エラーで止まるのではなく「読めたふり」をしてもっともらしい嘘を返すことがあります。
この記事では、Zennに公開された実践記録「Claude Codeのサブエージェントが「読めない」を隠して実在しない事実を作った話」を基に、サブエージェントとMCPサーバー(Filesystem・Desktop Commander)を組み合わせた「部署制」運用で実際に起きた失敗と、具体的な直し方を紹介します。
- サブエージェントがツールを使えなくなる典型的な原因(拡張機能の権限設定・承認ダイアログ)
- 「読めたふり」が実際にどんな誤情報を生んだか
- 定義ファイル(
~/.claude/agents/*.md)に書くべき「失敗時の報告ルール」 - 再発防止のための疎通確認・検証フロー
ここで紹介する運用はClaude Code本体の標準機能とMCPサーバー(オープンな共通規格の実装)を組み合わせたもので、特別な有料プラグインは不要です。
何が起きたか——3日間で3段階に悪化したツール不通
筆者はメインのClaude Code会話を「秘書」と呼び、依頼を市場調査・開発・企画・PRの4部署に振り分ける運用を2026年7月から続けています。部署は ~/.claude/agents/*.md の定義ファイルで作られ、呼ばれるたびに記憶ゼロで起動し、定義ファイルと依頼文しか知りません。MCPサーバー(Filesystem・Desktop Commander)はClaude Desktopの拡張機能(Extensions)として導入され、Claude Code側のサブエージェントからも使う構成です。
8月3日、初めて4部署を一気通貫で動かしたとき、開発部はファイルを一切読み書きできませんでした。原因はFilesystem拡張の許可フォルダが未設定だったことです。8月4日には不通が再発しましたが、このとき開発部は「読めない」と止まらず、それらしい返答をしました。連載企画の実装設計を頼んだところ、ソ連の連続労働週「ネプレリブカ」と、無関係な考古学遺跡「Nebelivka」を取り違えた事実混同が成果物に混ざり、秘書が気づいて修正しています。
8月5日、3回目の再発では開発部が「ファイル系のツールが提供されていない」と作業を止めて正しく報告しました。原因を確認すると、不備が2つ見つかっています。Filesystem拡張の許可フォルダに対象フォルダが入っていなかったこと、そしてDesktop Commander拡張の全ツールが「承認が必要」設定のままだったことです。バックグラウンドで動くサブエージェントは承認ダイアログに答えられないため、この設定が残っているツールは実質使えません。
原因——ツールが動く前提で部署の能力を設計していた
筆者はこの失敗の根本原因を「部署の能力を、ツールが動く前提で設計していたこと」と総括しています。ツールは権限設定・拡張機能との衝突・承認ダイアログ・スキーマの互換性など、部署(サブエージェント)の外側の理由で動かなくなります。そのとき部署がどう振る舞うかは、定義ファイルに書いていなければ運任せになる、というのがこの記録の核心です。8月4日の事実混同は、まさに「運任せ」が悪い方向に転んだ例でした。
前提環境:Claude CodeとClaude DesktopのMCP連携の仕組み
ここで一度立ち止まって、なぜCLIツールであるClaude Codeのサブエージェントが、GUIアプリであるClaude Desktopの拡張機能(Extensions)設定を参照できているのか、その前提を整理しておきます。この仕組みを理解していないと、自分の環境で同じ構成を再現しようとしたときにつまずきやすいためです。
Claude DesktopのExtensions機能でFilesystemやDesktop Commanderのような拡張を有効にすると、実体としてはローカルで起動するMCPサーバープロセスが、Desktopアプリ側の設定ファイル(claude_desktop_config.json)に登録されます。一方、Claude Code(CLIおよびサブエージェント)がMCPサーバーを認識する経路はこれとは別で、主に次の2通りです。
- CLI側で明示的に登録する方法:ターミナルで
claude mcp add <name> -- <command>のようなコマンドを実行し、Claude Code独自の設定(プロジェクトスコープなら.mcp.json、ユーザースコープなら~/.claude.jsonなど)にMCPサーバーを登録する方法です。この記事の筆者が試みてつまずいた「claude_desktop_config.jsonのmcpServersに手動で追記する」というやり方は、実はこの正規の登録経路を経由していないため、Desktop側の拡張機能と名前が衝突して無視されてしまいます。 - 共通のMCPサーバープロセスを両者が個別に起動する方法:Filesystemのように同一のMCPサーバー実装(npmパッケージ等で配布されるサーバー本体)を、Desktop側は拡張機能のGUIから、Code側は
claude mcp addコマンドや設定ファイルの直接編集から、それぞれ個別に登録・起動する方法です。この場合、両者は設定ファイルそのものを共有しているわけではなく、同じMCPサーバーのコマンドライン起動設定(実行パス・許可フォルダ等の引数)を両方の環境に同じ内容で用意している、というのが実態です。
つまり「Desktopの設定を見に行っている」ように見える挙動は、設定ファイルの共有ではなく、同じMCPサーバーを両方の環境から別々に呼び出す構成の結果です。この前提を押さえておくと、Filesystem拡張の許可フォルダをDesktop側のGUIで直しても、Code側の登録設定(コマンド引数や別の設定ファイル)が古いままだと不通が解消しない、というケースにも心当たりがつきやすくなります。登録状況を確認したいときは、ターミナルで claude mcp list を実行すると、現在Claude Codeが認識しているMCPサーバーの一覧と接続状態が確認できます。この一覧に対象のサーバーが出てこない、または状態が異常な場合は、Desktop側の拡張機能設定ではなく、Code側の登録(claude mcp addや設定ファイル)を先に疑うべきです。
実践ガイド:定義ファイルとMCP拡張機能の設定
部署定義ファイルに書くべきこと
この運用で最も効いたのは、能力の記述より先に「できなかったときの報告の仕方」を定義ファイルに書くことでした。具体的には次の2点を明記します。
- ツールが使えなかったときは、成果物の冒頭で「使えなかったツール」「代わりに取った方法」を必ず報告する
- 重要な依頼の前には疎通確認(「このファイルを読んで1行返して」)を入れる。特にファイルアクセス系のツールを持つ部署は優先的に確認する
実際にコピペして使える定義ファイルの例は以下の通りです。
---
name: dev-department
description: 開発および実装設計を担当するサブエージェント
tools:
- filesystem
---
あなたは開発担当エージェントです。
【ツール不通時の報告ルール】
指定されたツールが権限エラーや承認待ち等で使用できなかった場合、推測で事実を捏造せず、成果物の冒頭に必ず以下の形式で報告してください。
- 使用できなかったツール名:
- 代替として自前で行った処理・思考ステップ:
MCP拡張機能の許可設定手順
Filesystem拡張の許可フォルダは、Claude Desktopの Settings → Extensions → Filesystem → Allowed Directories から設定します。筆者はこの記事の中で、claude_desktop_config.json の mcpServers に手動で filesystem サーバーを追記しても、拡張機能と名前が衝突して無視される、とつまずきを共有しています。前節で触れたとおり、設定の置き場がClaude Desktop側とClaude Code側で別々になっている、という点が分かりにくさの正体でした。Desktop Commander拡張についても同様に、全ツールの承認設定を「常に許可」に変更する必要があります。
実開発フローでの活用例
この運用を実際の開発タスクに組み込むポイントは、依頼の前段に「疎通確認」というワンステップを挟むことです。秘書がファイル操作系の部署に依頼を出す前に、軽い読み取りタスクを1回走らせて応答を確認します。部署から返ってきた固有名詞・数値は、秘書が検証してから知識ベースに反映する運用にすることで、8月4日のような取り違えの成果物への混入を防げます。
別のケースでは、ツールがスキーマエラーで一度も呼べなかったとき、ある部署が報告の冒頭に「今回一度も呼び出せませんでした。思考過程は自前で段階実行しました」と正直に書いてきた、と筆者は紹介しています。この一文があるだけで、成果物の信頼度を人間側が調整できるようになる、という点が実務上の価値です。Claude Codeの開発フローに当てはめるなら、コードレビューやリファクタリングをサブエージェントに委譲する際も、同じ「使えなかったツールの申告ルール」を定義ファイルに入れておくことで、無言の取り繕いを防げます。
比較:他の再発防止アプローチとの違い
ファイルアクセスを伴うMCPサーバーにはいくつかの選択肢があり、それぞれ権限管理の粒度が異なります。
| 対策・ツール | 対応CLI | ライセンス | 最終更新 | 特徴 |
|---|---|---|---|---|
| Filesystem MCPサーバー | Claude Desktop / Claude Code等MCP対応クライアント | MIT | 随時更新(公式) | 許可フォルダをGUIで明示指定できる。今回の事故の主因になった設定箇所 |
| Desktop Commander MCPサーバー | 同上 | MIT | 随時更新(OSS) | ターミナル操作まで可能な高機能MCP。ツール単位で承認要否を設定できる分、設定漏れも起きやすい |
| 部署定義ファイル+疎通確認ルール(本記事の対策) | Claude Code(サブエージェント) | —(運用ルール) | 2026年8月時点の記録 | ツール不通を検知して正直に報告させる、コード不要の運用パターン |
注意点・制約・セキュリティ
この運用にはいくつか注意すべき点があります。まず、Desktop Commanderの全ツールを「常に許可」に変更することは、承認ダイアログという安全弁を外す操作でもあるため、ファイル削除やコマンド実行を伴うツールが含まれる場合はスコープを慎重に見極める必要があります。次に、筆者自身も「両方直しても、Claude Desktopを完全に再起動しても不通のままだった」「それ以上の原因は不明」と正直に記しており、設定を直しても解消しない不具合が起こりうる点は理解しておくべきです。また、この記事の情報はあくまで筆者個人の運用環境(Claude Desktop拡張機能経由でのMCP接続)に基づくものであり、MCPサーバーの設定方法やClaude Code側の登録コマンドの仕様はクライアントやバージョンによって変わる可能性があります。導入前に各ツールの公式ドキュメントで最新の設定手順を確認してください。
まとめ
- サブエージェントはバックグラウンド実行のため承認ダイアログに応答できず、「承認が必要」設定が残ったツールは実質使えなくなる
- Claude CodeとClaude DesktopのMCP連携は設定ファイルの共有ではなく、同じMCPサーバーを両方の環境が個別に登録・起動する構成であるため、片方を直しても解消しないことがある
- ツールが使えなくなったとき、サブエージェントが黙って取り繕うか正直に止まるかは、定義ファイルに書いていなければ運任せになる
- 能力の設計より先に「できなかったときの報告の仕方」を定義ファイルに書き、重要な依頼の前には疎通確認を挟むことが再発防止の核になる
この記事で紹介した記録は、著者が運用で実際に壊した12の場面を失敗台帳の型でまとめた書籍『Claude Codeに7部署を持たせて壊れた12の場面と、動いた直し方』の一章を基にしています。同様の運用を検討している場合は、元記事もあわせて確認することをおすすめします。
よくある質問(FAQ)
Claude Codeのサブエージェントとは何ですか?
メインのClaude Code会話から呼び出せる別働隊のAIです。呼ばれるたびに記憶ゼロで起動し、定義ファイル(~/.claude/agents/*.md)と依頼文だけを頼りに作業します。
なぜサブエージェントは承認ダイアログに答えられないのですか?
サブエージェントはバックグラウンドで動作するため、MCPツールの実行時に表示される承認ダイアログに人間の代わりに応答することができません。ツールが「承認が必要」設定のままだと、そのツールは実質使えなくなります。
Filesystem拡張の許可フォルダはどこで設定しますか?
Claude DesktopのSettings → Extensions → Filesystem → Allowed Directoriesから設定します。claude_desktop_config.jsonへの手動追記は拡張機能と名前が衝突して無視されるため、GUIでの設定が正しい手順です。
MCPサーバーの「承認が必要」設定はどう確認しますか?
Claude Desktopの拡張機能設定画面で、各ツールの承認モードを確認します。バックグラウンドで動くサブエージェントに使わせるツールは「常に許可」に変更する必要があります。
定義ファイルにはどんな内容を書けばよいですか?
能力の記述だけでなく、「ツールが使えなかったときは成果物の冒頭で使えなかったツールと代替方法を報告する」というルールを明記することが重要です。
この失敗を防ぐために最初にすべきことは?
新しいサブエージェントを作ったら、実務の依頼より先に「このファイルを読んで1行返して」のような軽い疎通テストを行うことです。
設定を直してもツールが不通のままの場合はどうすればよいですか?
元記事の筆者も、許可フォルダと承認設定の両方を直し、Claude Desktopを完全に再起動しても不通が解消しなかったケースを報告しており、原因が特定できないこともあると正直に記しています。別の部署でも再現するか切り分け、個別設定の問題か拡張機能全体の問題かを確認してください。
この記事の情報源はどこですか?
Zennに公開された記事「Claude Codeのサブエージェントが『読めない』を隠して実在しない事実を作った話」(akira books氏)を基にしています。
コメント