L'outil de mémoire permet à Claude de stocker et récupérer des informations entre les conversations via un répertoire de fichiers de mémoire. Claude peut créer, lire, mettre à jour et supprimer des fichiers qui persistent entre les sessions, ce qui lui permet de construire des connaissances au fil du temps sans garder tout dans la fenêtre de contexte.
L'outil de mémoire fonctionne côté client — vous contrôlez où et comment les données sont stockées via votre propre infrastructure.
L'outil de mémoire est actuellement en version bêta. Pour l'activer, utilisez l'en-tête bêta context-management-2025-06-27 dans vos requêtes API.
Veuillez nous contacter via notre formulaire de retours pour partager vos commentaires sur cette fonctionnalité.
Lorsqu'il est activé, Claude vérifie automatiquement son répertoire de mémoire avant de commencer les tâches. Claude peut créer, lire, mettre à jour et supprimer des fichiers dans le répertoire /memories pour stocker ce qu'il apprend en travaillant, puis référencer ces mémoires dans les futures conversations pour gérer des tâches similaires plus efficacement ou reprendre là où il s'était arrêté.
Puisqu'il s'agit d'un outil côté client, Claude effectue des appels d'outil pour exécuter les opérations de mémoire, et votre application exécute ces opérations localement. Cela vous donne un contrôle total sur où et comment la mémoire est stockée. Pour la sécurité, vous devriez restreindre toutes les opérations de mémoire au répertoire /memories.
Lorsque vous demandez à Claude d'aider avec une tâche, Claude vérifie automatiquement son répertoire de mémoire en premier. Voici à quoi ressemble une interaction typique :
1. Demande de l'utilisateur :
"Aide-moi à répondre à ce ticket de service client."2. Claude vérifie le répertoire de mémoire :
"Je vais vous aider à répondre au ticket de service client. Laissez-moi vérifier ma mémoire pour tout contexte antérieur."Claude appelle l'outil de mémoire :
{
"type": "tool_use",
"id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"name": "memory",
"input": {
"command": "view",
"path": "/memories"
}
}3. Votre application retourne le contenu du répertoire :
{
"type": "tool_result",
"tool_use_id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"content": "Voici les fichiers et répertoires jusqu'à 2 niveaux de profondeur dans /memories, excluant les éléments cachés et node_modules:\n4.0K\t/memories\n1.5K\t/memories/customer_service_guidelines.xml\n2.0K\t/memories/refund_policies.xml"
}4. Claude lit les fichiers pertinents :
{
"type": "tool_use",
"id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"name": "memory",
"input": {
"command": "view",
"path": "/memories/customer_service_guidelines.xml"
}
}5. Votre application retourne le contenu du fichier :
{
"type": "tool_result",
"tool_use_id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"content": "Voici le contenu de /memories/customer_service_guidelines.xml avec les numéros de ligne:\n 1\t<guidelines>\n 2\t<addressing_customers>\n 3\t- Adressez-vous toujours aux clients par leur prénom\n 4\t- Utilisez un langage empathique\n..."
}6. Claude utilise la mémoire pour aider :
"En fonction de vos directives de service client, je peux vous aider à rédiger une réponse. Veuillez partager les détails du ticket..."L'outil de mémoire est disponible sur :
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)Pour utiliser l'outil de mémoire :
context-management-2025-06-27 dans vos requêtes APIPour gérer les opérations d'outil de mémoire dans votre application, vous devez implémenter des gestionnaires pour chaque commande de mémoire. Nos SDK fournissent des assistants d'outil de mémoire qui gèrent l'interface d'outil — vous pouvez créer une sous-classe de BetaAbstractMemoryTool (Python) ou utiliser betaMemoryTool (TypeScript) pour implémenter votre propre backend de mémoire (basé sur fichiers, base de données, stockage cloud, fichiers chiffrés, etc.).
Pour des exemples fonctionnels, voir :
Votre implémentation côté client doit gérer ces commandes d'outil de mémoire. Bien que ces spécifications décrivent les comportements recommandés avec lesquels Claude est le plus familier, vous pouvez modifier votre implémentation et retourner des chaînes de caractères selon les besoins de votre cas d'usage.
Affiche le contenu du répertoire ou le contenu du fichier avec des plages de lignes optionnelles :
{
"command": "view",
"path": "/memories",
"view_range": [1, 10] // Optionnel : afficher des lignes spécifiques
}Pour les répertoires : Retournez une liste qui affiche les fichiers et répertoires avec leurs tailles :
Voici les fichiers et répertoires jusqu'à 2 niveaux de profondeur dans {path}, excluant les éléments cachés et node_modules :
{size} {path}
{size} {path}/{filename1}
{size} {path}/{filename2}5.5K, 1.2M).) et node_modulesPour les fichiers : Retournez le contenu du fichier avec un en-tête et des numéros de ligne :
Voici le contenu de {path} avec les numéros de ligne :
{line_numbers}{tab}{content}Formatage des numéros de ligne :
"File {path} exceeds maximum line limit of 999,999 lines."Exemple de sortie :
Voici le contenu de /memories/notes.txt avec les numéros de ligne :
1 Hello World
2 This is line two
10 Line ten
100 Line one hundred"The path {path} does not exist. Please provide a valid path."Créer un nouveau fichier :
{
"command": "create",
"path": "/memories/notes.txt",
"file_text": "Meeting notes:\n- Discussed project timeline\n- Next steps defined\n"
}"File created successfully at: {path}""Error: File {path} already exists"Remplacer du texte dans un fichier :
{
"command": "str_replace",
"path": "/memories/preferences.txt",
"old_str": "Favorite color: blue",
"new_str": "Favorite color: green"
}"The memory file has been edited." suivi d'un extrait du fichier édité avec les numéros de ligne"Error: The path {path} does not exist. Please provide a valid path.""No replacement was performed, old_str `\{old_str}` did not appear verbatim in {path}."old_str apparaît plusieurs fois, retournez : "No replacement was performed. Multiple occurrences of old_str `\{old_str}` in lines: {line_numbers}. Please ensure it is unique"Si le chemin est un répertoire, retournez une erreur "fichier n'existe pas".
Insérer du texte à une ligne spécifique :
{
"command": "insert",
"path": "/memories/todo.txt",
"insert_line": 2,
"insert_text": "- Review memory tool documentation\n"
}"The file {path} has been edited.""Error: The path {path} does not exist""Error: Invalid `insert_line` parameter: {insert_line}. It should be within the range of lines of the file: [0, {n_lines}]"Si le chemin est un répertoire, retournez une erreur "fichier n'existe pas".
Supprimer un fichier ou un répertoire :
{
"command": "delete",
"path": "/memories/old_file.txt"
}"Successfully deleted {path}""Error: The path {path} does not exist"Supprime le répertoire et tout son contenu de manière récursive.
Renommer ou déplacer un fichier/répertoire :
{
"command": "rename",
"old_path": "/memories/draft.txt",
"new_path": "/memories/final.txt"
}"Successfully renamed {old_path} to {new_path}""Error: The path {old_path} does not exist""Error: The destination {new_path} already exists"Renomme le répertoire.
Nous incluons automatiquement cette instruction dans l'invite système lorsque l'outil de mémoire est inclus :
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.Si vous observez Claude créant des fichiers de mémoire désorganisés, vous pouvez inclure cette instruction :
Remarque : lors de la modification de votre dossier de mémoire, essayez toujours de maintenir son contenu à jour, cohérent et organisé. Vous pouvez renommer ou supprimer les fichiers qui ne sont plus pertinents. Ne créez pas de nouveaux fichiers à moins que cela ne soit nécessaire.
Vous pouvez également guider ce que Claude écrit en mémoire, par exemple, « Écrivez uniquement les informations pertinentes pour <topic> dans votre système de mémoire. »
Voici les préoccupations de sécurité importantes lors de l'implémentation de votre magasin de mémoire :
Claude refusera généralement d'écrire des informations sensibles dans les fichiers de mémoire. Cependant, vous voudrez peut-être implémenter une validation plus stricte qui supprime les informations potentiellement sensibles.
Envisagez de suivre les tailles des fichiers de mémoire et d'empêcher les fichiers de devenir trop volumineux. Envisagez d'ajouter un nombre maximum de caractères que la commande de lecture de mémoire peut retourner, et laissez Claude paginer le contenu.
Envisagez d'effacer périodiquement les fichiers de mémoire qui n'ont pas été accédés pendant une période prolongée.
Les entrées de chemin malveillantes pourraient tenter d'accéder à des fichiers en dehors du répertoire /memories. Votre implémentation DOIT valider tous les chemins pour prévenir les attaques de traversée de répertoires.
Envisagez ces protections :
/memories../, ..\\, ou d'autres motifs de traversée%2e%2e%2f)pathlib.Path.resolve() et relative_to() de Python)L'outil de mémoire utilise des motifs de gestion des erreurs similaires à l'outil d'éditeur de texte. Consultez les sections de commande d'outil individuelles ci-dessus pour les messages d'erreur détaillés et les comportements. Les erreurs courantes incluent fichier non trouvé, erreurs de permission, chemins invalides et correspondances de texte en double.
L'outil de mémoire peut être combiné avec l'édition de contexte, qui efface automatiquement les anciens résultats d'outil lorsque le contexte de conversation dépasse un seuil configuré. Cette combinaison permet des flux de travail agentiques de longue durée qui dépasseraient autrement les limites de contexte.
Lorsque l'édition de contexte est activée et que votre conversation approche du seuil d'effacement, Claude reçoit automatiquement une notification d'avertissement. Cela incite Claude à préserver toute information importante des résultats d'outil dans les fichiers de mémoire avant que ces résultats ne soient effacés de la fenêtre de contexte.
Après l'effacement des résultats d'outil, Claude peut récupérer les informations stockées à partir des fichiers de mémoire chaque fois que nécessaire, traitant effectivement la mémoire comme une extension de son contexte de travail. Cela permet à Claude de :
Considérez un projet de refactorisation de code avec de nombreuses opérations de fichiers :
/memories/refactoring_progress.xml)Pour utiliser les deux fonctionnalités ensemble :
Vous pouvez également exclure les appels d'outil de mémoire d'être effacés pour vous assurer que Claude a toujours accès aux opérations de mémoire récentes :
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
}
}
]
}
)