皆さん、こんにちは。クラウド技術部のR.Aです。
Claude Codeを日々使っていると、同じ説明を毎回のセッションで繰り返している場面に気づきます。
「このリポジトリのテストはモックを使わず実DBで行う方針」「リリース期限が近いので大きな変更は避けたい」といった情報は、コードを読むだけでは分からず、会話の中でしか出てこないものです。
Claude Codeには、こうした会話でしか得られない情報をセッションをまたいで覚えておく「memory」という仕組みがあります。今回はこのmemory機能について、覚える内容の種類、保存の仕組み、使う上での注意点を整理してみます。
目次
- 何のための機能か
- 保存場所
- 4種類のメモリタイプ
- 使う上でのポイント
- auto memoryを使わないようにするには
- おわりに
何のための機能か
通常、AIとの会話はセッションが終わると内容を忘れます。しかし実際の開発作業では、「このユーザーはPythonよりGoに詳しい」「テストはモックを使わず実DBで行う方針」といった、毎回同じ説明をし直すと非効率な情報が少なくありません。
memory機能は、そうした情報をファイルとして保存し、次回以降のセッションで自動的に参照する仕組みです。
保存や参照はAI側が会話の内容を見て判断します。ユーザーが「覚えておいて」と明示的に指示した場合はもちろん、指示がなくても会話の中で学んだ情報をAIが判断して保存することがあります。
保存場所
memoryはユーザーのローカル環境の専用ディレクトリに、Markdownファイルとして保存されます。プロジェクトのコード規約(CLAUDE.md等)とは別の仕組みで、コードそのものやgitの履歴からは分からない、ユーザーとのやり取りの中でしか得られない情報を対象にしています。
4種類のメモリタイプ
memoryが覚える内容は、次の4種類に分かれます。
| タイプ | 覚える内容 | 具体例 |
|---|---|---|
| user | ユーザーの役割・専門性・知識レベル | Goに詳しくReactは初めて、といった前提 |
| feedback | AIの進め方への訂正・承認 | 「DBはモックせず実DBでテストして」等の指示 |
| project | 進行中の作業の背景(誰が・何を・なぜ) | リリース期限や凍結期間などの制約 |
| reference | 外部システムへのポインタ | バグ管理はLinearの特定プロジェクトを見る、等 |
それぞれ、どんな場面で保存されるのかを具体例で見ていきます。
user
ユーザーの役割・専門性・知識レベルに関する情報です。
「10年Goを書いてきたが、このリポジトリのフロントエンド(React)は初めて触る」と伝えると、以降のフロントエンドの説明はGoの類似概念に絡めて行われるようになります。
feedback
ユーザーがAIの進め方に対して行った訂正や承認に関する情報です。
「このテストでDBをモックするな。前回モックのテストが通ったのに本番のマイグレーションが壊れた」と伝えると、以降そのプロジェクトのテストでは実DBを使う方針が引き継がれます。対象になるのは訂正だけでなく、「その進め方でよかった」という承認も含みます。
project
進行中の作業の背景(誰が・何を・何のために・いつまでに、を含む)に関する情報です。
「モバイルチームのリリースブランチ切り出しのため、木曜以降は非緊急のマージを止める」と伝えると、以降の作業提案がその期限を踏まえたものになります。
reference
外部システムへのポインタに関する情報です。
「パイプラインのバグはLinearのINGESTプロジェクトで管理している」と伝えると、以降関連する話題が出たときにその場所を参照するよう促されます。
使う上でのポイント
- 明示的に「覚えておいて」と頼まなくても、会話の内容次第でAIが自動的に保存することがあります
- 逆に「忘れて」「今回は記憶を使わないで」と伝えると、その回はmemoryを参照しないよう振る舞います。ただしCLAUDE.mdやmemoryは強制設定ではなくコンテキストとして扱われる仕組みのため、常に確実に反映される保証はありません
- 保存された内容は時間が経つと実態と食い違うことがあります。CLAUDE.mdやmemoryはあくまで参考情報として扱われるため、コードやファイルの現状と矛盾する古い記憶をそのまま鵜呑みにするとは限りません
- コードの書き方やアーキテクチャなど、リポジトリを見れば分かる情報は対象外です。あくまで「会話でしか得られない情報」を対象にした仕組みです
auto memoryを使わないようにするには
会話から自動で保存される仕組み(auto memory)を止めたい場合、無効化する方法は3つあります。
- セッション内で
/memoryコマンドを開き、auto memoryのトグルをオフにする。ユーザー設定(~/.claude/settings.json)のautoMemoryEnabledに反映されます - 特定のプロジェクトだけ無効にしたい場合は、そのプロジェクトの設定ファイル(
.claude/settings.json等)に次の記述を追加します
json
{
"autoMemoryEnabled": false
}
- 環境変数
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1を設定する方法もあります
無効化してもCLAUDE.md自体は別の仕組みとして残ります。CLAUDE.mdはユーザーが自分で書く指示ファイルで、auto memoryのようにAIが自動で書き足すものではなく、無効化する設定もなく毎回のセッションで読み込まれます。
「会話の中で得た情報を自動で覚えておいてほしくない」場合はauto memoryだけを止め、「決まったルールをはっきり指示したい」場合はCLAUDE.mdに書く、という使い分けになります。
おわりに
今回は、Claude Codeのmemory機能について、4種類のメモリタイプと保存の仕組みを整理してみました。
毎回同じ前提を説明し直す手間がなくなる一方、古い記憶が現状と食い違う可能性がある点には注意してください。会話の中で得た情報を活用する仕組みとして、ぜひ使ってみてください。




