Proteção de dados pessoais
Um agente de programação envia uma grande quantidade dos seus dados ao fornecedor do modelo: cada ficheiro que lê, cada saída de comando, cada linha de um dump de base de dados ou de um CSV que consulta entra na conversa. Quando esses dados contêm informação pessoal — nomes de clientes, endereços de e-mail, números de telefone, números de cartão, endereços — o fornecedor também os recebe.
A proteção de dados pessoais mantém esses dados pessoais no seu Mac. Antes de um pedido partir para o fornecedor do modelo, o proxy do lado do anfitrião encontra nele os dados pessoais e substitui cada valor por um substituto realista: um nome inventado para um nome real, um endereço em @example.com para um e-mail real, e assim por diante. Quando a resposta volta, o proxy repõe os valores reais. O fornecedor só vê substitutos; o agente, os seus ficheiros e o seu terminal continuam a trabalhar com os valores reais, e o agente nunca vê um substituto.
A deteção corre no dispositivo com o modelo Rampart integrado. Nada é enviado para lugar algum para ser analisado.
Este capítulo explica o que a funcionalidade troca, como se comportam os substitutos, onde a ver a trabalhar, e os seus limites. A proteção de dados pessoais define-se por máquina (um espaço de trabalho, no editor de definições); a referência dos campos está em Definições → Proteção de dados pessoais.
Ligá-la
Abra as definições da máquina e selecione Proteção de dados pessoais em Segurança na barra lateral.
O painel tem um só grupo, Proteção:
| Definição | Predefinição | O que cobre |
|---|---|---|
| Trocar dados pessoais por substitutos antes que cheguem ao modelo | Desligado | O interruptor principal. As categorias abaixo ficam esbatidas enquanto estiver desligado. |
| Nomes de pessoas | Ligado | Nomes próprios e apelidos. |
| Endereços de e-mail e números de telefone | Ligado | Endereços de e-mail; números de telefone com pelo menos sete dígitos. |
| Números de cartão, conta bancária e fiscais | Ligado | Números de cartão de pagamento, números de conta bancária e de encaminhamento, números fiscais. |
| Números de seguro social, passaportes, cartas de condução e outros documentos | Ligado | Números de segurança social dos EUA e outros números de identificação oficiais. |
| Endereços (cidade, distrito e código postal são mantidos) | Ligado | A linha da rua (número, rua, fração), trocada por inteiro. |
Clique em Gravar. A definição entra em efeito no pedido de IA seguinte da máquina.
Sob o grupo, o painel nota que o código-fonte fica entregue às regras de padrão e que cada troca é contada na Linha do tempo de segurança sem que os valores sejam registados. A ligação Rampart — National Design Studio, CC BY 4.0 dá crédito ao modelo de deteção.
Nota: o modelo de deteção vem dentro da aplicação. Numa versão que não o inclua, ligar o interruptor propõe transferi-lo (cerca de 14 MB); se a transferência for recusada ou falhar, o interruptor volta sozinho a desligado.
O que é trocado
A deteção combina duas passagens:
- Regras de padrão com validadores reconhecem exatamente os dados estruturados: endereços de e-mail, números de cartão (verificados com o algoritmo de Luhn), números de segurança social e semelhantes.
- O modelo Rampart, um pequeno classificador de tokens que corre no CPU do Mac, encontra os tipos não estruturados — nomes e endereços — em prosa e em dados.
O Bromure filtra depois o que o modelo propõe, para que código comum e nomes de produtos não sejam tomados por pessoas:
- O código-fonte recebe apenas as regras de padrão. Nomes em código são quase sempre identificadores, pelo que o código fica fora da passagem do modelo; e-mails, cartões e números de segurança social em código continuam a ser trocados.
- Nomes de produtos, empresas e ferramentas bem conhecidos (Claude, GitHub, Docker, Postgres, …) nunca são tratados como pessoas.
- Cidade, distrito e código postal são mantidos, assim como tudo o que pareça um URL ou um endereço IP. Só a linha da rua de um endereço é trocada.
- Um valor nunca atravessa linhas, e fragmentos demasiado curtos ou demasiado parecidos com código para serem dados de alguém ficam intactos.
Só o texto da conversa é alterado. O proxy reescreve o pedido cadeia a cadeia e deixa todos os outros bytes como o agente os enviou. O raciocínio do modelo, as assinaturas e o conteúdo cifrado nunca são tocados em qualquer direção, pelo que as verificações de integridade do fornecedor continuam a passar.
Como se comportam os substitutos
Cada substituto parece a coisa real, para que o modelo ainda possa raciocinar sobre os dados:
| Tipo | Substituto |
|---|---|
| Nome | Um nome realista e pronunciável |
Um endereço em @example.com | |
| Número de telefone | Um número no mesmo formato do original |
| Número de cartão | Um número de cartão de teste que passa a verificação de Luhn |
| Número de segurança social | Um número na faixa 9xx nunca emitida |
Os substitutos são consistentes por máquina. O mesmo valor real recebe sempre o mesmo substituto — entre vezes e entre reinícios da aplicação — porque cada um é derivado do valor com uma chave própria da máquina. Isto importa por duas razões:
- A conversa que o agente reenvia a cada vez fica idêntica byte a byte, pelo que a cache de prompts do fornecedor continua a funcionar.
- O modelo vê uma pessoa ou um cliente consistente ao longo de uma conversa, e não um nome aleatório novo a cada vez.
Cada substituto é verificado contra o dicionário e contra todas as outras entradas antes de ser usado, para que repô-lo numa resposta não possa alterar palavras comuns. Um nome que também é uma palavra do dia a dia («Will», «Grace») só é trocado onde foi detetado como nome.
A chave própria da máquina vive em ~/Library/Application Support/BromureAC/pii/<id-do-espaço-de-trabalho>.key (modo 0600). A tabela de valores e substitutos nunca é escrita em disco; é reconstruída em memória à medida que os valores voltam a ser vistos.
Repor os valores reais
À medida que a resposta chega em fluxo, o proxy substitui cada substituto pelo valor real antes de o agente o ver — no texto, e nos argumentos das chamadas de ferramentas, para que um ficheiro que o agente escreva ou um comando que corra recebam os dados reais. As respostas são repostas para a API Anthropic Messages, as APIs OpenAI Chat Completions e Responses, e o Gemini, em fluxo ou enviadas inteiras. Em fluxo, o proxy retém alguns caracteres de cada vez para que um substituto partido entre dois blocos ainda seja reconhecido.
Onde se aplica
A proteção de dados pessoais atua nos pedidos do agente a fornecedores de IA na nuvem — os anfitriões de IA conhecidos cujos corpos o rastreio consegue capturar, exceto o HuggingFace — quando o pedido leva uma conversa. Não se aplica a:
- Modelos no dispositivo. Uma vez servida pelo motor de inferência do próprio Mac nunca sai do Mac, pelo que não é reescrita.
- Corpos de pedido comprimidos. Um pedido cujo corpo o cliente comprimiu passa sem ser analisado.
Como a troca acontece antes de o Fusion distribuir uma pergunta, os outros modelos de um painel Fusion também recebem os substitutos.
Vê-la a trabalhar
Cada pedido em que novos valores foram trocados acrescenta uma linha Proteção de dados pessoais à Linha do tempo de segurança: as contagens por tipo e o anfitrião de destino (por exemplo 3 nomes · 1 número de telefone → api.anthropic.com), com a decisão trocado por substitutos. As linhas levam apenas contagens — os valores em si nunca são registados. Valores já trocados numa vez anterior e reenviados com o histórico não são contados de novo. Um pedido demasiado grande para o orçamento do modelo recebe uma linha com a decisão parcial — orçamento de modelo atingido; só regras de padrão, mesmo quando nada foi trocado.
O mosaico Dados pessoais trocados do separador Visão geral soma os valores trocados nas últimas 24 horas, e a tabela Proteções tem uma coluna Proteção de dados pessoais a mostrar que máquinas têm a funcionalidade ligada.
Limites
- É deteção, não uma garantia. O modelo troca um pouco de abrangência por muito menos falsos positivos em código; formatos invulgares, nomes em contextos invulgares, ou dados pessoais dentro do código-fonte podem passar. Trate-a como uma forte redução da exposição, não como prova de que nenhum dado pessoal chegou ao fornecedor.
- Pedidos muito grandes ficam em parte só com padrões. O modelo lê no máximo 300 000 caracteres de texto novo por pedido, do mais recente para o mais antigo; além desse orçamento só correm as regras de padrão, e a Linha do tempo de segurança registra o pedido como «parcial — orçamento de modelo atingido; só regras de padrão». O histórico mais antigo já tinha sido tratado nas vezes anteriores.
- Só o texto da conversa é alterado. Imagens, anexos enviados como dados binários, e campos como ids e nomes de modelos não são analisados.
- Os rastros guardam os valores reais. Quando o rastreio captura corpos de IA, o pedido guardado é o que o agente enviou e a resposta guardada é a reposta, pelo que ambos contêm os valores reais — cifrados no seu Mac, como qualquer corpo de rastro. A versão com substitutos que o fornecedor recebeu não é guardada.