Guias

Porque é que o Claude Code se esquece entre sessões e como o nosso se lembra

O Claude Code esquece o contexto entre sessões porque cada sessão começa com uma janela de contexto vazia. A memória entre sessões é uma rotina que leva um agente de programação com IA a consultar decisões anteriores antes de trabalhar e a guardar as novas depois, para que uma janela de contexto nova comece informada.

David Marsa

David Marsa

Founder & CEO

Iniciante10 min de leituraPublicado em 26/10/2026

Última verificação: 26/10/2026

Ferramentas e modelos abordados:Claude CodeOpenCode
Cada turno começa de mãos vazias: lê o livro de registos à entrada e, numa saída verificada, um turno que mudou coisas sem escrever nada é mandado de volta para escrever.

O que vai conseguir fazer

  • Distinguir a perda por compactação da perda entre sessões e escolher a solução para cada uma.
  • Escrever uma regra de consulta e uma regra de registo no ficheiro de instruções que o agente carrega.
  • Acrescentar um hook Stop que bloqueia o fim de uma sessão que editou ficheiros e não guardou nada.
  • Testar o hook com uma transcrição sintética antes de confiar nele.
  • Partilhar um único repositório de memória entre o Claude Code, o OpenCode e o Kimi Code.

Pontos-chave

  • O Claude Code esquece o contexto entre sessões porque cada sessão começa com uma janela de contexto vazia; a memória entre sessões leva o agente a consultar decisões anteriores antes de trabalhar e a guardar as novas depois.
  • Esquecer dentro de uma sessão (compactação) e esquecer entre sessões são problemas diferentes, e uma rotina de memória só resolve o segundo.
  • Os ficheiros de memória nativos são contexto, não imposição: usamos um hook Stop que manda o agente de volta quando editou ficheiros e não guardou nada.
  • O hook conta as chamadas pelo nome, por isso prova que houve um registo, nunca que era bom.
  • O OpenCode e o Kimi Code leem as mesmas regras e chegam ao mesmo repositório de memória; não usamos hook de memória em nenhum dos dois.

O Claude Code esquece o contexto entre sessões porque cada sessão começa com uma janela de contexto vazia. Dentro de uma sessão, uma janela cheia é compactada: os turnos mais antigos passam a resumo. Entre sessões, nada passa para a seguinte além do que ficou escrito.

A memória entre sessões é uma rotina que leva um agente de programação com IA a consultar decisões anteriores antes de trabalhar e a guardar as novas depois, para que uma janela de contexto nova comece informada. Usamo-la como um ciclo no Claude Code, imposto por um hook Stop (um script que o Claude Code executa sempre que termina uma resposta). O OpenCode e o Kimi Code partilham as mesmas regras e o mesmo repositório de memória.

Dentro de uma sessão, os turnos mais antigos são compactados; entre sessões, a nova janela começa vazia e só as notas guardadas passam para o outro lado.

Porque é que o Claude Code se esquece e o que faz o nosso ciclo de memória

O Claude Code não se esquece por acidente. Cada sessão começa vazia de propósito, por isso a solução é uma rotina, não um ficheiro maior.

Documentação da Anthropic(abre num novo separador), 2026: «Cada sessão do Claude Code começa com uma janela de contexto nova.» Duas funcionalidades nativas dão ao Claude Code memória entre sessões:

Funcionalidade nativaO que transportaFonte (2026)
CLAUDE.mdInstruções escritas por si, carregadas no início de cada conversa. O ficheiro da raiz do projeto é relido do disco depois de /compactAnthropic, memória(abre num novo separador)
Memória automáticaNotas que o próprio Claude escreve, guardadas por repositório Git. As primeiras 200 linhas ou 25 KB de MEMORY.md carregam no início da sessãoAnthropic, memória(abre num novo separador)
Ambas«O Claude trata-as como contexto, não como configuração imposta.»Anthropic, memória(abre num novo separador)

O contexto é algo que o agente pondera, não um passo que tenha de dar. Por isso acrescentámos um ciclo por cima, com um repositório de memória partilhado a que o agente chega por MCP:

ParteO que acontece
GatilhoUma sessão começa a trabalhar em algo que ainda não conhece
Consultar, trabalhar, guardarConsulta memórias e rotas, faz a tarefa, guarda o que aprendeu
VerificaçãoUm hook Stop, em quase todas as paragens, manda o agente de volta se editou ficheiros e não guardou nada
ResultadosMemórias, rotas e notas de tarefa que a sessão seguinte encontra

O repositório de memória é o cérebro da nossa empresa; a forma como as notas são organizadas é a camada 1 do nosso sistema que se melhora a si próprio.

A versão para copiar (hook, entrada nas definições e teste) está em Construa o seu próprio ciclo.

Porque o criámos: uma regra escrita acaba ignorada

Escrevemos a regra e o agente ignorou-a. Uma regra que depende de o agente se lembrar de a cumprir é uma sugestão.

A regra estava no ficheiro de instruções: consultar antes de explorar, guardar depois. As sessões saltavam a consulta e voltavam a ler código que uma sessão anterior já tinha mapeado. As sessões editavam ficheiros e terminavam sem nada escrito, e a seguinte voltava a descobrir a mesma resposta.

A memória existia e as ferramentas funcionavam. Faltava um momento em que saltar o passo tivesse um custo. Uma pessoa aprova o trabalho que importa (o nosso modelo de governação), mas ninguém acompanha o fim de cada sessão.

Veja como o ConvOps dá a cada agente uma memória única que ele consulta antes de trabalhar(abre num novo separador), e guarda as notas que cada sessão deixa.

Como funciona o ciclo de memória

Consultar custa uma chamada. Guardar custa uma chamada. A única parte cara é garantir que ambas acontecem sempre, e foi essa a tarefa que demos ao hook.

Em cada paragem verificada, edições sem nada guardado mandam o agente de volta para guardar; caso contrário, a sessão termina.

Como decide um hook Stop. Lê a transcrição (o ficheiro onde o Claude Code regista cada mensagem e cada chamada a ferramentas) e termina com um código de saída, um número que diz ao Claude Code o que fazer a seguir. O código 0 deixa a sessão terminar. O código 2 «impede o Claude de parar e continua a conversa» (Anthropic, hooks(abre num novo separador), 2026), e o agente lê a mensagem do hook. A nossa proteção contra eliminações usa o mesmo código de saída nas chamadas a ferramentas.

PassoQuem o executaControlo
ConsultarO agente, com context_query, antes de explorar algo que ainda não conhece. Uma chamada devolve memórias (o que sabemos) e rotas (onde as coisas estão)Respostas já conhecidas dispensam-na
TrabalharO agenteNenhum
GuardarO agente, com memory_store, depois de cada ação. Para substituir uma nota: guardar a nova e depois esquecer a antiga. Numa ação sobre uma tarefa, uma nota context= guarda 2 a 3 linhas na mesma chamadaSaltar este passo exige um motivo
RotaO agente, depois de explorar ficheirosNenhum
VerificaçãoO hook StopO código 2 manda o agente de volta

O que verifica o hook Stop de memória

Cada limiar aqui é o que o nosso hook usa.

RegraValor exatoPorque existe
Quando correEm cada evento Stop, com um tempo limite de 15 segundos (600 por omissão, Anthropic, hooks(abre num novo separador), 2026)É o último momento em que uma sessão pode ser travada
O que lêO name de cada chamada a ferramentas na transcriçãoO que o agente fez, não o que disse
Proteção contra ciclosstop_hook_active é verdadeiro: código 0Um hook que bloqueia a sua própria nova tentativa nunca deixa uma sessão terminar
Sessões pequenas passamMenos de 3 chamadas a ferramentas: código 0Uma resposta de duas chamadas não tem nada que valha a pena guardar
IntervaloPelo menos 2 entradas do assistente na transcrição desde a última verificação. O Claude Code escreve uma entrada por bloco de conteúdo, por isso a verificação corre em quase todas as paragensCada verificação revê só o que é novo
Editou e não guardou nadaUma chamada Edit, Write, MultiEdit ou NotebookEdit e zero chamadas memory_store, sem esperar pela regra de só leitura abaixoUma alteração a um ficheiro merece um porquê escrito
Sem consulta na primeira verificaçãoNenhuma chamada context_query ou route_queryA regra é consultar primeiro; as verificações seguintes não a repetem
Ordem da consultaZero consultas e zero registos, registos sem consulta, ou um registo desde a última verificação feito antes da primeira consultaSem uma consulta primeiro, o agente não vê a nota a substituir e escreve um duplicado
Regra de só leituraConsultou, não guardou nada, não editou, pelo menos 4 entradas na transcriçãoExplorar ficheiros é trabalho que vale a pena guardar
O que contaConsulta: nomes que contêm memory_recall ou context_query. Registo: nomes que contêm memory_storeComparar pelo nome mantém o hook independente do repositório de memória

Cada regra violada acrescenta uma mensagem, o bloqueio termina com This is mandatory. e o hook sai com o código 2.

O que o hook não vê

Confiamos mais no hook porque sabemos exatamente onde é cego.

  • Conta as chamadas a ferramentas pelo nome. Nunca lê o que uma consulta devolveu nem se um registo tinha qualidade.
  • Só memory_store conta como registo. Uma sessão que escreve apenas notas context= e edita ficheiros continua a ser mandada de volta.
  • As edições pela shell não são vistas. Um sed ou um heredoc não é uma edição para o hook; só as quatro ferramentas de edição nativas o são.
  • A transcrição pode chegar atrasada. A documentação de hooks(abre num novo separador) da Anthropic diz que é escrita de forma assíncrona, por isso um registo de última hora é contado na verificação seguinte.
  • Só corre no Claude Code; veja as secções do OpenCode e do Kimi Code.

Os hooks guardam as regras que nunca podem depender da memória (a camada de hooks). Este obriga às chamadas, não à memória.

Como o Claude Code se lembra entre sessões

O momento útil não é o registo. É a manhã seguinte, quando uma sessão que nunca viu o trabalho de segunda-feira abre com a lição de segunda-feira.

A Copperfern é uma loja online fictícia de artigos para a casa; os nomes, ficheiros e notas são inventados, e os limiares e as mensagens são reais.

Segunda-feira. A Maya, que gere as operações, abre uma tarefa: «As encomendas espanholas ficam com um cêntimo de diferença na finalização da compra.» O agente de programação executa context_query("spanish vat checkout rounding") e não encontra nada sobre arredondamentos. Lê shop/checkout/tax.py, vê que o IVA é arredondado uma única vez sobre o total da encomenda, edita o ficheiro e o respetivo teste para arredondar por linha e tenta parar.

O hook corre: 5 chamadas a ferramentas, entradas novas suficientes desde a última verificação. Houve uma consulta, por isso só dispara a verificação de edições:

KNOWLEDGE CHECK: Modified 2 file(s) but stored nothing. memory_store() the change/decision (supersede if updating). If you explored files, create_route()/update_route() in ConvOps. This is mandatory.

Código 2. O agente guarda uma memória da categoria gotchas, importância 7, etiquetas shop, checkout, vat. A nota diz: «O IVA espanhol arredonda por linha, não pelo total da encomenda; arredondar o total dá um cêntimo de diferença em encomendas com vários artigos.» Regista uma rota: «O arredondamento do IVA está em shop/checkout/tax.py». Volta a tentar parar. stop_hook_active é verdadeiro e a sessão termina.

A sessão de segunda-feira corrige o arredondamento, é mandada de volta uma vez e guarda o porquê antes de terminar.

Terça-feira. Uma nova tarefa: «Acrescentar IVA à linha do embrulho para oferta.» Nova sessão, janela vazia: nada de segunda-feira está lá. O agente executa context_query("vat gift wrap checkout"), e a nota de segunda-feira e a rota aparecem. Abre diretamente shop/checkout/tax.py e arredonda o IVA do embrulho na sua própria linha.

Afinal, os portes de envio também são uma linha à parte. O agente guarda a nota refinada, «O IVA espanhol arredonda por linha; o embrulho para oferta e os portes contam cada um como linha própria.», e depois esquece o registo de segunda-feira com memory_forget, uma eliminação lógica reversível. Na paragem, a consulta veio antes do registo e a edição tem um registo: código 0. Só a nota refinada responde à consulta seguinte.

A sessão de terça-feira nunca viu a de segunda-feira, mas a sua primeira consulta devolve a lição de segunda-feira; guarda a nota refinada e esquece a antiga.

O que o ciclo deixa para trás

Uma memória vale exatamente o que a sessão seguinte consegue usar sem perguntar: um facto, o motivo, um tipo e uma importância honesta.

Um registo de memória, tal como o agente o guarda:

content:    Spanish VAT rounds per line, not per order total; rounding the
            total is off by a cent on multi-item orders.
category:   gotchas
importance: 7
tags:       shop, checkout, vat
task_id:    cf-131

O conteúdo guarda o facto e o motivo. A importância mede quanto perde a sessão seguinte se não vir a nota: a maioria fica entre 4 e 6, e esta é um 7 porque um total errado chega aos clientes. Duas a cinco etiquetas tornam-na fácil de encontrar.

Uma rota diz onde algo está:

title:       VAT rounding
description: VAT rounding lives in shop/checkout/tax.py
paths:       shop/checkout/tax.py, tests/test_tax.py

Uma nota context=, escrita na mesma chamada que uma atualização de tarefa, guardada como uma memória ligada à tarefa (importância 4 por omissão; abaixo de 40 caracteres não é guardada):

Rounded VAT per line, not per order; Spanish totals were a cent off on
multi-item orders.

Nenhum campo substitui um registo. O agente guarda a nota nova e esquece a antiga. Uma pessoa também pode substituir uma nota na página do cérebro, que liga o registo novo ao antigo e retira o antigo das consultas.

O que corre mal num hook de memória

A nossa imposição falhou duas vezes, em sentidos opostos: uma vez deixou passar edições em silêncio, outra vez bloqueou para sempre. Verifique o seu hook para os dois casos.

Deixou passar edições. A única verificação de «não guardou nada» esperava que a sessão ultrapassasse um comprimento mínimo. Uma sessão curta da Copperfern edita o modelo da etiqueta de envio e termina sem problemas, sem nada escrito; a sessão seguinte repete a mesma investigação. A regra que daí resultou: as edições sem registo são assinaladas na verificação seguinte, sem essa espera. O mínimo de 3 chamadas e o intervalo continuam a aplicar-se.

Bloqueou para sempre. A verificação de registo antes da consulta comparava o primeiro registo com a primeira consulta em toda a sessão. Uma sessão guarda uma nota antes da primeira consulta, depois consulta corretamente, e continua a ser mandada de volta em cada paragem até ser abandonada. A regra que daí resultou: cada verificação olha só para o que aconteceu desde a anterior, por isso um deslize inicial é reportado na verificação que o cobre, não em todas as paragens seguintes.

O comentário no nosso código explica porquê: «um alerta que nenhum comportamento posterior consegue satisfazer é um incómodo, não uma proteção.» Essa regra tem agora um teste que corre o hook real com uma transcrição sintética, um registo de sessão falso.

Antes da correção, um registo feito cedo bloqueava todas as paragens seguintes; agora cada verificação olha só para o que aconteceu desde a anterior, por isso o deslize é reportado na sua própria janela.

Estreitámos a regra de consulta. Antes aplicava-se a todas as mensagens. Agora aplica-se antes de explorar ou trabalhar em algo que ainda não se conhece; guardar depois de cada ação continua a ser obrigatório. Uma sessão a quem perguntam «que horas são em Madrid» não faz consulta; uma sessão prestes a ler o código da finalização da compra faz sempre.

Construa o seu próprio ciclo de memória no Claude Code

Comece por uma regra que o hook consiga contar: se uma sessão alterou ficheiros, escreve o quê e porquê antes de terminar.

Primeiro, ligue o repositório de memória. Usamos o ConvOps; um comando acrescenta-o ao Claude Code:

claude mcp add --transport http convops https://mcp.convops.app/

Depois acrescente estas duas linhas ao seu CLAUDE.md. Mantenha esse ficheiro curto (o que cortar num CLAUDE.md demasiado longo): o hook trata da imposição, o ficheiro trata do hábito.

Before exploring or working on anything you don't already know, query the memory store first. Known answers and chat skip the lookup.
After every action, store what you learned and why, with a type, an honest importance and two to five tags. To replace a note, store the new one, then forget the old one.

Esta versão reduzida do nosso hook (Claude Code 2.1.301) mantém a proteção contra ciclos, o mínimo de 3 chamadas, o intervalo, a verificação de edições e a consulta na primeira verificação. Guarde-a como ~/.claude/hooks/memory-gate.py:

"""Stop hook: send the agent back when it edited files and stored nothing."""
import json, os, sys, tempfile

MIN_TOOL_CALLS = 3
INTERVAL = 2
EDIT_TOOLS = ("Edit", "Write", "MultiEdit", "NotebookEdit")

hook = json.load(sys.stdin)
if hook.get("stop_hook_active"):
    sys.exit(0)  # the retry after a block is not checked
names, entries = [], 0
with open(hook["transcript_path"]) as f:
    for line in f:
        entry = json.loads(line)
        if entry.get("type") != "assistant":
            continue
        entries += 1
        for block in entry.get("message", {}).get("content", []):
            if isinstance(block, dict) and block.get("type") == "tool_use":
                names.append(block["name"])

if len(names) < MIN_TOOL_CALLS:
    sys.exit(0)
counter = os.path.join(tempfile.gettempdir(), f"memory_gate_{hook['session_id']}")
last = int(open(counter).read()) if os.path.exists(counter) else 0
if entries - last < INTERVAL:
    sys.exit(0)
open(counter, "w").write(str(entries))
edits = sum(n in EDIT_TOOLS for n in names)
stores = sum("memory_store" in n for n in names)
lookups = sum("context_query" in n or "route_query" in n for n in names)
problems = []
if edits and not stores:
    problems.append(f"Modified {edits} file(s) but stored nothing. Store the change and why.")
if last == 0 and not lookups:
    problems.append("No lookup at the first check. Query the memory store first.")
if problems:
    print("KNOWLEDGE CHECK: " + " | ".join(problems) + " This is mandatory.", file=sys.stderr)
    sys.exit(2)

Registe-o em Stop no .claude/settings.json:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          { "type": "command", "command": "python3 ~/.claude/hooks/memory-gate.py", "timeout": 15 }
        ]
      }
    ]
  }
}

Teste-o com uma transcrição sintética antes de confiar nele. Esta tem uma consulta e duas edições, por isso o resultado esperado é o código 2:

printf '%s\n' \
  '{"type":"assistant","message":{"content":[{"type":"tool_use","name":"context_query"}]}}' \
  '{"type":"assistant","message":{"content":[{"type":"tool_use","name":"Edit"}]}}' \
  '{"type":"assistant","message":{"content":[{"type":"tool_use","name":"Edit"}]}}' \
  > copperfern-test.jsonl
echo '{"session_id":"test-001","transcript_path":"copperfern-test.jsonl"}' \
  | python3 ~/.claude/hooks/memory-gate.py; echo "exit $?"

Use um session_id novo em cada execução, porque o ficheiro contador guarda a última verificação. Depois acrescente uma linha memory_store e o resultado esperado passa a ser o código 0.

Memória do OpenCode entre sessões

As sessões do OpenCode 1.18.31 também começam vazias. Damos-lhes o mesmo texto e o mesmo repositório de memória.

Os nossos ficheiros AGENTS.md são symlinks para o CLAUDE.md, por isso o OpenCode lê as mesmas regras de consulta e de registo (um ficheiro para os dois). O nosso opencode.json aponta o bloco mcp para o mesmo repositório de memória do ConvOps, por isso uma nota guardada a partir do Claude Code aparece numa consulta do OpenCode. Não usamos nenhum hook de memória no OpenCode. Os plugins do OpenCode(abre num novo separador) permitem criar um, e a nossa proteção contra eliminações mostra o formato.

Memória do Kimi Code entre sessões

O Kimi Code 0.31.1 recebe o mesmo texto e o mesmo repositório de memória. Lê o AGENTS.md que é um symlink para o CLAUDE.md, e o nosso .kimi-code/mcp.json lista o mesmo servidor ConvOps, por isso as suas consultas devolvem o que o Claude Code e o OpenCode guardaram. Não usamos nenhum hook de memória no Kimi Code. Aceita entradas [[hooks]] na configuração do utilizador (hooks do Kimi Code(abre num novo separador)), e o guia da proteção contra eliminações mostra uma.

Crie uma conta gratuita no ConvOps e ligue o Claude Code, o OpenCode ou o Kimi Code a uma memória única(abre num novo separador) e, depois, acrescente a regra de consulta, a regra de registo e o hook Stop.

Passos

  1. Ligue um repositório de memória por MCP

    Escolha um repositório de memória a que o agente chegue como servidor MCP, para que todas as sessões e todas as ferramentas leiam e escrevam as mesmas notas. Usamos o ConvOps: crie uma conta gratuita em my.convops.app/register e acrescente-o ao Claude Code como servidor MCP.

  2. Escreva a regra de consulta

    Acrescente uma linha ao CLAUDE.md: antes de explorar ou trabalhar em algo que ainda não se conhece, consultar primeiro o repositório de memória. Respostas já conhecidas e conversa dispensam a consulta.

  3. Escreva a regra de registo

    Acrescente uma linha ao CLAUDE.md: depois de cada ação, guardar o que se aprendeu e porquê, com um tipo, uma importância honesta e duas a cinco etiquetas. Para substituir uma nota, guardar a nova e depois esquecer a antiga.

  4. Acrescente o hook Stop

    Guarde o script do hook como ~/.claude/hooks/memory-gate.py. Ignora a nova tentativa depois de um bloqueio e as sessões com menos de 3 chamadas a ferramentas, verifica no máximo uma vez a cada 2 entradas do assistente na transcrição e sai com o código 2 quando a sessão editou ficheiros e não guardou nada.

  5. Registe-o em Stop

    Acrescente o hook à lista Stop do .claude/settings.json com um tempo limite de 15 segundos, para que corra sempre que o Claude Code termina uma resposta.

  6. Teste-o com uma transcrição sintética

    Escreva uma transcrição JSONL curta com uma consulta e duas edições, envie um payload para o script e espere o código 2. Acrescente uma linha memory_store, use um session_id novo e espere o código 0.

Perguntas frequentes

O que é a memória entre sessões de um agente de programação com IA?

A memória entre sessões é uma rotina que leva um agente de programação com IA a consultar decisões anteriores antes de trabalhar e a guardar as novas depois, para que uma janela de contexto nova comece informada. O ConvOps guarda o repositório de memória partilhado: o agente consulta-o por MCP antes de explorar e escreve nele memórias, rotas e notas de tarefa depois de cada ação. Na Neomanex, um hook Stop no Claude Code manda o agente de volta quando editou ficheiros e não guardou nada.

Quem precisa de memória entre sessões?

Os programadores e os responsáveis de desenvolvimento precisam dela quando as suas sessões do Claude Code, do OpenCode ou do Kimi Code repetem trabalho ou reabrem decisões que uma sessão anterior já resolveu. O ConvOps mantém essas decisões num único repositório de memória que todas as sessões e todas as ferramentas podem consultar. Assim, a sessão seguinte começa com o que a anterior aprendeu, em vez de reler o mesmo código para o voltar a descobrir.

O Claude Code guarda o contexto entre sessões?

O Claude Code só mantém o que fica escrito, por isso a Neomanex guarda as lições de cada sessão no ConvOps. Cada sessão do Claude Code começa com uma janela de contexto vazia. O CLAUDE.md e a memória automática carregam no início, e a documentação da Anthropic diz que o Claude os trata como contexto, não como configuração imposta. Tudo o resto que o agente aprende perde-se, a não ser que fique guardado onde a sessão seguinte o vai procurar.

Como faço para o Claude Code se lembrar entre sessões?

Crie uma conta gratuita no ConvOps em my.convops.app/register e ligue-a ao Claude Code como servidor MCP. Acrescente duas linhas ao CLAUDE.md: consultar o repositório de memória antes de explorar algo que ainda não se conhece e guardar o que se aprendeu depois de cada ação. Depois acrescente um hook Stop que bloqueia o fim de uma sessão que editou ficheiros e não guardou nada, e teste-o com uma transcrição sintética.

O OpenCode lembra-se entre sessões?

As sessões do OpenCode começam sem estado, por isso a Neomanex liga o OpenCode ao ConvOps por MCP, o mesmo repositório de memória que o Claude Code usa. Os nossos ficheiros AGENTS.md são symlinks para o CLAUDE.md, por isso o OpenCode lê as mesmas regras de consulta e de registo. A limitação: não usamos hook de memória no OpenCode, por isso o registo depende de o agente seguir o texto. O OpenCode aceita plugins que permitiriam esse hook, mas não usamos nenhum hook de memória no OpenCode.

Um hook consegue obrigar o Claude Code a guardar o que aprendeu?

Um hook obriga à chamada, não à qualidade. Na nossa configuração, um hook Stop do Claude Code conta as chamadas memory_store pelo nome e bloqueia a paragem com o código 2 quando uma sessão editou ficheiros e não guardou nada, e o ConvOps recebe o registo. O hook nunca lê o que foi guardado, por isso uma nota fraca passa. Só memory_store conta, e as edições feitas pela shell não são vistas.

O Claude Code partilha contexto entre conversas?

Sessões diferentes do Claude Code não partilham uma janela de contexto, mas podem partilhar um repositório de memória, e o nosso é o ConvOps. O que uma sessão guarda no ConvOps, outra encontra na primeira consulta, mesmo no OpenCode ou no Kimi Code. O CLAUDE.md e a memória automática também carregam em todas as sessões do mesmo repositório Git, como contexto que o agente pondera e não como regras que tenha de cumprir.