o que sobe e o que não sobe

Privacidade

Escrito para você conferir, não para você acreditar. Todo comando desta página roda na sua máquina e mostra exatamente o que está guardado.

O texto do seu prompt nunca sai daqui

O que o Batuta grava do seu turno é o hash do prompt, o número de caracteres e quantas palavras sobraram depois da limpeza. O texto, nunca.

E o hash é feito com um sal local — um número aleatório gerado uma vez na sua máquina, guardado em ~/.batuta/sal com permissão 0600, que nunca é enviado. Sem o sal, ninguém consegue testar um palpite de prompt contra o hash. Nem nós.

O que fica na sua máquina

arquivoo que é
~/.batuta/salnúmero aleatório criado uma vez, que nunca sai daí
~/.batuta/index.txtnome, descrição e palavras das skills que você já tem
~/.batuta/eventos.jsonluma linha por turno: hash do prompt, comprimento, skills sugeridas e se você usou alguma
~/.batuta/config.txtsuas preferências

Não fica gravado em lugar nenhum: o texto do seu prompt, a resposta do modelo, nome de arquivo do seu projeto, seu usuário, sua máquina.

O que sobe — se você deixar

Enviar dado é opt-in explícito. Vem desligado. Enquanto estiver desligado, nada sai da sua máquina — e o batuta report continua funcionando inteiro, offline. O valor local não é refém do upload.

Se você ligar, o que sobe é o resumo diário agregado por skill — nunca evento cru. 200 turnos por dia viram cerca de 20 linhas, mais ou menos assim:

{
  "schema": "batuta.daily_summary.v1",
  "day": "2026-08-24",
  "installation": "9f2c1ab4de77e015",
  "skills": [
    { "skill": "systematic-debugging", "routes": 12, "activations": 9,
      "turns_ok": 8, "cost_usd": 0.184, "ghost": false }
  ]
}

Sem prompt. Sem hash de prompt. Sem identificador de turno. Sem caminho de arquivo. O installation é derivado do próprio sal, então não carrega seu nome, sua máquina nem sua pasta — serve só para dizer “estas linhas vieram do mesmo lugar”.

Confira antes de decidir

batuta privacy          # o que está guardado
batuta summary          # exatamente o que subiria, imprimido na sua tela
batuta config upload yes # só depois de ver o de cima

Apagar tudo

rm -rf ~/.batuta

É isso. Não tem conta, não tem login, não tem servidor guardando um espelho do seu histórico.

O holdout, declarado

Em 5% dos turnos o roteador se cala de propósito. Isso não é bug: é o grupo de controle que permite medir causa em vez de correlação. É declarado na primeira execução, é configurável e é desligável com batuta config holdout 0. Experimento escondido destrói o projeto — então ele não é escondido.