Was this page helpful?
A Memória de Agente é um recurso de Pré-visualização de Pesquisa. Solicite acesso para experimentá-la.
As sessões da API de Agente são efêmeras por padrão. Quando uma sessão termina, tudo que o agente aprendeu é perdido. Os armazenamentos de memória permitem que o agente carregue aprendizados entre sessões: preferências do usuário, convenções de projeto, erros anteriores e contexto de domínio.
Todas as solicitações da API de Agentes Gerenciados requerem o cabeçalho beta managed-agents-2026-04-01. Um cabeçalho beta adicional é necessário para recursos de pré-visualização de pesquisa. O SDK define esses cabeçalhos beta automaticamente.
Um armazenamento de memória é uma coleção de documentos de texto com escopo de workspace otimizada para Claude. Quando um ou mais armazenamentos de memória são anexados a uma sessão, o agente verifica automaticamente os armazenamentos antes de iniciar uma tarefa e registra aprendizados duráveis quando termina - nenhum prompt ou configuração adicional é necessário da sua parte.
Cada memória em um armazenamento pode ser acessada e editada diretamente via API ou Console, permitindo ajuste, importação e exportação de memórias.
Cada alteração em uma memória cria uma memory_version imutável para suportar auditoria e reversão de alterações de memória.
Forneça ao armazenamento um name e uma description. A descrição é passada ao agente, informando o que o armazenamento contém.
store=$(curl -fsS https://api.anthropic.com/v1/memory_stores \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<EOF
{
"name": "User Preferences",
"description": "Per-user preferences and project context."
}
EOF
)
store_id=$(jq -r '.id' <<< "$store")
echo "$store_id" # memstore_01Hx...O id do armazenamento de memória (memstore_...) é o que você passa ao anexar o armazenamento a uma sessão.
Pré-carregue um armazenamento com material de referência antes de qualquer execução do agente:
Memórias individuais dentro do armazenamento são limitadas a 100KB (~25K tokens). Estruture a memória como muitos arquivos pequenos e focados, não como poucos arquivos grandes.
Os armazenamentos de memória são anexados no array resources[] da sessão.
Opcionalmente, inclua um prompt se quiser fornecer instruções específicas da sessão ao Claude sobre como usar este armazenamento de memória. Ele é fornecido ao Claude além do name e da description do armazenamento de memória, e é limitado a 4.096 caracteres.
Você também pode configurar o access. O padrão é read_write, mas read_only também é suportado (mostrado explicitamente no exemplo abaixo).
Um máximo de 8 armazenamentos de memória são suportados por sessão. Anexe múltiplos armazenamentos quando diferentes partes da memória têm diferentes proprietários ou regras de acesso. Razões comuns:
Quando armazenamentos de memória são anexados a uma sessão, o agente ganha automaticamente acesso às ferramentas de memória. As interações do agente com os armazenamentos de memória são registradas como eventos agent.tool_use no fluxo de eventos.
| Ferramenta | Descrição |
|---|---|
memory_list | Lista documentos em um armazenamento, opcionalmente filtrados por prefixo de caminho. |
memory_search | Pesquisa de texto completo no conteúdo dos documentos. |
memory_read | Lê o conteúdo de um documento. |
memory_write | Cria ou substitui um documento em um caminho. |
memory_edit | Modifica um documento existente. |
memory_delete | Remove um documento. |
Os armazenamentos de memória podem ser gerenciados diretamente via API. Use isso para criar fluxos de trabalho de revisão, corrigir memórias incorretas ou pré-carregar armazenamentos antes de qualquer execução de sessão.
A listagem não retorna o conteúdo da memória, apenas os metadados do objeto. Use path_prefix para listas com escopo de diretório (inclua uma barra final: /notes/ corresponde a /notes/a.md mas não a /notes_backup/old.md).
Buscar uma memória individual retorna o conteúdo completo do documento.
Use memories.write para fazer upsert de um documento por caminho. Se nada existir no caminho, ele é criado; se um documento já existir lá, seu conteúdo é substituído. Para modificar um documento existente pelo ID mem_... (por exemplo, para renomear seu caminho ou aplicar com segurança uma edição de conteúdo), use memories.update em vez disso (veja Atualizar abaixo).
Passe precondition={"type": "not_exists"} para memories.write para torná-lo um guarda somente de criação. Se um documento já existir no caminho, a escrita retorna 409 memory_precondition_failed em vez de substituí-lo. Use isso ao pré-carregar um armazenamento e você quiser evitar sobrescrever conteúdo existente.
Para editar com segurança um documento existente (ler, modificar, escrever de volta sem sobrescrever uma alteração concorrente), use memories.update com uma precondição content_sha256 em vez disso. Veja Atualizar abaixo.
memories.update() modifica um documento existente pelo seu ID mem_.... Você pode alterar content, path (uma renomeação), ou ambos em uma única chamada.
Renomear para um caminho ocupado retorna 409 conflict. O chamador deve excluir ou renomear o bloqueador primeiro, ou passar precondition={"type": "not_exists"} para tornar a renomeação uma operação sem efeito se algo já existir no destino.
O exemplo abaixo renomeia um documento para um caminho de arquivo:
Para editar o conteúdo de um documento sem sobrescrever uma escrita concorrente, passe uma precondição content_sha256. A atualização só é aplicada se o hash armazenado ainda corresponder ao que você leu; em caso de incompatibilidade, retorna 409 memory_precondition_failed, momento em que você relê o documento e tenta novamente com o estado atualizado.
Opcionalmente, passe expected_content_sha256 para uma exclusão condicional.
Cada mutação em uma memória cria uma versão de memória imutável (memver_...). As versões se acumulam durante o tempo de vida da memória pai e formam a superfície de auditoria e reversão subjacente. A chamada memories.retrieve ativa sempre retorna o cabeçalho atual; os endpoints de versão fornecem o histórico completo.
Uma nova versão é criada em cada mutação:
memories.write em um caminho cria uma versão com operation: "created".memories.update que altera content, path, ou ambos cria uma versão com operation: "modified".memories.delete cria uma versão com operation: "deleted".Use os endpoints de versão para auditar qual usuário ou agente alterou o quê e quando, para inspecionar ou restaurar um snapshot anterior, e para remover conteúdo sensível do histórico com redact.
Liste metadados de versão paginados para um armazenamento, do mais recente para o mais antigo. Filtre por memory_id, operation (created, modified ou deleted), session_id, api_key_id, ou um intervalo de tempo created_at_gte/created_at_lte. A resposta de lista não inclui o corpo content; busque versões individuais com retrieve quando precisar do conteúdo completo.
Buscar uma versão individual retorna os mesmos campos da resposta de lista mais o corpo content completo.
Redigir apaga o conteúdo de uma versão histórica enquanto preserva a trilha de auditoria (quem fez o quê, quando). Use para fluxos de trabalho de conformidade, como remoção de segredos vazados, PII ou solicitações de exclusão de usuários. Redigir limpa permanentemente content, content_sha256, content_size_bytes e path; todos os outros campos, incluindo o ator e os carimbos de data/hora, são preservados.
curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- > /dev/null <<EOF
{
"path": "/formatting_standards.md",
"content": "All reports use GAAP formatting. Dates are ISO-8601..."
}
EOFsession=$(curl -fsS https://api.anthropic.com/v1/sessions \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<EOF
{
"agent": "$agent_id",
"environment_id": "$environment_id",
"resources": [
{
"type": "memory_store",
"memory_store_id": "$store_id",
"access": "read_write",
"prompt": "User preferences and project context. Check before starting any task."
}
]
}
EOF
)page=$(curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories?path_prefix=/" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01")
jq -r '.data[] | "\(.path) (\(.size_bytes) bytes, sha=\(.content_sha256[0:8]))"' <<< "$page"mem=$(curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories/$memory_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01")
jq -r '.content' <<< "$mem"mem=$(curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<EOF
{
"path": "/preferences/formatting.md",
"content": "Always use tabs, not spaces."
}
EOF
)curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memories" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- > /dev/null <<EOF
{
"path": "/preferences/formatting.md",
"content": "Always use 2-space indentation.",
"precondition": {"type": "not_exists"}
}
EOFcurl -fsS -X PATCH "https://api.anthropic.com/v1/memory_stores/$store_id/memories/$mem_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
-d '{"path": "/archive/2026_q1_formatting.md"}' > /dev/nullcurl -fsS -X PATCH "https://api.anthropic.com/v1/memory_stores/$store_id/memories/$mem_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- > /dev/null <<EOF
{
"content": "CORRECTED: Always use 2-space indentation.",
"precondition": {"type": "content_sha256", "content_sha256": "$mem_sha"}
}
EOFcurl -fsS -X DELETE "https://api.anthropic.com/v1/memory_stores/$store_id/memories/$mem_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" > /dev/nullcurl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memory_versions?memory_id=$mem_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
| jq -r '.data[] | "\(.id): \(.operation)"'curl -fsS "https://api.anthropic.com/v1/memory_stores/$store_id/memory_versions/$version_id" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01"curl -fsS -X POST "https://api.anthropic.com/v1/memory_stores/$store_id/memory_versions/$version_id/redact" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
-d '{}'