メモリツールにより、Claudeはメモリファイルディレクトリを通じて会話間で情報を保存・取得できます。Claudeはセッション間で永続化するファイルを作成、読み取り、更新、削除でき、コンテキストウィンドウにすべてを保持することなく時間をかけて知識を構築できます。
メモリツールはクライアント側で動作します。つまり、独自のインフラストラクチャを通じてデータがどこにどのように保存されるかを制御します。
メモリツールは現在ベータ版です。有効にするには、APIリクエストでベータヘッダー context-management-2025-06-27 を使用してください。
このフィーチャーに関するフィードバックを共有するには、フィードバックフォームからお問い合わせください。
有効にすると、Claudeはタスクを開始する前に自動的にメモリディレクトリをチェックします。Claudeは /memories ディレクトリ内のファイルを作成、読み取り、更新、削除して、作業中に学んだことを保存し、その後の会話でそれらのメモリを参照して、同様のタスクをより効果的に処理したり、中断したところから再開したりできます。
これはクライアント側のツールであるため、Claudeはメモリ操作を実行するためにツール呼び出しを行い、アプリケーションはそれらの操作をローカルで実行します。これにより、メモリがどこにどのように保存されるかを完全に制御できます。セキュリティのため、すべてのメモリ操作を /memories ディレクトリに制限する必要があります。
Claudeにタスクを支援するよう依頼すると、Claudeは最初に自動的にメモリディレクトリをチェックします。典型的なインタラクションは次のようになります:
1. ユーザーリクエスト:
"Help me respond to this customer service ticket."2. Claudeがメモリディレクトリをチェック:
"I'll help you respond to the customer service ticket. Let me check my memory for any previous context."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がメモリを使用して支援:
"Based on your customer service guidelines, I can help you craft a response. Please share the ticket details..."メモリツールは以下で利用可能です:
claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-haiku-4-5-20251001)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)メモリツールを使用するには:
context-management-2025-06-27 を含めるアプリケーションでメモリツール操作を処理するには、各メモリコマンドのハンドラーを実装する必要があります。SDKはメモリツールヘルパーを提供し、ツールインターフェースを処理します。BetaAbstractMemoryTool(Python)をサブクラス化するか、betaMemoryTool(TypeScript)を使用して、独自のメモリバックエンド(ファイルベース、データベース、クラウドストレージ、暗号化ファイルなど)を実装できます。
動作例については、以下を参照してください:
クライアント側の実装は、これらのメモリツールコマンドを処理する必要があります:
オプションの行範囲を指定してディレクトリコンテンツまたはファイルコンテンツを表示します:
{
"command": "view",
"path": "/memories",
"view_range": [1, 10] // オプション:特定の行を表示
}ファイルを作成または上書きします:
{
"command": "create",
"path": "/memories/notes.txt",
"file_text": "Meeting notes:\n- Discussed project timeline\n- Next steps defined\n"
}ファイル内のテキストを置換します:
{
"command": "str_replace",
"path": "/memories/preferences.txt",
"old_str": "Favorite color: blue",
"new_str": "Favorite color: green"
}特定の行にテキストを挿入します:
{
"command": "insert",
"path": "/memories/todo.txt",
"insert_line": 2,
"insert_text": "- Review memory tool documentation\n"
}ファイルまたはディレクトリを削除します:
{
"command": "delete",
"path": "/memories/old_file.txt"
}ファイル/ディレクトリを名前変更または移動します:
{
"command": "rename",
"old_path": "/memories/draft.txt",
"new_path": "/memories/final.txt"
}メモリツールが含まれている場合、システムプロンプトに自動的にこの指示が含まれます:
IMPORTANT: ALWAYS VIEW YOUR MEMORY DIRECTORY BEFORE DOING ANYTHING ELSE.
MEMORY PROTOCOL:
1. Use the `view` command of your `memory` tool to check for earlier progress.
2. ... (work on the task) ...
- As you make progress, record status / progress / thoughts etc in your memory.
ASSUME INTERRUPTION: Your context window might be reset at any moment, so you risk losing any progress that is not recorded in your memory directory.Claudeがメモリファイルを散らかしているのを観察した場合、この指示を含めることができます:
Note: when editing your memory folder, always try to keep its content up-to-date, coherent and organized. You can rename or delete files that are no longer relevant. Do not create new files unless necessary.
また、Claudeがメモリに何を書き込むかをガイドすることもできます。例えば、「<topic>に関連する情報のみをメモリシステムに記録してください。」
メモリストアを実装する際の重要なセキュリティ上の懸念事項は以下の通りです:
Claudeは通常、機密情報をメモリファイルに書き込むことを拒否します。ただし、潜在的に機密情報を削除する、より厳密な検証を実装することをお勧めします。
メモリファイルサイズを追跡し、ファイルが大きくなりすぎるのを防ぐことを検討してください。メモリ読み取りコマンドが返すことができる最大文字数を追加し、Claudeがコンテンツをページネーションできるようにすることを検討してください。
長時間アクセスされていないメモリファイルを定期的にクリアすることを検討してください。
悪意のあるパス入力は /memories ディレクトリ外のファイルへのアクセスを試みる可能性があります。実装は必ずすべてのパスを検証して、ディレクトリトラバーサル攻撃を防ぐ必要があります。
これらのセーフガードを検討してください:
/memories で始まることを検証する../、..\、またはその他のトラバーサルパターンを含むパスを拒否する%2e%2e%2f)に注意するpathlib.Path.resolve() と relative_to())メモリツールはテキストエディタツールと同じエラーハンドリングパターンを使用します。一般的なエラーには、ファイルが見つからない、権限エラー、無効なパスが含まれます。
メモリツールはコンテキスト編集と組み合わせることができます。これは会話コンテキストが設定されたしきい値を超えて増加したときに古いツール結果を自動的にクリアします。この組み合わせにより、長時間実行されるエージェントワークフローがコンテキスト制限を超えることなく実行できます。
コンテキスト編集が有効になっており、会話がクリアしきい値に近づくと、Claudeは自動的に警告通知を受け取ります。これにより、Claudeはツール結果から重要な情報をメモリファイルに保存するよう促されます。その後、これらの結果がコンテキストウィンドウからクリアされます。
ツール結果がクリアされた後、Claudeは必要に応じてメモリファイルから保存された情報を取得でき、メモリを作業コンテキストの拡張として効果的に扱うことができます。これにより、Claudeは以下を実行できます:
多くのファイル操作を伴うコードリファクタリングプロジェクトを考えてみてください:
/memories/refactoring_progress.xml)両方のフィーチャーを一緒に使用するには:
メモリツール呼び出しがクリアされるのを除外して、Claudeが常に最近のメモリ操作にアクセスできるようにすることもできます:
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"exclude_tools": ["memory"]
}
]
}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"
}]
}'response = client.beta.messages.create(
model="claude-sonnet-4-5",
max_tokens=4096,
messages=[...],
tools=[
{
"type": "memory_20250818",
"name": "memory"
},
# Your other tools
],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {
"type": "input_tokens",
"value": 100000
},
"keep": {
"type": "tool_uses",
"value": 3
}
}
]
}
)