メモリツールは、Claudeがメモリファイルディレクトリを通じて会話間で情報を保存・取得することを可能にします。Claudeは、セッション間で持続するファイルを作成、読み取り、更新、削除でき、コンテキストウィンドウにすべてを保持することなく、時間をかけて知識を構築できます。 メモリツールはクライアントサイドで動作します—独自のインフラストラクチャを通じて、データがどこにどのように保存されるかを制御できます。
メモリツールは現在ベータ版です。有効にするには、APIリクエストでベータヘッダーcontext-management-2025-06-27を使用してください。この機能についてのフィードバックをフィードバックフォームを通じてお聞かせください。

使用例

  • 複数のエージェント実行にわたってプロジェクトコンテキストを維持
  • 過去のやり取り、決定、フィードバックから学習
  • 時間をかけて知識ベースを構築
  • Claudeが繰り返しワークフローで改善する会話間学習を可能にする

動作原理

有効にすると、Claudeはタスクを開始する前に自動的にメモリディレクトリをチェックします。Claudeは/memoriesディレクトリ内でファイルを作成、読み取り、更新、削除して作業中に学んだことを保存し、将来の会話でそれらのメモリを参照して類似のタスクをより効果的に処理したり、中断したところから再開したりできます。 これはクライアントサイドツールなので、Claudeはメモリ操作を実行するためにツール呼び出しを行い、アプリケーションがそれらの操作をローカルで実行します。これにより、メモリがどこにどのように保存されるかを完全に制御できます。セキュリティのため、すべてのメモリ操作を/memoriesディレクトリに制限する必要があります。

例:メモリツール呼び出しの動作

Claudeにタスクの支援を求めると、Claudeは自動的に最初にメモリディレクトリをチェックします。典型的なやり取りは次のようになります: 1. ユーザーリクエスト:
"このカスタマーサービスチケットへの返信を手伝ってください。"
2. Claudeがメモリディレクトリをチェック:
"カスタマーサービスチケットへの返信をお手伝いします。以前のコンテキストがないかメモリをチェックしてみます。"
Claudeがメモリツールを呼び出し:
{
  "type": "tool_use",
  "id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
  "name": "memory",
  "input": {
    "command": "view",
    "path": "/memories"
  }
}
3. アプリケーションがディレクトリの内容を返す:
{
  "type": "tool_result",
  "tool_use_id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
  "content": "Directory: /memories\n- customer_service_guidelines.xml\n- refund_policies.xml"
}
4. Claudeが関連ファイルを読み取り:
{
  "type": "tool_use",
  "id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
  "name": "memory",
  "input": {
    "command": "view",
    "path": "/memories/customer_service_guidelines.xml"
  }
}
5. アプリケーションがファイルの内容を返す:
{
  "type": "tool_result",
  "tool_use_id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
  "content": "<guidelines>\n<addressing_customers>\n- Always address customers by their first name\n- Use empathetic language\n..."
}
6. Claudeがメモリを使用して支援:
"カスタマーサービスガイドラインに基づいて、返信の作成をお手伝いできます。チケットの詳細を共有してください..."

サポートされているモデル

メモリツールは以下で利用可能です:
  • Claude Sonnet 4.5 (claude-sonnet-4-5-20250929)
  • Claude Sonnet 4 (claude-sonnet-4-20250514)
  • Claude Opus 4.1 (claude-opus-4-1-20250805)
  • Claude Opus 4 (claude-opus-4-20250514)

はじめに

メモリツールを使用するには:
  1. APIリクエストにベータヘッダーcontext-management-2025-06-27を含める
  2. リクエストにメモリツールを追加
  3. メモリ操作のクライアントサイドハンドラーを実装
アプリケーションでメモリツール操作を処理するには、各メモリコマンドのハンドラーを実装する必要があります。SDKはツールインターフェースを処理するメモリツールヘルパーを提供しています—BetaAbstractMemoryTool(Python)をサブクラス化するか、betaMemoryTool(TypeScript)を使用して独自のメモリバックエンド(ファイルベース、データベース、クラウドストレージ、暗号化ファイルなど)を実装できます。実用的な例については、以下を参照してください:

基本的な使用法

curl https://api.anthropic.com/v1/messages \
    --header "x-api-key: $ANTHROPIC_API_KEY" \
    --header "anthropic-version: 2023-06-01" \
    --header "content-type: application/json" \
    --header "anthropic-beta: context-management-2025-06-27" \
    --data '{
        "model": "claude-sonnet-4-5",
        "max_tokens": 2048,
        "messages": [
            {
                "role": "user",
                "content": "I'\''m working on a Python web scraper that keeps crashing with a timeout error. Here'\''s the problematic function:\n\n```python\ndef fetch_page(url, retries=3):\n    for i in range(retries):\n        try:\n            response = requests.get(url, timeout=5)\n            return response.text\n        except requests.exceptions.Timeout:\n            if i == retries - 1:\n                raise\n            time.sleep(1)\n```\n\nPlease help me debug this."
            }
        ],
        "tools": [{
            "type": "memory_20250818",
            "name": "memory"
        }]
    }'

ツールコマンド

クライアントサイド実装では、これらのメモリツールコマンドを処理する必要があります:

view

オプションの行範囲でディレクトリの内容またはファイルの内容を表示:
{
  "command": "view",
  "path": "/memories",
  "view_range": [1, 10]  // オプション:特定の行を表示
}

create

ファイルを作成または上書き:
{
  "command": "create",
  "path": "/memories/notes.txt",
  "file_text": "Meeting notes:\n- Discussed project timeline\n- Next steps defined\n"
}

str_replace

ファイル内のテキストを置換:
{
  "command": "str_replace",
  "path": "/memories/preferences.txt",
  "old_str": "Favorite color: blue",
  "new_str": "Favorite color: green"
}

insert

特定の行にテキストを挿入:
{
  "command": "insert",
  "path": "/memories/todo.txt",
  "insert_line": 2,
  "insert_text": "- Review memory tool documentation\n"
}

delete

ファイルまたはディレクトリを削除:
{
  "command": "delete",
  "path": "/memories/old_file.txt"
}

rename

ファイル/ディレクトリの名前を変更または移動:
{
  "command": "rename",
  "old_path": "/memories/draft.txt",
  "new_path": "/memories/final.txt"
}

プロンプトガイダンス

メモリツールが含まれている場合、システムプロンプトに次の指示を自動的に含めます:
重要:他の何よりも先に、常にメモリディレクトリを表示してください。
メモリプロトコル:
1. `memory`ツールの`view`コマンドを使用して、以前の進捗をチェックしてください。
2. ... (タスクに取り組む) ...
     - 進捗を作るにつれて、ステータス/進捗/思考などをメモリに記録してください。
中断を想定:コンテキストウィンドウはいつでもリセットされる可能性があるため、メモリディレクトリに記録されていない進捗を失うリスクがあります。
Claudeが散らかったメモリファイルを作成するのを観察した場合、次の指示を含めることができます:
注意:メモリフォルダを編集する際は、常にその内容を最新で一貫性があり整理された状態に保つようにしてください。もはや関連性のないファイルは名前を変更したり削除したりできます。必要でない限り新しいファイルを作成しないでください。
Claudeがメモリに書き込む内容をガイドすることもできます。例:「メモリシステムには<トピック>に関連する情報のみを書き留めてください。」

セキュリティ上の考慮事項

メモリストアを実装する際の重要なセキュリティ上の懸念事項は次のとおりです:

機密情報

Claudeは通常、メモリファイルに機密情報を書き込むことを拒否します。ただし、潜在的に機密性の高い情報を除去するより厳格な検証を実装することをお勧めします。

ファイルストレージサイズ

メモリファイルのサイズを追跡し、ファイルが大きくなりすぎることを防ぐことを検討してください。メモリ読み取りコマンドが返すことができる最大文字数を追加し、Claudeが内容をページ分割できるようにすることを検討してください。

メモリの有効期限

長期間アクセスされていないメモリファイルを定期的にクリアすることを検討してください。

パストラバーサル保護

悪意のあるパス入力は、/memoriesディレクトリ外のファイルにアクセスしようとする可能性があります。実装では、ディレクトリトラバーサル攻撃を防ぐためにすべてのパスを検証する必要があります
次の安全対策を検討してください:
  • すべてのパスが/memoriesで始まることを検証
  • パスを正規形式に解決し、メモリディレクトリ内に留まることを確認
  • ../..\\、またはその他のトラバーサルパターンを含むパスを拒否
  • URL エンコードされたトラバーサルシーケンス(%2e%2e%2f)に注意
  • 言語の組み込みパスセキュリティユーティリティを使用(例:Pythonのpathlib.Path.resolve()relative_to()

エラーハンドリング

メモリツールはテキストエディタツールと同じエラーハンドリングパターンを使用します。一般的なエラーには、ファイルが見つからない、権限エラー、無効なパスなどがあります。