A ferramenta de memória permite que Claude armazene e recupere informações entre conversas através de um diretório de arquivo de memória. Claude pode criar, ler, atualizar e excluir arquivos que persistem entre sessões, permitindo que ele construa conhecimento ao longo do tempo sem manter tudo na janela de contexto.
A ferramenta de memória opera no lado do cliente—você controla onde e como os dados são armazenados através de sua própria infraestrutura.
A ferramenta de memória está atualmente em beta. Para habilitá-la, use o cabeçalho beta context-management-2025-06-27 em suas solicitações de API.
Por favor, entre em contato através de nosso formulário de feedback para compartilhar seu feedback sobre este recurso.
Quando habilitada, Claude verifica automaticamente seu diretório de memória antes de iniciar tarefas. Claude pode criar, ler, atualizar e excluir arquivos no diretório /memories para armazenar o que aprende enquanto trabalha, depois referenciar essas memórias em conversas futuras para lidar com tarefas semelhantes de forma mais eficaz ou continuar de onde parou.
Como esta é uma ferramenta do lado do cliente, Claude faz chamadas de ferramenta para executar operações de memória, e sua aplicação executa essas operações localmente. Isso lhe dá controle total sobre onde e como a memória é armazenada. Por segurança, você deve restringir todas as operações de memória ao diretório /memories.
Quando você pede a Claude para ajudar com uma tarefa, Claude verifica automaticamente seu diretório de memória primeiro. Aqui está o que uma interação típica parece:
1. Solicitação do usuário:
"Help me respond to this customer service ticket."2. Claude verifica o diretório de memória:
"I'll help you respond to the customer service ticket. Let me check my memory for any previous context."Claude chama a ferramenta de memória:
{
"type": "tool_use",
"id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"name": "memory",
"input": {
"command": "view",
"path": "/memories"
}
}3. Sua aplicação retorna o conteúdo do diretório:
{
"type": "tool_result",
"tool_use_id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"content": "Here're the files and directories up to 2 levels deep in /memories, excluding hidden items and node_modules:\n4.0K\t/memories\n1.5K\t/memories/customer_service_guidelines.xml\n2.0K\t/memories/refund_policies.xml"
}4. Claude lê arquivos relevantes:
{
"type": "tool_use",
"id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"name": "memory",
"input": {
"command": "view",
"path": "/memories/customer_service_guidelines.xml"
}
}5. Sua aplicação retorna o conteúdo do arquivo:
{
"type": "tool_result",
"tool_use_id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"content": "Here's the content of /memories/customer_service_guidelines.xml with line numbers:\n 1\t<guidelines>\n 2\t<addressing_customers>\n 3\t- Always address customers by their first name\n 4\t- Use empathetic language\n..."
}6. Claude usa a memória para ajudar:
"Based on your customer service guidelines, I can help you craft a response. Please share the ticket details..."A ferramenta de memória está disponível em:
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)Para usar a ferramenta de memória:
context-management-2025-06-27 em suas solicitações de APIPara lidar com operações da ferramenta de memória em sua aplicação, você precisa implementar manipuladores para cada comando de memória. Nossos SDKs fornecem auxiliares de ferramenta de memória que lidam com a interface da ferramenta—você pode fazer uma subclasse de BetaAbstractMemoryTool (Python) ou usar betaMemoryTool (TypeScript) para implementar seu próprio backend de memória (baseado em arquivo, banco de dados, armazenamento em nuvem, arquivos criptografados, etc.).
Para exemplos funcionais, veja:
Sua implementação do lado do cliente precisa lidar com esses comandos da ferramenta de memória. Embora essas especificações descrevam os comportamentos recomendados com os quais Claude está mais familiarizado, você pode modificar sua implementação e retornar strings conforme necessário para seu caso de uso.
Mostra o conteúdo do diretório ou conteúdo do arquivo com intervalos de linhas opcionais:
{
"command": "view",
"path": "/memories",
"view_range": [1, 10] // Optional: view specific lines
}Para diretórios: Retorne uma listagem que mostra arquivos e diretórios com seus tamanhos:
Here're the files and directories up to 2 levels deep in {path}, excluding hidden items and node_modules:
{size} {path}
{size} {path}/{filename1}
{size} {path}/{filename2}5.5K, 1.2M).) e node_modulesPara arquivos: Retorne o conteúdo do arquivo com um cabeçalho e números de linha:
Here's the content of {path} with line numbers:
{line_numbers}{tab}{content}Formatação de número de linha:
"File {path} exceeds maximum line limit of 999,999 lines."Exemplo de saída:
Here's the content of /memories/notes.txt with line numbers:
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."Criar um novo arquivo:
{
"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"Substituir texto em um arquivo:
{
"command": "str_replace",
"path": "/memories/preferences.txt",
"old_str": "Favorite color: blue",
"new_str": "Favorite color: green"
}"The memory file has been edited." seguido por um trecho do arquivo editado com números de linha"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 aparece várias vezes, retorne: "No replacement was performed. Multiple occurrences of old_str `\{old_str}` in lines: {line_numbers}. Please ensure it is unique"Se o caminho for um diretório, retorne um erro "arquivo não existe".
Inserir texto em uma linha específica:
{
"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}]"Se o caminho for um diretório, retorne um erro "arquivo não existe".
Excluir um arquivo ou diretório:
{
"command": "delete",
"path": "/memories/old_file.txt"
}"Successfully deleted {path}""Error: The path {path} does not exist"Exclui o diretório e todo seu conteúdo recursivamente.
Renomear ou mover um arquivo/diretório:
{
"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"Renomeia o diretório.
Incluímos automaticamente esta instrução no prompt do sistema quando a ferramenta de memória está incluída:
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.Se você observar Claude criando arquivos de memória desorganizados, você pode incluir esta instrução:
Nota: ao editar sua pasta de memória, sempre tente manter seu conteúdo atualizado, coerente e organizado. Você pode renomear ou excluir arquivos que não são mais relevantes. Não crie novos arquivos a menos que seja necessário.
Você também pode orientar o que Claude escreve na memória, por exemplo, "Apenas escreva informações relevantes para <topic> em seu sistema de memória."
Aqui estão preocupações de segurança importantes ao implementar seu armazenamento de memória:
Claude geralmente se recusa a escrever informações sensíveis em arquivos de memória. No entanto, você pode querer implementar validação mais rigorosa que remova informações potencialmente sensíveis.
Considere rastrear tamanhos de arquivo de memória e impedir que arquivos cresçam muito. Considere adicionar um número máximo de caracteres que o comando de leitura de memória pode retornar e deixar Claude paginar através do conteúdo.
Considere limpar periodicamente arquivos de memória que não foram acessados em um tempo prolongado.
Entradas de caminho maliciosas podem tentar acessar arquivos fora do diretório /memories. Sua implementação DEVE validar todos os caminhos para evitar ataques de travessia de diretório.
Considere essas proteções:
/memories../, ..\\, ou outros padrões de travessia%2e%2e%2f)pathlib.Path.resolve() e relative_to() do Python)A ferramenta de memória usa padrões de tratamento de erros semelhantes aos da ferramenta de editor de texto. Veja as seções de comando individual da ferramenta acima para mensagens de erro detalhadas e comportamentos. Erros comuns incluem arquivo não encontrado, erros de permissão, caminhos inválidos e correspondências de texto duplicadas.
A ferramenta de memória pode ser combinada com context editing, que limpa automaticamente resultados de ferramentas antigas quando o contexto da conversa cresce além de um limite configurado. Esta combinação permite fluxos de trabalho de agente de longa duração que de outra forma excederiam limites de contexto.
Quando a edição de contexto está habilitada e sua conversa se aproxima do limite de limpeza, Claude recebe automaticamente uma notificação de aviso. Isso solicita a Claude preservar qualquer informação importante dos resultados da ferramenta em arquivos de memória antes que esses resultados sejam limpos da janela de contexto.
Após os resultados da ferramenta serem limpos, Claude pode recuperar as informações armazenadas dos arquivos de memória sempre que necessário, tratando efetivamente a memória como uma extensão de seu contexto de trabalho. Isso permite que Claude:
Considere um projeto de refatoração de código com muitas operações de arquivo:
/memories/refactoring_progress.xml)Para usar ambos os recursos juntos:
Você também pode excluir chamadas de ferramenta de memória de serem limpas para garantir que Claude sempre tenha acesso a operações de memória recentes:
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
}
}
]
}
)