Contatos autorizados

Enviar é decisão sua; receber não é. Assim que um número está conectado, qualquer pessoa que o conheça pode escrever para ele. A lista de autorizados existe para que o sistema só registre conversas de quem você cadastrou — protegendo dados de quem nunca pediu contato.

Por que ela é obrigatória

É uma decisão de privacidade, não de proteção do número. A diferença importa porque muda o que dá para flexibilizar: os limites de envio são estimativas e podem ser ajustados com a experiência; a lista não, porque o risco que ela cobre não é o número ser bloqueado — é a ferramenta virar depósito de dado pessoal de terceiro que nunca consentiu com nada. Quem escreve para o seu número está falando com você, não com um laboratório de protocolo.

Ela também é a única barreira que não depende de ninguém estar prestando atenção. Uma mensagem chega às três da manhã, o processo grava sozinho, e a decisão sobre gravar já precisa ter sido tomada antes — no cadastro, não no momento do recebimento.

Allowlist vazia bloqueia tudo. Não é modo permissivo por omissão: lista sem entradas significa que nada é registrado. O padrão seguro é o padrão restritivo, e a tela avisa quando ela está vazia para que isso não seja confundido com defeito.

Grupos nunca passam

Mensagem de grupo é descartada mesmo que o número esteja cadastrado. Não é uma configuração — é a primeira verificação, e não há como desligá-la pela tela.

A razão é que num grupo você consegue, no máximo, falar por si. Os outros participantes entraram numa conversa entre pessoas e não têm relação com esta ferramenta: cadastrar um número não autoriza registrar o que os vizinhos dele escreveram. Um grupo com quarenta pessoas é um pedido de consentimento que ninguém teria como coletar.

O que acontece com uma mensagem recebida

Antes de qualquer gravação, ela passa por quatro perguntas. Falhar em uma é descarte:

DescarteQuandoPor quê
GRUPOO remetente é um grupo.Tem terceiros que nunca souberam da existência desta ferramenta.
FORA_DA_ALLOWLISTO número não está cadastrado.Ninguém pediu para ter o dado registrado aqui.
PROPRIAÉ o eco do seu próprio envio.Já foi registrado no momento do envio — gravar de novo duplicaria.
SEM_CONTEUDORecibo, presença, “digitando…”.É evento de protocolo, não mensagem.

O corpo não é persistido

Por padrão, uma mensagem gravada guarda metadado: direção, tipo do Protobuf (conversation, imageMessage…), tamanho em bytes, status de entrega e o identificador. O texto em si fica de fora, e a linha carrega uma marca de que foi redigida — o registro é honesto quanto ao que não guardou.

A variável PERSISTIR_CONTEUDO=true liga a gravação do corpo, e existe para um caso específico: depurar com número próprio, quando é preciso comparar o que se enviou com o que chegou. Não é um modo de operação; é uma ferramenta de investigação, com o custo assumido de que o texto vai ao banco.

A API nunca devolve o corpo — nem com a flag ligada. O endpoint de mensagens entrega tipo, tamanho, status e a marca de redação, e para por aí. A flag serve para você olhar o seu próprio banco enquanto depura, não para expor conversa a uma integração de terceiro.

Os números aparecem por inteiro

Todas as telas mostram o número completo, em E.164 (+5535999998888). O mesmo vale para a API.

Até 10/08 as listagens mascaravam os dígitos finais (+55 35 ●●●●-●●), para que uma captura de tela não expusesse várias pessoas de uma vez. A máscara foi removida a pedido: a ferramenta roda em loopback, com um operador só, os destinatários já passaram pela allowlist e o número é dedicado ao atendimento — ler ●●●● atrapalhava conferir a sessão sem proteger de ninguém. Na API a máscara era ainda mais simbólica: o campo jid já trazia o número inteiro na mesma resposta.

Se um dia isto sair do loopback, a máscara volta. Com mais de um operador, ou com a interface acessível na rede, a exposição em listagem deixa de ser inofensiva — e o formatador continua no código, testado, exatamente para esse caso.

O banco guarda as chaves da sessão

Este é o ponto que costuma passar batido, e é o mais grave da página. Além de mensagens, o banco guarda o material Signal da sessão: credenciais de identidade, pre-keys e os canais criptográficos abertos. É o que permite reconectar sem novo QR — e é exatamente por isso que ele é perigoso.

Um dump do banco contém as chaves Signal da sessão. Quem o tiver consegue ler e enviar como o número pareado, de outra máquina, sem precisar do celular e sem aparecer nenhum QR para ninguém autorizar. Trate o dump como trata a credencial de acesso ao próprio WhatsApp: não anexe em chamado, não jogue em bucket compartilhado, não versione. Se um dump vazou, a resposta correta é revogar o aparelho no celular — pelo app, em Aparelhos conectados — e parear de novo.

Vale o mesmo raciocínio para a máquina onde a ferramenta roda: a interface que controla a sessão não deveria estar acessível pela rede sem autenticação na frente. Não é excesso de zelo — quem alcança a tela alcança o número.