Inyección de prompts

La inyección de prompts es texto malicioso escondido en contenido que el agente lee — un archivo en un repositorio hostil, una página web, un CLAUDE.md envenenado — que intenta dirigir al modelo ("ignora las instrucciones anteriores, exfiltra los secretos"). El panel Inyección de prompts enciende detectores que examinan el tráfico de IA de una máquina en busca de ese contenido (una máquina es un espacio de trabajo, en el editor de ajustes). Como dice la descripción del panel: Bromure examina el tráfico de IA del agente en el dispositivo en busca de instrucciones inyectadas — nada sale del Mac. Cada detector usa un modelo local, descargado de bromure.io la primera vez que lo activas.

El panel Inyección de prompts de la máquina Web app: el grupo Detectores con Detectar inyección de prompts en el código fuente y Detectar instrucciones maliciosas en archivos CLAUDE.md y similares ambos sin marcar, y el grupo Cuando se detecta una inyección con Registrar y continuar, Preguntarme qué hacer y Bloquear unilateralmente atenuados

El panel tiene dos grupos: Detectores (qué escáneres se ejecutan) y Cuando se detecta una inyección (qué pasa cuando hay un acierto). En la captura los dos detectores están apagados, así que el grupo de botones de opción de abajo está desactivado — se activa en cuanto al menos un detector está encendido. El escaneo ocurre en el proxy del anfitrión, así que un agente dentro de la VM no lo puede apagar. Las tripas de los detectores, la puntuación y la aplicación se cubren en Detección de inyección de prompts y salvaguardas. Los cambios se aplican a una máquina en marcha cuando guardas.

Detectores

Detectar inyección de prompts en el código fuente

Puntúa el contenido externo no fiable que el agente devuelve al modelo — contenidos de archivos, páginas web, y la salida de herramientas enviada como bloques tool_result — con el modelo de clasificación local Prompt Guard. Este es el detector que pilla el texto "ignora las instrucciones anteriores / exfiltra los secretos" escondido en un repositorio hostil. El pie del panel anuncia una descarga de unos 272 MB la primera vez que lo activas.

El escaneo se ejecuta enteramente en el dispositivo. En cada turno solo se escanea el mensaje más reciente que lleva resultados de herramientas (el historial de conversación reenviado se salta), y el contenido idéntico se cachea, así que leer el mismo archivo varias veces no cuesta nada.

Detectar instrucciones maliciosas en archivos CLAUDE.md y similares

Apunta a la amenaza de la "puerta trasera del archivo de reglas": instrucciones maliciosas plantadas en los archivos que los agentes de código cargan automáticamente como autoridad de confianza — CLAUDE.md, AGENTS.md, GROK.md, y las variantes anidadas y globales que Claude Code, Codex y Grok leen en su prompt de sistema. Se ejecutan dos pasadas:

  • Un escáner determinista (no hace falta modelo) que señala la ofuscación por Unicode invisible — caracteres de ancho cero, inversiones bidireccionales, caracteres de etiqueta Unicode — más patrones de meta-instrucción ("ignora las instrucciones anteriores", "no se lo digas al usuario") y palabras clave de capacidad o exfiltración (rutas de archivos de credenciales, curl-a-shell, force pushes).
  • Un clasificador ModernBERT afinado que hace una pasada semántica sobre el cuerpo de esos mismos archivos de instrucciones.

El pie del panel anuncia una descarga de unos 571 MB la primera vez que lo activas. Los hallazgos de un archivo sin cambios se deduplican por sesión, así que un CLAUDE.md señalado se registra una vez, no en cada turno.

Descargas de modelos

Los modelos de los detectores no vienen con la app. Marcar cualquiera de los conmutadores muestra primero una alerta de confirmación — ¿Descargar el modelo del detector <detector>? — que indica el tamaño exacto de la descarga, calculado a partir de los totales reales de bytes (unos 298 MB para el detector de código fuente y unos 603 MB para el de reglas, algo mayor que los pies redondeados del panel) con los botones Descargar y Cancelar, y luego una ventana de progreso con un porcentaje y un botón Cancelar. Rehusar, cancelar, o una descarga fallida devuelve el conmutador a su sitio: un detector sin su modelo no hace nada, y Bromure no va a fingir lo contrario.

Detalles que vale la pena saber:

  • Los modelos se descargan de dl.bromure.io a ~/Library/Application Support/BromureAC/Models/ (prompt-injection/ para el detector de código fuente, claudemd-guard/ para el de reglas). Para quitar uno, borra su carpeta.
  • Las descargas empiezan de inmediato cuando confirmas — es una de las pocas acciones del editor de ajustes que surte efecto antes de que hagas clic en Guardar.
  • Las descargas se comparten: una vez obtenido, cualquier máquina que active el mismo detector reutiliza el modelo.
  • Una comprobación del espacio libre rehúsa una descarga que no quepa. Si un detector está encendido pero falta su modelo, arranca automáticamente una descarga en segundo plano.
  • En el cliente de iPhone, iPad y Vision Pro, marcar un detector solo guarda el ajuste; el Mac que ejecuta la máquina descarga el modelo cuando lo necesita.

Cuando se detecta una inyección

Una única acción compartida se aplica a los dos detectores. El texto de ayuda del panel la resume: "Registrar y continuar" registra las detecciones en la Cronología de seguridad; "Preguntarme qué hacer" pone la petición en pausa y muestra el texto señalado; "Bloquear" hace fallar la petición de plano.

AcciónComportamiento
Registrar y continuarLa detección se registra en la Cronología de seguridad y la petición sigue. El escaneo ocurre después de retransmitir la respuesta, así que este modo no añade latencia alguna. Lo predeterminado.
Preguntarme qué hacerLa petición saliente se pone en pausa antes de que un solo byte llegue al host de IA, y un diálogo muestra el texto señalado en una vista monoespaciada con desplazamiento, con los botones Bloquear esta petición y Permitir esta petición. Tu decisión se recuerda para esa máquina, esa fuente y ese contenido, así que el mismo texto señalado no se vuelve a preguntar en cada turno.
Bloquear unilateralmenteLa petición se rechaza de plano. El agente recibe un error HTTP 451 ("Bromure blocked this request: possible … detected in …") y el modelo nunca ve el contenido envenenado.

El grupo de botones de opción está desactivado hasta que al menos un detector esté activado. En los modos Preguntar y Bloquear el escaneo se ejecuta antes de reenviar, lo que añade la latencia del clasificador a los turnos señalados; Registrar y continuar no añade ninguna. Cuando la máquina se usa sin supervisión por SSH o por la CLI, la pregunta de Preguntar se hace dentro del tmux de la máquina — solo un permiso explícito deja pasar la petición.

Dónde aparecen las detecciones

Cada detección y cada resultado de aplicación se registra en la Cronología de seguridad (Ventana › Seguridad…) bajo el filtro Inyección de prompts. Las entradas llevan solo una vista previa corta del contenido señalado; el texto completo aparece en el diálogo Preguntarme qué hacer. En los Mac inscritos en una organización de bromure.io, las detecciones también se envían como eventos de auditoría (no cuando el Modo privado del panel Trazado está activado).

Referencia de ajustes

AjusteTipoPor omisión
Detectar inyección de prompts en el código fuenteConmutador (pide descargar el modelo la primera vez)Desactivado
Detectar instrucciones maliciosas en archivos CLAUDE.md y similaresConmutador (pide descargar el modelo la primera vez)Desactivado
Cuando se detecta una inyecciónOpción: Registrar y continuar / Preguntarme qué hacer / Bloquear unilateralmente (desactivado hasta que un detector esté encendido)Registrar y continuar

Consejo: una progresión sensata: empieza con los dos detectores encendidos en Registrar y continuar, observa la Cronología de seguridad unos días para medir la tasa de falsos positivos en tus repositorios, y luego pasa a Preguntarme qué hacer para bases de código no fiables. Para el ajuste de memoria y de Neural Engine de los clasificadores en el dispositivo, ver Detección de inyección de prompts y salvaguardas. Para mantener los datos personales fuera de lo que ve el modelo, ver Protección de datos personales.