Todos os artigos
FT-PII-REDACTION· 1.0.0Segurança & 2FA

Redaction de PII antes de enviar payload pra IA

Pipeline de redaction de PII (CPF, CNPJ, IBAN, email, cartão, DNI...) aplicado antes de enviar payload pra LLM.

Atualizado em 8/6/2026
Toda chamada do Lefia para um provedor LLM (atualmente Anthropic Claude) passa por um pipeline de redaction antes do payload sair do servidor.

Por que existe



Mesmo sendo a Anthropic um subprocessador declarado e com Zero Data Retention, minimizar o que sai daqui é defesa em profundidade: reduz risco em DPIA, contém vazamento se o LLM for comprometido, e dá auditoria por chamada.

Como funciona



A biblioteca src/lib/ai/redaction.ts aplica regex + validações em todo string antes do prompt:

  • CPF (BR) — formato 000.000.000-00 ou cru
  • CNPJ (BR) — formato 00.000.000/0000-00 ou cru
  • CEP (BR) — 00000-000
  • Telefone BR — (11) 99999-1234, +55 ...
  • DNI/NIE (ES) — 12345678Z, X1234567L
  • Telefone ES — +34 612 345 678
  • IBAN — ES91…, DE89…, etc.
  • Email — qualquer endereço RFC simplificado
  • Cartão de crédito — 13 a 19 dígitos com validação Luhn (evita falso positivo em DOCNUMs)


PII detectada é substituída por tags como [REDACTED:CPF], [REDACTED:EMAIL] — o modelo entende o tipo do dado sem ver o valor.

Onde está aplicado



EndpointO que é redacted
POST /api/ai/diagnosePayload completo de mensagem (NFe, IDoc, EDI, JSON)
POST /api/edi-hub/interpret-loglog.message, log.details (jsonb) e error_detail
POST /api/edi-hub/suggest-mappingLista de campos source + dest e descrições
POST /api/edi-hub/suggest-formatQuery e contexto de mensagem
POST /api/edi-hub/create-message-typeLista de campos source + dest e descrições
paraphraseDescriptions (lib)Descrições de campos antes de parafrasear


Auditoria



Cada chamada loga os contadores em ai_usage_events.metadata.pii_redaction. Exemplo:

{
"pii_redaction": {
"cpf": 2, "cnpj": 1, "email": 3, "phone_br": 1,
"cep": 0, "phone_es": 0, "iban": 0,
"credit_card": 0, "dni_es": 0, "nie_es": 0
}
}


Pra ver no /admin: filtrar ai_usage_events por feature e somar metadata.

Limitações conhecidas



  • Não cobre dados em outros idiomas/países (ex: SSN US, MyNumber JP). Adicionar conforme demanda.
  • Não cobre nomes/endereços livres — esses são contextuais demais pra regex; o pipeline mantém esses dados intactos.
  • Toggle por tenant/integração ainda não existe (item #54 do roadmap). Hoje o pipeline está sempre ligado.


Veja também



  • pipeline-mensagens-fluxos — fluxos do retry e DLQ (onde a IA é chamada também passa pela redaction)
  • ai-toggle-hierarchy — desligar IA por scope
  • certificado-digital-mtls — mTLS pra SEFAZ e similares

Histórico de versões

  • 1.0.0

    Pipeline server-side de redaction de PII antes de enviar payload pra LLM. Regex+Luhn cobre CPF, CNPJ, CEP, email, telefone BR/ES, IBAN, cartão de crédito, DNI/NIE espanhol. Substituições com tags tipadas [REDACTED:CPF] etc; opção de hash determinístico. Aplicado em todos os 6 entry points Anthropic (diagnose, interpret-log, suggest-mapping, suggest-format, create-message-type, paraphrase-descriptions). Stats por chamada em ai_usage_events.metadata.pii_redaction. 19 testes vitest. Documentado em /security e /help.

    5/5/2026 · new