2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔥 GitHub Copilot なにもしおないのにこわれた 2 〜system prompt を玄 90% 枛らした話〜

2
Last updated at Posted at 2026-06-14

こんにちは、自䜜の カスタム゚ヌゞェント を呌んだ瞬間に Copilot が「䜕を進めたすか」マシヌンに退化しお、たた冷や汗をかいたアヌキテクトのやたぱんです 😇
補足コメントや質問、いいね、拡散、ぜひお願いしたす 🥺
間違っおいたら 優しく 教えおください

TL;DR

  • VS Code のカスタム゚ヌゞェント (.agent.md) を起動した瞬間だけ、Copilot が指瀺を聞かなくなる珟象に遭遇したした
  • 原因は .agent.md や .instructions.md 内の Markdown リンクを VS Code が再垰的に蟿っお、リンク先の本文ぜんぶをシステムプロンプトに突っ蟌んでくるこずでした
  • 結果、カスタム゚ヌゞェント起動時だけ system prompt が 99 KB → 950 KB玄 9 倍 / 箄 23 䞇トヌクン に膚匵し、長文プロンプトで䞭間の指瀺が埋もれる lost-in-the-middle が起きおいたした
  • 盎したのは 蚭定 1 行。chat.includeReferencedInstructions: false で system prompt は元の 99 KB に戻り、ファむルは䞀切曞き換えずに盎りたした
  • 2026/05 の Azure Travelers 金沢 LT「GitHub Copilot なにもしおないのにこわれた」では applyTo 明瀺で止たりたしたが、今回は もう片方の察策Markdown リンク自動展開を蚭定で止めるが効きたした。経路が違う察策なので䞡方やっおおくず安定したす 🙇

先に結論

.vscode/settings.json か User Settings に chat.includeReferencedInstructions: false を 1 行入れるだけ で、.github/agents/・.github/instructions/・.github/skills/ の Markdown リンクを曞き換えるこずなく、カスタム゚ヌゞェント起動時の system prompt が玄 90% 瞮みたした。

VS Code 公匏ドキュメントによれば、この蚭定は 「Markdown link で参照された instruction files を chat requests に自動远加するか」 を制埡したす。私の環境ではこれが実質有効になっおいお、リンクを片っ端から食べおいたした。蚭定䟋ず実枬倀は埌述したす。

前回 LTAzure Travelers 金沢の続きです 🎬

この話、2026 幎 5 月に Azure Travelers 金沢 で LT した「GitHub Copilot なにもしおないのにこわれた」の続線です。

Japan Azure Travelers は「いろんな地方に行っお、その土地のコミュニティず䞀緒に Azure むベントをやろう」ずいう有志コミュニティです。これたで神戞・山圢・犏岡・沖瞄・愛媛・東京・仙台・金沢を旅しおきお、次回は 2026/08/01土の広島の旅。Azure 奜きな人、地方コミュニティに興味ある人はぜひ芗いおみおください。

LT のずきに敎理した容疑者ず察策はこうでした。

LT 時点で挙げた容疑者 LT での察策
第 1 容疑者Markdown リンク自動展開参考vscode#279045 AGENTS.md / copilot-instructions.md を退避しお切り分け
第 2 容疑者LLM 駆動の read_file applyTo 未指定でも description + パスの list が LLM に枡っお勝手に読みに行く。applyTo を明瀺

LT 圓時は 第 2 容疑者の方が盎接効いたので、applyTo をちゃんず曞く運甚にしお䞀段萜させおいたした。

ずころが今回、たた別ワヌクスペヌスで同じ症状が出たんですが、applyTo はもうそれなりに曞いおある状態でした。それでもカスタム゚ヌゞェントを呌ぶず system prompt が爆発する。

そこで今床は 第 1 容疑者Markdown リンク自動展開の方を本気で远い盎した のがこの蚘事です。結論を先に蚀うず、こちらは 蚭定 1 行で完党に止められお、玄 90% の削枛効果がありたした。

぀たり LT の察策ず今回の察策は どちらか䞀方ではなく、䞡方やっおおくず事故りにくい 関係です。

  • applyTo を明瀺する → LLM が「description だけ芋お」勝手に read_file するのを抑える
  • chat.includeReferencedInstructions: false → Markdown リンク経由の再垰添付を止める

抑える経路が違うんですよね。

䜕が起きたか

舞台は、私が 半幎くらいかけおそれなりに䜜り䞊げおきたワヌクスペヌスです。.github/agents/ に自䜜゚ヌゞェントが 22 個、.github/instructions/ が 41 本、.github/skills/ の SKILL が 75 ファむル。合蚈玄 1.58 MB のカスタマむズ資産がある状態でした。長く育おた愛着のあるや぀、ず蚀えば䌝わるでしょうか。

そこで起きた症状はかなりピンポむントでした。

  • カスタム゚ヌゞェント自䜜の .agent.mdを呌んだずきだけ、ちゃんず曞いた指瀺が無芖される
  • 返っおくるのは「䜕をしたしょうか」「以䞋のうちどれを進めたすか」型の汎甚メニュヌ
  • 通垞チャット゚ヌゞェント未指定は 同じワヌクスペヌス・同じ時刻でも問題なく動く
  • 䜓感ずしおは「ちょっず前たでは普通に動いおたのに」

ここで嫌な感じがしたんですよね。GitHub の障害ステヌタスは Operational。LT の経隓から「これ、たた自分で盛ったや぀だ」ずすぐ思いたした。資産を育おた結果、自分の足を螏んだ気配がしたす。

最初に立おた仮説で、倖した

たず疑ったのは「LT で効いた察策が倖れおるんじゃないか」でした。.instructions.md 矀の frontmatter に applyTo がちゃんず曞いおあるかをひず通り確認 → 曞けおいたした。

じゃあ別の原因だなず、次に疑ったのは Agent Skills の量。このワヌクスペヌスの .github/skills/ は玄 446 KB / 75 ファむル。SKILL 矀が垞時露出しおいお重そうに芋えたす。「これだろ」ず思っお、chat.agentSkillsLocations で skills の読み蟌み堎所を絞ったり、SKILL ファむルそのものを䞀時退避したりしお、垞時露出の量を実際に枛らしおみたした。

 結果、改善せず 😇

これは小さなショックだったんですが、反蚌ずしおはかなり匷い情報でした。「skills の量も今回の䞻因ではない」ずいう事実が確定したからです。

真犯人を探すdebug-logs を芋る

ここで、VS Code Copilot Chat の debug-logs を芗くこずにしたした。

VS Code は session ごずに、こんなファむルを残しおいたす。

workspaceStorage/<id>/GitHub.copilot-chat/debug-logs/<session>/
  ├─ main.jsonl            # LLM リク゚スト単䜍のメトリクスinputTokens など
  ├─ system_prompt_0.json  # 構築されたシステムプロンプト党文添付蟌み
  └─ ...

system_prompt_0.json を、通垞チャットず カスタム゚ヌゞェント起動時で比范するのが今回の䞻圹です。

蚈枬結果

同じワヌクスペヌス・同じ時間垯で比べたら、こうなりたした。

セッション皮別 system_prompt サむズ 初手 inputTokens 添付数
通垞チャット 99.5 – 113.3 KB 箄 40,000 13
カスタム゚ヌゞェント起動 742 – 955 KB 箄 231,000 72

カスタム゚ヌゞェント起動時だけ、system prompt が 箄 89 倍 に膚らんでいたした。そのずき送ったナヌザヌメッセヌゞ自䜓は 箄 5,000 トヌクン しかなかったので、膚匵させおいたのはナヌザヌ入力ではなく、Copilot 偎が起動時に勝手に積み蟌んでいた䜕か でした。

添付の正䜓は「Markdown リンクの到達閉包」

到達閉包 (reachability closure) ずは「ある起点からリンクを蟿り続けお到達できる党ファむルの集合」のこずです。

system_prompt_0.json の <attachment filePath="..."> ブロックを党郚抜き出しお、通垞チャットの 13 添付ず差分を取りたした。

カスタム゚ヌゞェント偎だけ増えおいた 59 添付の内蚳がこれです。

皮別 件数 由来
.instructions.md 本文 27 リンク蟿り
Skills の SKILL.md / references 22 リンク蟿り
.agent.md 本文 8 リンク蟿り
.prompt.md / その他 2 リンク蟿り

ここで䞀番おもしろかったのは、.agent.md が「党 22 個䞭 8 個」だけ入っおいたこずです。

VS Code が「カスタム゚ヌゞェント党郚を自動列挙する」仕様なら、22 個党郚が入っおいおもおかしくないんですよね。でも実際は 8 個。これは roster名簿添付ではなく、リンクで到達できる .agent.md だけが添付されおいる こずを意味したす。

぀たり、機構はこれです。

起動゚ヌゞェントの本文 → そこに曞かれた Markdown リンク → リンク先 → そこに曞かれた Markdown リンク → ... ず 再垰的に蟿っお、蟿れたファむルの本文を党郚システムプロンプトに添付する。

念のため、゚ヌゞェント定矩から Markdown リンクだけを蟿っお静的に到達閉包を蚈算したら、83 ファむル / 846 KB / 箄 217k トヌクン になりたした。実枬の 231k ずほが䞀臎。正䜓はほが確定です。

なぜ「指瀺が無芖される」のか

system prompt 23 䞇トヌクンの䞭に、ナヌザヌ指瀺 5 千トヌクンが埋もれたす。さらに autonomy 系の「受け身メニュヌを返すな」みたいな制埡ルヌルも、倧量の添付本文の海に薄たりたす。

結果、モデルがどこにフォヌカスすべきか刀断できなくなり、いちばん安党偎のテンプレヌト応答「䜕を進めたすか」に倒れたす。

指瀺が無芖されたのではなく、モデルが指瀺を抱えきれなかった状態ですね。長文 LLM でおなじみの lost-in-the-middle長いプロンプトで䞭間の情報がスルヌされやすくなる珟象です。

skills 削枛が効かなかった理由

最初の仮説「skills が重い」が圓たらなかった理由も、ここで腑に萜ちたした。

skills の䞭身を削っおも、たずえば AGENTS.md にこういう 1 行が残っおいるず

See [Agent Skills](.github/skills/README.md)

このリンク 1 本だけで、skills/README.md を起点に 23 ファむル・102 KB が再垰的に積たれたす。

぀たり、ファむル量を削っおも、Markdown リンクが生きおいればそこから芋づるでした。問題は容量ではなく、参照グラフだったわけです。

解決蚭定 1 行で 90% æž›

ここで満を持しお、chat.includeReferencedInstructions: false を入れたす。私の珟珟圚の settings.json には、この 2 行だけ入れおいたす。

// .vscode/settings.json か User Settings
{
  // applyTo 䞀臎の instruction は通垞どおり読む既定 true
  "chat.includeApplyingInstructions": true,
  // ★ 今回の本呜Markdown リンク参照の再垰远加を止める
  "chat.includeReferencedInstructions": false,
}

それぞれの圹割はこうです。

蚭定 圹割 今回での効き方
chat.includeApplyingInstructions applyTo 䞀臎 instruction の自動远加 通垞チャットの土台 13 添付40k
chat.includeReferencedInstructions Markdown link 参照の再垰远加 カスタム゚ヌゞェント起動時の +59 / +217k

蚭定倉曎前埌の比范がこれです。

指暙 カスタム゚ヌゞェント倉曎前 カスタム゚ヌゞェント倉曎埌 通垞チャット参考
system_prompt サむズ 950.5 KB 99.5 KB 113.3 KB
添付数 72 13 13
削枛率 — 箄 90% æž› —

カスタム゚ヌゞェントの system prompt が、通垞チャットず 同じレベルたで萜ちたした。応答も普通に戻り、指瀺通りに動くようになりたした。

数字だけじゃなく、䜓感ずしおも GitHub Copilot Chat の応答がはっきり速くなりたした。最初のトヌクンが返っおくるたでがサクッず早くなっお、「あ、今たでこれ毎リク゚スト 23 䞇トヌクン読たせおたんだな 」ず、過積茉っぷりが䜓感でもわかるレベルでした 🐀

しかも嬉しい副次効果ずしお、添付数が 完党に通垞チャットず同じ 13 たで戻ったので、「instruction の再垰を止めるず、そこから芋づるで匕かれおいた .agent.md も SKILL も連動しお止たる」こずがわかりたした。蚭定 1 ぀で連鎖党䜓が止たるんです。

そしお地味に倧事なのが、この蚭定は ゜ヌス䞊の Markdown リンクをそのたた残せる こず。人間のナビゲヌションクリックしお移動は維持されるし、README から SKILL.md ぞのリンクも生きるし、゚ヌゞェントが必芁なら read_file で郜床読みに行けたす。止たるのは 「起動時の自動先読み」だけ ずいう、ちょうどいい効き方でした。

「ちょっず前たでは動いおた」の説明

䜓感の「最近壊れた」も、ちゃんず説明できたす。

機構自䜓は前から存圚しおいたした。VS Code 1.992025 幎 3 月版で .copilot-instructions.md の nested link resolutionリンク先をネストしお解決する仕組みが入り、その埌 1.1062025 幎 11 月版 で custom agent (.agent.md) が正匏に登堎しお同じ仕組みが乗ったあたりが起点です。

ただ、圓時は添付察象がそこたで重くなかったので、再垰しおも context window に収たっおいたした。

それが、半幎かけお゚ヌゞェント・instruction・SKILL を増やし、合蚈玄 1.58 MB のカスタマむズ資産を持぀頃には  閉包合蚈が 23 䞇トヌクン、゚ヌゞェント起動時だけ閟倀を超えた 結果でした。「最近倉わった」のではなく、「自分の盛り方が閟倀を超えた」だけだったんですよね 😇

実務での蚺断順、アップデヌト版

LT 時の経隓も螏たえお、今の私の蚺断順はこうです。察策はどれか 1 ぀ではなく、䞊から順に効く分だけ重ねおいくむメヌゞです。

  1. applyTo 未指定を埋めるLT で効いた方LLM が勝手に read_file するのを抑える
  2. 蚭定で再垰添付を止める今回効いた方chat.includeReferencedInstructions を false にしお Markdown リンク経由の自動展開を止める
  3. debug-logs で枬るsystem_prompt_0.json のサむズず添付数を、通垞チャットず゚ヌゞェントで比范する
  4. applyTo 駆動の垞時添付を確認通垞チャットの土台 40k がどこから来おいるかは chat.includeApplyingInstructions 偎の話。重ければ applyTo: "**" の instruction 本数ず長さを芋る
  5. ファむル軜量化は最埌内容を消すより、構造applyTo の指定・リンクの貌り方を芋盎す方が効くこずが倚い

LT のずきは 1 番だけで治ったんですが、今回は 1 番が枈んでいおもダメで、2 番が決め手でした。経路が違う察策なので䞡方やっおおくず安定する、ずいうのが今回の孊びです。

蚭蚈の含意

chat.includeReferencedInstructions: false を入れる前提に立぀ず、こういう曞き方が安党になりたす。

  • 必須の刀断ルヌルは、applyTo で scoped された instruction 本䜓に残す
  • 「詳现は別ファむル参照」ずリンクだけ曞いお本文を空にする構成は避けるfalse 䞋では読たれないので
  • リンクは 補助的な深掘り先 ずしお扱う
  • 入口ファむルcopilot-instructions.md / AGENTS.mdは薄く保぀

ちなみに、チヌムポリシヌで蚭定倉曎が難しいずきは、Markdown link をコヌドスパンに倉えるず VS Code がリンクず解釈しにくくなるのも有効です。

<!-- これは VS Code が「リンク」ず解釈しお再垰しがち -->

See [AGENTS.md](../../AGENTS.md)

<!-- これならただのテキスト扱いになりやすい -->

Human reference only: `AGENTS.md`

ただし、私の実枬では 蚭定 1 行で十分でした。リンクをいじる必芁はありたせんでした。

参考もう䞀段絞りたいずきの関連蚭定

ここから先は 必須ではない参考情報 です。チヌムで配るリポゞトリだったり、ホヌム配䞋にもいろいろ眮いおある人、ネストワヌクスペヌスを䜿う人など、もう䞀段コンテキストを絞りたい堎合に䜿える呚蟺蚭定をたずめおおきたす。

蚭定 圹割 䜿いどころ
chat.useCustomizationsInParentRepositories 芪リポゞトリの customizations も探玢するか 既定 false。ネスト構成では明瀺しおおくず事故りにくい
chat.instructionsFilesLocations .instructions.md を探す堎所 䜙蚈な堎所を false にしおおくず未䜿甚資産を螏たない
chat.promptFilesLocations .prompt.md を探す堎所 同䞊
chat.agentFilesLocations .agent.md を探す堎所 同䞊。ホヌム配䞋の詊䜜 agent を持ち蟌みたくない時に有効
chat.useAgentSkills Agent Skills を有効化するか Skills を䜿っおいないなら false で迷わず軜量化
chat.agentSkillsLocations Skills を探す堎所 グロヌバル skills を抑止するず垞時露出をかなり枛らせる

たずえば「グロヌバル skills は読みたくない、このリポゞトリの skills だけ䜿いたい」みたいな絞り蟌みはこんな感じでできたす。

{
  "chat.agentSkillsLocations": {
    ".github/skills": true,
    "~/.copilot/skills": false,
    "~/.claude/skills": false,
  },
  "chat.useCustomizationsInParentRepositories": false,
}

ポむントは、「蚭定で止められるなら、ファむルを消す前に蚭定で止める」 こずです。instruction や skill の䞭身を䞀生懞呜枛らしおも、読み蟌み経路を絞っおいなければたた静かに膚らみたす。先に蛇口を絞っおおく方が長持ちしたす。

おたけこの調査、Copilot Chat が手䌝っおくれたした 🐀

ちなみにこの蚘事の調査、自分で system_prompt_0.json を grep しお回ったわけではなく、Copilot Chat にやっおもらいたした。皮肉ですよね、調査察象の Copilot 自身が調査を手䌝っおくれる構図。

䜿ったのはこの 2 ぀です。

  • Developer: Show Chat Debug Viewコマンドパレットから開ける Chat Debug View。panel/editAgent ノヌドを開くず、その request で実際に送られた system prompt添付ファむル含むの䞭身を党郚芋られたす。今回の添付内蚳分析27 instructions / 22 skills / 8 agents / 2 promptsはここから抜きたした
  • /troubleshoot + #sessionチャットで /troubleshoot ず打っお #session でセッションを参照するず、Copilot 自身が「なぜカスタム instructions が無芖された」みたいな質問に察しお、自分の動䜜ログを解析しお答えおくれたす。
    䜿うには github.copilot.chat.agentDebugLog.enabled ず ...fileLogging.enabled を有効化しおおく必芁がありたす

「Copilot が壊れた」っお隒いでるずきに Copilot に「お前なんで壊れおるの」っお聞いお答えおもらったわけで、なんずも 2026 幎っぜい䜓隓でした。

公匏の手順はこちら: VS Code Wiki - Copilot Issues / Custom Instructions Logs

たずめ

2026/05 LT「GitHub Copilot なにもしおないのにこわれた」で扱った Copilot のコンテキスト爆発問題、その続線ずしお 「もう片方の察策」 が芋぀かった、ずいうのが今回の話でした。

  • LT の察策applyTo を明瀺 → LLM 駆動の read_file を抑える
  • 今回の察策chat.includeReferencedInstructions: false → Markdown リンク経由の再垰添付を止める
  • どちらも 抑える経路が違うので、䞡方やっおおくず事故りにくい
  • 今回は LT 圓時ず違っお、蚭定 1 行で system prompt が玄 90% 枛950 KB → 99.5 KBたで定量的に確認できた

LLM ゚ヌゞェントのコンテキスト蚭蚈っお、量より構造なんだなあ、ず今回でだいぶ腹萜ちしたした。

今回の教蚓Copilot を盛りすぎる人向け

カスタマむズ資産を育おおいる人が、今埌同じ目に遭わないための 3 ぀です。

  1. .instructions.md の frontmatter はちゃんず曞く 🔑
    applyTo で適甚範囲を明瀺する。description も短く正確に曞く。これだけで「LLM が description だけ芋お勝手に read_file する」ルヌトを抑えられたす。
  2. .agent.md も同じく frontmatter を敎える
    description / tools / 必芁なら user-invocable / disable-model-invocation を明瀺。読者から芋お「い぀起動されるべき agent か」が定矩で分かる状態にしおおく。
  3. VS Code を䜿うなら Markdown リンクの自動展開もチェック
    chat.includeReferencedInstructions: false を入れる。ベスト゚フォヌトで読み蟌たせるず、リンクを蟿っお党郚読みに行きたす。資産を育おおいる人ほど、ある日突然 system prompt が爆発したす。

3 ぀に共通するのは、「Copilot が読みに行く経路を、自分で明瀺的に絞る」こずです。盛れば盛るほどこれが効きたす。


䌌たような症状カスタム゚ヌゞェントだけ指瀺が通らない、䜕を聞いおもメニュヌ応答になるに心圓たりがある方は、たず applyTo を埋めお、それでも重ければ今回の 1 行を詊しおみおください。どちらでもダメだったら別の問題なので、たた䞀緒に調査させおください 🙏

参考

  • 2026/05 LT「GitHub Copilot なにもしおないのにこわれた」Docswell

  • VS Code Copilot Settings リファレンスchat.includeReferencedInstructions / chat.includeApplyingInstructions

  • VS Code custom instructions

  • VS Code Custom Agents

  • VS Code 1.99 リリヌスノヌトnested link resolution が入った版

  • vscode#279045 — Markdown リンク自動展開の挙動参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?