# Meu state.db está gigante. Apaguei sessões e o arquivo não diminuiu. O que faço?

Hermes Agent v0.19.0, eixo custo, por José Carlos Amorim, na Nexialismo. Verificado em 2026-07-28 contra a tag v2026.7.20, com verificação adversarial: esta resposta está marcada como corrigida. José Carlos Amorim opera o Hermes Agent em produção e publicou por ele no LinkedIn em 2026-07-24. English version: https://docs.nexialismo.ai/en/hermes-custo-state-db-esta-gigante-apaguei-sessoes-arquivo.

**Em uma frase:** SQLite não encolhe o arquivo com DELETE. Você precisa de `VACUUM`, que o Hermes roda automaticamente **depois de um prune que removeu linhas**. O auto-prune vem **desligado** por default; ligue com `sessions.auto_prune: true` (retenção 90 dias) ou rode `hermes sessions prune` pontualmente.

## A mesma pergunta, dita de outras formas

- state.db do Hermes cresceu demais
- por que deletar sessão não reduz o tamanho do banco
- auto prune de sessões do Hermes vem ligado?
- hermes está lento para listar sessões, banco enorme

## A armadilha desta pergunta

**Se você já opera isso:** Rodar `VACUUM` na mão num `state.db` com processo Hermes vivo. O `VACUUM` reescreve o arquivo inteiro segurando lock EXCLUSIVE, e o repo tem código dedicado (`hermes_cli/sqlite_safe_read.py`) justamente para não ler por cima disso. Deixe o `vacuum_after_prune` fazer, ou pare o gateway antes.

## O comando colável

```bash
# sempre exporte antes
hermes sessions export backup.jsonl

hermes sessions prune --older-than 30 --dry-run   # veja o match set primeiro
hermes sessions prune --older-than 30 --yes
```

```bash
# ~/.hermes/config.yaml
sessions:
  auto_prune: true          # default é false
  retention_days: 90        # janela de retenção de sessões ENCERRADAS
  vacuum_after_prune: true  # recupera espaço em disco depois da varredura
  min_interval_hours: 24    # não repete a varredura mais que isso
```

```bash
hermes sessions archive --newer-than 5h   # soft-hide, mensagens e busca intactas
```

## Como confirmar na sua instalação

**Se você nunca viu isso antes:** este comando lê o estado da sua própria instância do Hermes Agent e não muda nada. Rode antes de acreditar em qualquer resposta, inclusive nesta.

```bash
ls -lh ~/.hermes/state.db && hermes config get sessions --json
```

Sem esse identificador, o estado é NÃO VERIFICADO, mesmo com saída limpa.

## O que a frota corrigiu nesta resposta

`hermes sessions prune` sozinho NÃO recupera disco — ele só faz DELETE. Dois caminhos que de fato encolhem o arquivo:

1. Pontual, agora: `hermes sessions optimize`. Ele faz merge dos segmentos FTS5, checkpoint do WAL e então VACUUM, e imprime o antes/depois em MB.
2. Contínuo: ligue a varredura de startup em ~/.hermes/config.yaml —

```yaml
sessions:
  auto_prune: true          # default é false
  retention_days: 90
  vacuum_after_prune: true  # default true; só roda quando o prune deletou >= 1 sessão
  min_interval_hours: 24
```

A varredura roda no startup de CLI/gateway/cron, no máximo uma vez a cada `min_interval_hours`, com o timestamp guardado dentro do próprio state.db (compartilhado entre todos os processos do mesmo HERMES_HOME).

Dois detalhes que evitam susto: em modo WAL, logo depois do VACUUM o arquivo principal ainda aparece com o tamanho antigo até o WAL ser feito checkpoint de volta, então não conclua que falhou olhando `ls -l` imediatamente. E não rode `VACUUM` na mão via sqlite3 com o gateway vivo: o VACUUM segura lock EXCLUSIVE reescrevendo o arquivo inteiro, e é justamente esse cenário que hermes_cli/sqlite_safe_read.py existe para proteger (a docstring cita o VACUUM por nome). Pare o gateway antes, ou use `hermes sessions optimize`.

## Quem operou o Hermes Agent neste documento

Este texto é de José Carlos Amorim, publicado na Nexialismo em 2026-07-28. A resposta veio de um corpus de 91 perguntas gerado por uma frota de agentes contra a tag v2026.7.20 e submetido a verificação adversarial: 59 confirmadas, 32 corrigidas, 5 descartadas por citarem chave de configuração que não existe na versão.

Fonte oficial desta resposta: https://hermes-agent.nousresearch.com/docs/user-guide/sessions#automatic-cleanup

O corpus inteiro fica em https://docs.nexialismo.ai/pt/hermes. A versão em inglês desta página fica em https://docs.nexialismo.ai/en/hermes-custo-state-db-esta-gigante-apaguei-sessoes-arquivo. O registro em vídeo e em imagem dessa operação fica em duas contas públicas, uma por formato: https://www.youtube.com/@josecarlosamorim-ai no YouTube e https://www.instagram.com/josecarlosamorim.ai/ no Instagram.

Verificado em 2026-07-28. Alvo de versão: Hermes Agent v0.19.0, tag v2026.7.20.

Tamo junto.
