Protección de datos personales
Un agente de código envía muchos de tus datos a su proveedor de modelo: cada archivo que lee, cada salida de comando, cada fila de un volcado de base de datos o de un CSV que mira entra en la conversación. Cuando esos datos contienen información personal — nombres de clientes, direcciones de correo, números de teléfono, números de tarjeta, direcciones postales — el proveedor también los recibe.
La protección de datos personales mantiene esos datos personales en tu Mac. Antes de que una petición salga hacia el proveedor del modelo, el proxy del lado del anfitrión encuentra en ella los datos personales y sustituye cada valor por un suplente realista: un nombre inventado para un nombre real, una dirección en @example.com para un correo real, y así. Cuando vuelve la respuesta, el proxy devuelve los valores reales. El proveedor solo ve suplentes; el agente, tus archivos y tu terminal siguen trabajando con los valores reales, y el agente nunca ve un suplente.
La detección corre en el dispositivo con el modelo Rampart integrado. No se envía nada a ningún sitio para analizarlo.
Este capítulo explica qué sustituye la función, cómo se comportan los suplentes, dónde verla funcionar, y sus límites. La protección de datos personales se ajusta por máquina (un espacio de trabajo, en el editor de ajustes); la referencia de campos está en Ajustes → Protección de datos personales.
Activarla
Abre los ajustes de la máquina y selecciona Protección de datos personales bajo Seguridad en la barra lateral.
El panel tiene un grupo, Protección:
| Ajuste | Por omisión | Qué cubre |
|---|---|---|
| Sustituir los datos personales por sustitutos antes de que lleguen al modelo | Desactivado | El interruptor principal. Las categorías de abajo quedan atenuadas mientras esté desactivado. |
| Nombres de personas | Activado | Nombres y apellidos. |
| Direcciones de correo y números de teléfono | Activado | Direcciones de correo; números de teléfono con al menos siete dígitos. |
| Números de tarjeta, cuenta bancaria y fiscales | Activado | Números de tarjeta de pago, números de cuenta bancaria y de enrutamiento, números fiscales. |
| Números de seguro social, pasaportes, permisos de conducir y otros documentos | Activado | Números de la Seguridad Social de EE. UU. y otros números de identificación oficiales. |
| Direcciones postales (se conservan la ciudad, el estado y el código postal) | Activado | La línea de la calle (número, calle, unidad), sustituida en bloque. |
Haz clic en Guardar. El ajuste surte efecto en la siguiente petición de IA de la máquina.
Bajo el grupo, el panel señala que el código fuente se deja a las reglas de patrón y que cada sustitución se cuenta en la Cronología de seguridad sin que los valores se registren nunca. El enlace Rampart — National Design Studio, CC BY 4.0 acredita el modelo de detección.
Nota: el modelo de detección viene dentro de la app. En una compilación que no lo incluya, activar el interruptor ofrece descargarlo (unos 14 MB); si se rechaza la descarga o falla, el interruptor se vuelve a desactivar por sí mismo.
Qué se sustituye
La detección combina dos pasadas:
- Las reglas de patrón con validadores reconocen exactamente los datos estructurados: direcciones de correo, números de tarjeta (comprobados con el algoritmo de Luhn), números de la Seguridad Social y similares.
- El modelo Rampart, un pequeño clasificador de tokens que corre en la CPU del Mac, encuentra los tipos no estructurados — nombres y direcciones postales — en prosa y en datos.
Bromure filtra luego lo que el modelo propone, para que el código corriente y los nombres de producto no se confundan con personas:
- El código fuente solo recibe las reglas de patrón. Los nombres en el código son casi siempre identificadores, así que el código queda fuera de la pasada del modelo; los correos, tarjetas y números de la Seguridad Social del código se sustituyen igualmente.
- Los nombres de productos, empresas y herramientas conocidos (Claude, GitHub, Docker, Postgres, …) nunca se tratan como personas.
- La ciudad, el estado y el código postal se conservan, igual que cualquier cosa que parezca una URL o una dirección IP. Solo se sustituye la línea de la calle de una dirección.
- Un valor nunca cruza líneas, y los fragmentos demasiado cortos o demasiado parecidos a código para ser datos de alguien se dejan en paz.
Solo cambia el texto de la conversación. El proxy reescribe la petición cadena a cadena y deja todos los demás bytes tal como los envió el agente. El razonamiento del modelo, las firmas y el contenido cifrado no se tocan nunca en ninguna dirección, así que las comprobaciones de integridad del proveedor siguen pasando.
Cómo se comportan los suplentes
Cada suplente se parece a lo real, para que el modelo aún pueda razonar sobre los datos:
| Tipo | Suplente |
|---|---|
| Nombre | Un nombre realista y pronunciable |
| Correo | Una dirección en @example.com |
| Número de teléfono | Un número en el mismo formato que el original |
| Número de tarjeta | Un número de tarjeta de prueba que pasa la comprobación de Luhn |
| Número de la Seguridad Social | Un número en el rango 9xx nunca emitido |
Los suplentes son coherentes por máquina. El mismo valor real recibe siempre el mismo suplente — entre turnos y entre reinicios de la app — porque cada uno se deriva del valor con una clave propia de la máquina. Esto importa por dos razones:
- La conversación que el agente reenvía cada turno queda idéntica byte a byte, así que la caché de prompts del proveedor sigue funcionando.
- El modelo ve una persona o un cliente coherente a lo largo de una conversación, no un nombre aleatorio nuevo en cada turno.
Cada suplente se comprueba contra el diccionario y contra todas las demás entradas antes de usarse, para que devolverlo en una respuesta no pueda alterar palabras corrientes. Un nombre que también es una palabra de todos los días ("Will", "Grace") se sustituye solo donde se detectó como nombre.
La clave propia de la máquina vive en ~/Library/Application Support/BromureAC/pii/<id-espacio-de-trabajo>.key (modo 0600). La tabla de valores y suplentes nunca se escribe en disco; se reconstruye en memoria a medida que los valores se vuelven a ver.
Devolver los valores reales
Mientras la respuesta llega en flujo, el proxy sustituye cada suplente por su valor real antes de que el agente lo vea — en el texto, y en los argumentos de las llamadas de herramientas, para que un archivo que el agente escriba o un comando que ejecute reciba los datos reales. Las respuestas se restauran para la API Anthropic Messages, las API de OpenAI Chat Completions y Responses, y Gemini, ya sea en flujo o enviadas de golpe. En flujo, el proxy retiene unos pocos caracteres cada vez para que un suplente partido entre dos trozos aún se reconozca.
Dónde se aplica
La protección de datos personales actúa sobre las peticiones del agente a proveedores de IA en la nube — los anfitriones de IA conocidos cuyos cuerpos puede capturar el trazado, excepto HuggingFace — cuando la petición lleva una conversación. No se aplica a:
- Modelos en el dispositivo. Un turno servido por el motor de inferencia del propio Mac nunca sale del Mac, así que no se reescribe.
- Cuerpos de petición comprimidos. Una petición cuyo cuerpo comprimió el cliente pasa sin analizarse.
Como la sustitución ocurre antes de que Fusion reparta una pregunta, los demás modelos de un panel de Fusion también reciben los suplentes.
Verla funcionar
Cada petición en la que se sustituyeron valores nuevos añade una fila Protección de datos personales a la Cronología de seguridad: los recuentos por tipo y el anfitrión de destino (por ejemplo 3 nombres · 1 número de teléfono → api.anthropic.com), con la decisión sustituido por suplentes. Las filas llevan solo recuentos — los valores en sí nunca se registran. Los valores ya sustituidos en un turno anterior y reenviados con el historial no se cuentan otra vez. Una petición demasiado grande para el presupuesto del modelo recibe una fila con la decisión parcial: presupuesto de modelo alcanzado; solo reglas de patrón, incluso cuando no se sustituyó nada.
La baldosa Datos personales sustituidos de la pestaña Resumen suma los valores sustituidos en las últimas 24 horas, y la tabla Protecciones tiene una columna Protección de datos personales que muestra qué máquinas tienen la función activada.
Límites
- Es detección, no una garantía. El modelo cambia un poco de exhaustividad por muchos menos falsos positivos en código; formatos inusuales, nombres en contextos inusuales, o datos personales dentro del código fuente pueden pasar. Tómalo como una fuerte reducción de la exposición, no como prueba de que ningún dato personal llegó al proveedor.
- Las peticiones muy grandes son en parte solo de patrón. El modelo lee como mucho 300 000 caracteres de texto nuevo por petición, del más reciente al más antiguo; más allá de ese presupuesto solo corren las reglas de patrón, y la Cronología de seguridad registra la petición como "parcial: presupuesto de modelo alcanzado; solo reglas de patrón". El historial más antiguo ya se trató en turnos anteriores.
- Solo cambia el texto de la conversación. Las imágenes, los adjuntos enviados como datos binarios, y campos como los identificadores y los nombres de modelo no se analizan.
- Las trazas conservan los valores reales. Cuando el trazado captura cuerpos de IA, la petición guardada es la que envió el agente y la respuesta guardada es la restaurada, así que ambas contienen los valores reales — cifrados en tu Mac, como todo cuerpo de traza. La versión con suplentes que recibió el proveedor no se guarda.