Copilot Memory とカスタム指示の違い:メモリの保存場所と削除方法
GitHub Copilot Memory はパブリックプレビュー中の、リポジトリ単位で GitHub がホストするメモリです——ディスク上で見つけたフォルダーとは別物です。このウォークスルーでは、種類ごとにメモリがどこへ保存されるのか、確認と削除の方法、個人と組織それぞれでクラウド版をオン/オフにする手順、そしてメモリでは代替できないルールを書くためのコピペ用カスタム指示テンプレートを、12 ステップで解説します。内容は docs.github.com と VS Code のメモリ関連ドキュメントと突き合わせて確認しています。
要点まとめ
- メモリはリポジトリ内のフォルダーではありません。GitHub Copilot Memory は GitHub が保存し、1 つのリポジトリに紐づきます。確認と削除は Repository → Settings → Code & automation → Copilot → Memory で行います。ディスク上で見つかるメモリフォルダーは、VS Code の別系統であるローカルメモリツールのものです。
- ローカルに 3 つ、クラウドに 1 つのスコープがあります。VS Code のメモリツールは User・Session・Repository のメモを /memories/、/memories/session/、/memories/repo/ に置いて手元のマシンに保存します。GitHub Copilot Memory はリポジトリスコープを、coding agent・code review・Copilot CLI が共通で読むホスト型のスコープに置き換えます。
- 既定値はプランで決まります。Copilot Pro と Pro+ は Copilot Memory が既定でオン、Copilot Business と Enterprise はエンタープライズまたは組織のオーナーが有効化するまでオフです。2 つの組織からライセンスを受けている場合は、より制限の厳しい設定が優先されます。
- メモリは失効しますが、指示は失効しません。メモリは Copilot が書き込み、生成元のコードと照合して検証され、使われ続けなければ 28 日で削除されます。失いたくないルール——テストコマンドやセキュリティ要件——は .github/copilot-instructions.md に書いてください。このページがテンプレートで締めくくられている理由でもあります。
I tried out all the memory features in GitHub Copilot (User / Session / Repository / Copilot Memory)
デモ動画:Yuzubon — ゆずぼん15:00
Instruction Files & /chronicle — Teaching Copilot Your Codebase
デモ動画:Casey Irvine17:37
The latest in managing and auditing GitHub Copilot agents
デモ動画:GitHub4:12
Managing and curating Copilot Memory (official docs, public preview)
公式ドキュメント:docs.github.com
Copilot Memory はパブリックプレビュー中で、設定への導線もまだ動いています。本ページの有効化手順、28 日で失効する仕様、リポジトリのメモリページは、docs.github.com の「Managing and curating Copilot Memory」ハウツーと VS Code の「Use memory with agents」リファレンスから引用しました。ローカルのメモリフォルダーのパスは録画そのものから取っているため Windows 固有のもので、macOS と Linux では同じ VS Code の global storage ディレクトリ以下に読み替えてください。
スクリーンショットは出典の録画を明記し、各ステップは該当の秒へ深リンクしています。本文の手順・比較表・テンプレートは本ページのオリジナルで、字幕の転載はありません。
全 12 ステップ:ディスク上のフォルダーからコミットする指示テンプレートまで
Copilot が覚えていること、その保存場所
- 1
設定を触る前にメモリフォルダーを確認する
VS Code のメモリツールは、手元のマシンにただの Markdown ファイルを書き込むだけで、GitHub には送信しません。Windows では %APPDATA%\Code\User\globalStorage\github.copilot-chat\memory-tool\memories\ の下にあり、スクリーンショットの coding-style.md もまさにこのディレクトリにあります。macOS は ~/Library/Application Support/Code/User/globalStorage/、Linux は ~/.config/Code/User/globalStorage/ で、その下の github.copilot-chat/memory-tool/memories は同じ構成です。ここにあるものはコミットされないのでチームの誰も読めず、ファイルを削除すればメモリも消えます。

memory-tool フォルダーを開いたエクスプローラー:VS Code のローカルメモリツールを支える Markdown ファイル群です。動画の 3:26 を見る - 2
ユーザーメモリは最初に読み込まれるファイル
チャットで好みを伝えます——「I prefer early returns and longer, descriptive variable names」——するとメモリツールがユーザーメモリのファイルを作り、応答でもその旨を報告します。スクリーンショットでは coding-style.md が globalStorage › github.copilot-chat › memory-tool › memories から開かれ、チャットパネルに「Reviewed memory file coding-style.md」と表示され、ファイルが作成されたことが確認できます。ユーザーメモリは毎回の会話に自動で注入される唯一のスコープで、VS Code のドキュメントでは上限が最初の 200 行とされています。200 行ではなく、役に立つ 10 行を書きましょう。

意図的に短く保ったユーザーメモリ。チャットが書き込んだファイルを確認しています。動画の 3:56 を見る - 3
セッションメモリは、説明し直さなくて済む計画書
セッションメモリが本領を発揮するのはプランモードです。Plan を選んだ状態で変更を依頼すると、エージェントは実装プランを /memories/session/plan.md に保存し、その会話の中だけで参照できるようにします——VS Code のドキュメントは Session を「現在の会話のみ」と説明しています。Agent モードに戻したら、打ち直すのではなくこのプランを指せば済みます。セッションメモリは最も寿命が短いスコープでもあり、最後のアクセスから 14 日で破棄されます。来月も必要になる判断はここに置かないでください。

Plan モードにした Copilot Chat に、TODO アプリへ update 関数を追加する依頼を入力している場面。エージェントがセッションメモリにプランを書くきっかけです。動画の 7:06 を見る
リポジトリメモリと GitHub のクラウド層
- 4
リポジトリメモリは、オプトインするまでローカルに留まる
「in this repository, remember that every new function needs a test」と伝えると、エージェントはそれを /memories/repo/ に書き込みます——依然としてディスク上にあり、チームには見えず、1 つの設定を変えるまで GitHub のサーバーにも上がりません。スクリーンショットはその依頼を入力している場面です。これが一般に「Copilot memory folder」と呼ばれるスコープです。フォルダーは実在しますが、リポジトリの中ではなく VS Code の global storage の中にあるため、プロジェクト内を検索しても見つかりません。

リポジトリのルールを Copilot に覚えさせる依頼。この書き込みはローカルのリポジトリスコープに入ります。動画の 10:00 を見る - 5
クラウドのスイッチを入れると、移動するのは新しいメモリだけ
Copilot Memory はこの仕組みのうち GitHub がホストする側で、VS Code では個別のオプトインが必要です。github.copilot.chat.copilotMemory.enabled を .vscode/settings.json に追加します。VS Code のドキュメントは copilotMemory をオプトイン項目として扱い、ローカルのメモリツールとは別物としています。これが true になると、以前は /memories/repo/ に入っていた書き込みが GitHub へ送られます。変わらない点が 2 つあります。既存のローカルリポジトリメモリは移行されず、ツールは作成しか行いません——ホストされたメモリを確認・削除するには GitHub を開く必要があります。

リポジトリメモリの保存先をローカルフォルダーから GitHub に切り替える .vscode/settings.json の編集です。動画の 13:10 を見る - 6
メモリの確認と削除は設定ではなくリポジトリで行う
公式ドキュメントが案内するのはこのページです:Repository → Settings → Code & automation → Copilot → Memory(Preview 表示)。メモリは新しい順に本文とタグ付きで並び、ゴミ箱アイコンで 1 件、チェックボックスでまとめて削除できます。削除は重要です。誤ったメモリは、メモリが無い状態より悪いからです。Copilot は各メモリを生成元の引用と照合して検証し、そのコードが動けば無視しますが、読み違いから生まれたメモリはこの検証をすり抜け続けます。メモリは 28 日で自動的に失効もします。

リポジトリ設定内にある GitHub の Copilot memory ページ。保存されたメモリ 1 件と、その横の削除ボタン。動画の 12:09 を見る
チームで有効にしてから指示を書く
- 7
エンタープライズと組織のオーナーが先に有効化する必要がある
誰が何をするかはプランで決まります。個人の Copilot Pro と Pro+ は Copilot Memory が既定でオンで、Settings → Copilot → Features からオフにできます。Copilot Business と Enterprise は逆で、オーナーが有効化するまでオフのままです——エンタープライズのオーナーは AI Controls → Copilot → Features から Let organizations decide/Enabled everywhere/Disabled everywhere を選び、組織のオーナーは Organization settings → Code, planning and automation → Copilot → Policies → Features → Copilot Memory → Enabled で有効化します。2 つの組織からライセンスが割り当てられている場合は、より制限の厳しい設定が適用されます。

エンタープライズの AI Controls。Copilot Memory の有効化ポリシーはこの一群のページにあります。動画の 1:06 を見る - 8
カスタム指示は .github フォルダーから始まる
メモリは Copilot が書き、指示はあなたが書いてコミットします。役割を担うファイルは 2 つです。リポジトリ全体に効くルールは .github/copilot-instructions.md、一部のパスにだけ効くルールは .github/instructions/NAME.instructions.md で、後者は Copilot が触っているファイルと突き合わせられます。スクリーンショットは Microsoft 自身の VS Code リポジトリで、.github の中に copilot-instructions.md が instructions/、agents/、skills/、prompts/、hooks/ と並んでいます——何か月も公開で運用してきたリポジトリの形をそのまま真似してください。

microsoft/vscode の .github フォルダー。copilot-instructions.md が instructions ディレクトリの隣にあります。動画の 1:40 を見る - 9
パス限定のルールは applyTo で決まる
.instructions.md ファイルは、いつ読み込まれるかを YAML フロントマターで決めます。name は UI に表示されるラベル、description はこのファイルがどのタスク向けかをエージェントに伝える文、applyTo はリポジトリルートからの相対 glob です——スクリーンショットには実際の VS Code 指示ファイルの applyTo: src/vs/workbench/contrib/chat/browser/aiCustomization/** が写っています。applyTo がエージェントの作成・編集するファイルに一致すると VS Code が自動で添付し、description がタスクに合えばオンデマンドで読み込むこともできます。両方のフィールドを省くと、手動で添付したときだけ読み込まれます。

applyTo の glob によって 1 つのフォルダーにだけ紐づく、実際の指示ファイル。動画の 5:20 を見る
カスタム指示テンプレート
- 10
個人用の指示もファイルです
リポジトリのテンプレートの前に、自分の既定値をどこに置くべきかを押さえてください。こちらの方が優先されるからです。Copilot CLI とエージェントホストは ~/.copilot/copilot-instructions.md を読み、スクリーンショットには ## Output、## Working style、## AI disclosure の各セクションを持つ実例が写っています——どれだけ短いかに注目してください。github.com では Copilot Chat → プロフィール画像 → Personal instructions が相当し、GitHub は [format] のようなプレースホルダー付きのテンプレートも用意しています。優先順位は個人、リポジトリ、組織の順で、一致したものはすべて送信されるため、2 つが矛盾しないようにしてください。

.copilot ホームフォルダー内の個人用 copilot-instructions.md。output・working style・disclosure の各セクション付き。動画の 4:10 を見る - 11
まず /init で初稿を生成し、あとで置き換える
白紙のファイルから始める必要はありません。リポジトリに指示ファイルが無いとき、Copilot CLI は「No copilot instructions found. Run /init to generate a copilot-instructions.md file for this project」と表示します——スクリーンショットはそのメッセージです。/init を実行し、その結果を下のテンプレートに照らして編集します。コマンド一覧は正確に保ち、コードを読めば分かることは削り、シークレット・トークン・顧客データは絶対に貼らないでください。このファイルはコミットされ、チームの全員とすべてのエージェントが読みます。

指示ファイルがまだ無いと Copilot CLI が伝え、/init を案内しているところ。動画の 10:00 を見る - 12
セッションが実際に読み込んだファイルを確認する
監査できないテンプレートは当て推量です。Copilot CLI では /instructions がセッションの読み込んだ指示ファイルをすべて一覧表示します——スクリーンショットではコマンドの上に「Loading environment: 18 custom instructions, 3 extensions, 26 hooks, 27 skills, 4 MCP servers」の行があります——各ファイルは削除せずに現在のセッションだけオフにできます。VS Code では Chat: Open Customizations の奥にある Agent Customizations エディターが相当し、リポジトリ指示についてはチャット応答の上部にある参照リストを展開して .github/copilot-instructions.md が使われたか確認できます。

Copilot CLI の /instructions コマンド。セッションが読み込んだコンテキストを確認する最短の方法です。動画の 7:10 を見る
Copilot Memory・カスタム指示・リポジトリ指示の比較
「Copilot memory」と呼ばれるものが 3 つあります。エージェントが書くのは最初の 1 つだけで、残る 2 つはあなたがコミットして保守するファイルです。この比較は優劣を決めるものではなく、2 つの機能が併存する理由を示すものです。誰も書き残していない慣習にはメモリを、証拠を示せるルールには指示を使ってください。
| 項目 | Copilot Memory(ホスト型) | カスタム指示(.github/copilot-instructions.md) | パス指示(.github/instructions/*.instructions.md) |
|---|---|---|---|
| 何か | Copilot がリポジトリで作業する中で推論した事実。主題と、それを裏づける引用の組として保存されます。 | 一度書けば、リポジトリ内のすべてのリクエストに適用されるルール。 | リポジトリ内の特定のパス、言語、フォルダーにだけ書くルール。 |
| 書く人 | Copilot が自動で。機能を有効にした利用者の作業をきっかけに書き込みます。 | あなたが手書きで。Markdown で書きます。 | あなたが手書きで。YAML フロントマター付きの Markdown です。 |
| 保存場所 | GitHub 上で、1 つのリポジトリに紐づきます。確認と削除は Repository → Settings → Copilot → Memory。作業ツリーにファイルはありません。 | リポジトリ内、プロジェクトのルートにある .github/copilot-instructions.md。 | リポジトリ内の .github/instructions/ 以下に、スコープごとに 1 ファイル。 |
| 読み込まれる条件 | 自動。ただし引用が現在のブランチと照合され、検証を通った場合のみ。 | そのリポジトリのすべてのリクエストに。チャット・エージェント・code review のいずれでも。 | applyTo の glob が対象ファイルに一致したとき、またはエージェントが description を関連ありと判断したときだけ。 |
| 保持期間 | 28 日間。検証され再利用されたメモリは書き直され、寿命が延びます。 | 誰かがファイルを変更・削除するまで。コードと一緒にバージョン管理されます。 | 誰かがファイルを変更・削除するまで。 |
| 閲覧できる人 | そのリポジトリで Copilot Memory を有効にしている全員。メモリがリポジトリの外に出ることはありません。 | リポジトリにアクセスできる全員、さらにそれを読むすべてのエージェントとレビュアー。 | リポジトリにアクセスできる全員。 |
| 編集方法 | リポジトリ設定で削除します。メモリツールは作成しかできず、確認も削除もできません。 | 他のファイルと同じように Pull Request を出します。 | 他のファイルと同じように Pull Request を出します。 |
| 向いている用途 | 誰も文書化していない慣習、レビュアーが繰り返し指摘する修正の型、このコードベースの安全なパターン。 | スタックとバージョン、正確なビルド・テストコマンド、フォルダー構成、セキュリティとレビューのルール。 | モノレポのフレームワーク規約、テストファイルの慣習、特定フォルダーのスタイル、特定言語のイディオム。 |
Copilot が本当に必要とする 6 つを押さえるカスタム指示テンプレート
GitHub 自身の指針は、ファイルを短く具体的に保つことです。スタックは何か、どう実行するか、コードはどこにあるか、どの規約が必須か、何を避けるか。以下のブロックはコピーしてから削る前提で書いています——エージェントがリポジトリを読めば分かる行は削ってください。肥大化した指示ファイルは、本当に重要なルールを薄めてしまいます。リポジトリのルートに .github/copilot-instructions.md として保存します。
# .github/copilot-instructions.md
## Project and stack
- Next.js 15 app router, TypeScript strict, Node 22.
- Package manager: pnpm. Never run npm or yarn install.
## Commands
- Build: pnpm build
- Lint: pnpm lint
- Test everything: pnpm test
- Test one file: pnpm test -- path/to/file.test.ts
## Layout
- Routes: src/app/**
- UI components: src/components/**
- Data access: src/lib/db.ts and src/lib/repositories/**
- Tests live next to the file they cover: *.test.ts
## Conventions
- Named exports only; no default exports from src/lib.
- Handle errors at the boundary and return early instead of nesting.
- Import order: node builtins, external packages, then @/ aliases.
## Testing and review
- Every behaviour change ships with a test in the same pull request.
- Run the single-file test before requesting review.
- Commit messages follow Conventional Commits.
## Do not
- Do not edit files under src/generated/**.
- Do not add a dependency without calling it out in the pull request.
- Do not log secrets, tokens or full request bodies.- 1プロジェクトとスタック——フレームワーク、言語モード、パッケージマネージャーを 1 行で明記します。npm・pnpm・yarn の間でエージェントが推測し、頼んでいない lockfile を生成するのを止めるブロックです。
- 2コマンド——ビルド、lint、テスト、単一ファイルのテストの正確なコマンド。記憶ではなく CI の設定からコピーしてください。テストコマンドの誤りは、最も高くつく一行です。
- 3レイアウト——ルート、コンポーネント、データアクセス、テストがどこにあるか。アーキテクチャを文章で説明せず、ディレクトリを指してください。パスは検証できますが、段落は検証できません。
- 4規約——命名、エラー処理、import の順序、チームが実際に守っているフォーマット規則。各ルールは二値で判定できる形にします。コードが従っているか、いないかです。
- 5テストとレビュー——テストが必須の変更は何か、レビューで何を確認するか、コミットやブランチの規約。本来メモリに頼るはずのものを保証に変えるブロックです。
- 6やってはいけないこと——アンチパターン。生成ファイル、無断の依存追加、無関係なリファクタリング、ログへのシークレット出力。悪い Pull Request をまとめて防ぐには、禁止ルールが最も安上がりです。
2 つ目のファイルで範囲を絞る
フォルダー固有のルールを .github/instructions/ 以下の別ファイルに移せば、リポジトリのファイルを短く保てます。効くのはフロントマターです。applyTo が一致するパスへ自動で添付し、description がエージェントに適切なタスクで読み込ませます。VS Code は対応フィールドとして name、description、applyTo を挙げています。
---
name: 'React components'
description: 'Use when creating or updating components under src/components.'
applyTo: 'src/components/**/*.tsx'
---
# React components
- One component per file, named after the file.
- Props are typed with an explicit interface; no React.FC.
- Colocate styles with the component; no global class names.自分の好みはリポジトリのファイルに書かない
プロジェクトではなく自分に関するもの——回答の長さ、トーン、diff の説明の好み——は個人用の指示に置きます。Copilot CLI とエージェントホストは ~/.copilot/copilot-instructions.md を読み、github.com では Copilot Chat を開いてプロフィール画像をクリックし Personal instructions を選びます。GitHub は [format] のようなプレースホルダー付きのテンプレートも用意しています。個人用の指示はリポジトリと組織の指示より優先されるため、そこで設定した好みをリポジトリごとに繰り返す必要はありません。
すべてのブロックに共通する最後の 2 つのルールです。コミットする指示ファイルにシークレット・トークン・顧客データを入れないこと。リポジトリの指示とメモリに食い違いを作らないこと——衝突した場合、Copilot は両方のコンテキストにできる範囲で従おうとするため、結果は予測できません。メモリが書き込んだルールと矛盾し続けるなら、ルールを緩めるのではなくメモリを削除してください。
