AN-06 L3 Nivel de conformidad: Guard Grupo: Autoridad
Trust Labels etiquetas de confianza
Dos etiquetas pequeñas más la contaminación de sesión hacen cumplir la Rule of Two.
Las Trust Labels son dos conjuntos de etiquetas muy pequeños asociados a los datos, origen (owner, agent, external) y sensibilidad (public, private, secret), más la contaminación de sesión. El NAS hace cumplir la Rule of Two como un invariante de sesión: una sesión no puede tener a la vez [A] ha leído contenido externo, [B] toca datos sensibles y [C] cambia un estado protegido o se comunica hacia el exterior. Completar la tercera exige una Human Gate.
El problema
La inyección de prompts funciona porque un modelo no distingue las “instrucciones” de los “datos”. Las defensas en la capa del modelo (clasificadores, endurecimiento del prompt) tienen fugas, y los atacantes pueden adaptarse. A finales de octubre de 2025, Meta propuso la Agents Rule of Two: hasta que la inyección esté resuelta de forma fiable, una sesión debería tener como máximo dos de tres propiedades.
El enfoque más fiable es acotar las consecuencias fuera del modelo. El almacenamiento es justo por donde pasan todas las lecturas y escrituras, así que es un lugar natural para convertir esta regla en un invariante comprobable.
Cómo funciona
- Etiquetas. Tres orígenes, tres sensibilidades y una marca
reviewed(la fija la aprobación de una compuerta). Los puntos de importación (páginas web, correo, subidas) sonexternalpor defecto; cuando un escáner de secretos encuentra credenciales, las etiqueta comosecretautomáticamente. - Contaminación de sesión. El resumen de todo lo que ha leído una ejecución (a partir del manifiesto de lectura); dentro de una sesión solo crece, y una sesión nueva empieza limpia.
- El invariante. A = la sesión ha leído
external; B = la concesión puede leerprivateo superior (umbral configurable); C = la concesión puede proponer una fusión en un árbol protegido, compartir, borrar o enviar datos al exterior. Cuando las tres se cumplen en una misma sesión, la llamada que activa C se deniega o se envía a una compuerta. - En la práctica: con una concesión que tiene tanto B como C, una vez que una sesión ha leído contenido externo, toda acción posterior de tipo C necesita a una persona. Para evitar esa fricción, haz el trabajo de “leer contenido externo” en una sesión aparte sin B y pasa los resultados solo mediante un traspaso estructurado.
- Propagación. Las derivaciones que hace el propio NAS (índices, resúmenes) heredan de forma determinista la unión de las etiquetas de sus entradas; los archivos que escribe una ejecución heredan la contaminación de sesión de la ejecución (la opción conservadora).
- Desclasificación. Solo mediante una Human Gate, o un traspaso estructurado: la salida de la sesión contaminada se restringe a campos validados por un JSON Schema (enumeraciones, ID, cadenas acotadas), y solo después de validar puede leerla una sesión con privilegios. Solo se puede confiar en lo que se puede validar de forma determinista.
- La aplicación se hace en la pasarela y en el montaje (que conocen la concesión y la sesión), no dentro del modelo.
Empezar en pequeño
- Haz solo dos cosas: etiqueta como
externallos archivos del directorio de importación y, por defecto, no des a una ejecución que haya leídoexternalni salida de datos ni fusión protegida sin una compuerta. - Escribe la política como reglas deterministas en Cedar o Rego, y da motivos legibles al denegar.
- Ejecuta en modo “solo registrar” durante una semana para ver qué bloquearía por error y luego activa la aplicación.
Esbozo de la interfaz
Solo ilustrativo. Los nombres de los campos pueden cambiar antes de la especificación v0.3.
# Deterministic policy (Cedar- or Rego-style rules can express the same thing)
session_invariant: rule_of_two
properties:
A: session.read_origin includes "external"
B: lease.sensitivity_max >= "private"
C: lease allows propose_protected | share | delete | egress
on_would_complete_ABC: gate # never "allow"
rules:
- id: r-merge-1
when: session.A and op == "merge" and target.protected
then: gate
- id: r-secret-1
when: session.read_sensitivity == "secret" and op == "egress"
then: deny Lo que pide la especificación
- Todo punto de importación DEBE asignar una etiqueta por defecto; el contenido externo DEBE etiquetarse como
external. - La contaminación de sesión DEBE crecer únicamente dentro de una sesión.
- La evaluación de políticas DEBE ser determinista y NO DEBE llamar a un LLM.
- Una llamada que permitiría a una sesión completar A+B+C DEBE denegarse o enviarse a una compuerta.
- La desclasificación DEBE pasar por una compuerta o por un traspaso estructurado validado por esquema.
- Los datos derivados DEBEN heredar la unión de las etiquetas de sus entradas.
Lo prestado y lo nuevo
Lo que sigue es todo pensamiento establecido. Lo nuevo: implementar la contaminación de sesión en la frontera del almacenamiento con el manifiesto de lectura, y aplicar las etiquetas a las escrituras de memoria y a los datos derivados. Mantenemos deliberadamente el retículo de etiquetas en 3×3 porque los retículos de grano fino llevan en la práctica a una explosión de etiquetas. OpenClaw ya hace etiquetas de origen y aislamiento dentro de un solo runtime; nuestra diferencia es solo ponerlo en el almacenamiento compartido.
- Agents Rule of Two (Meta)
- The lethal trifecta
- CaMeL
- Fides
- Design Patterns for Securing LLM Agents against Prompt Injections
- OpenClaw memory architecture
Límites honestos
- Esto no es una defensa contra la inyección de prompts; limita las consecuencias.
- El NAS no puede ver las herramientas que están fuera de él (un navegador, el correo), así que necesita la cooperación del runtime.
- La contaminación es conservadora y trae fricción y falsos positivos; el texto libre fuera de los esquemas estructurados aún puede llevar palabras de un atacante.
- Los canales encubiertos no se pueden eliminar.
Preguntas abiertas
- ¿Debe ser la granularidad de una etiqueta el archivo o el párrafo?
- ¿Cómo se gobierna el vocabulario de etiquetas entre inquilinos?
- ¿Cómo se pueden reducir los falsos positivos?
Preguntas
¿La Rule of Two detiene la inyección de prompts?
No impide que ocurra una inyección. Hace que una sesión inyectada no pueda tener las tres cosas: “ha leído contenido no fiable, toca datos sensibles, puede cambiar un estado protegido o enviar datos al exterior”, lo que acota las consecuencias. La propia Meta subraya que es una heurística de reducción de riesgo que no sustituye al mínimo privilegio.
¿Por qué solo tres orígenes y tres sensibilidades?
Porque los retículos de etiquetas de grano fino tienden a hincharse y a desactivarse en la práctica. 3×3 basta para decir “quién lo escribió y cuán sensible es” y hace fácil entender el motivo de un rechazo. Las particiones más finas se pueden hacer con rutas y concesiones.
¿La contaminación de sesión dejará al agente sin poder hacer nada?
Solo restringe tres tipos de acción: cambiar un árbol protegido, compartir o borrar, y enviar datos al exterior. Las lecturas y escrituras dentro de una rama no se ven afectadas. Para evitar la fricción, pon el trabajo de leer contenido externo en una sesión sin datos sensibles y devuelve solo resultados validados contra un esquema.
Conceptos relacionados
- Human Gate (compuerta humana) Aparece solo antes de acciones irreversibles, hacia el exterior o que elevan privilegios, y muestra el diff real.
- Agent Memory (memoria del agente) Las notas que puedes leer y editar son la verdad. Los índices son una caché que puedes tirar.
- Capability Lease (concesión de capacidad) Una autorización estrecha para una ejecución, con caducidad y presupuestos. Las concesiones hijas solo pueden ser más estrechas.
Citar esta página
Direcciones estables y una cita sugerida para personas, buscadores y agentes.
- URL canónica
- https://agentnas.com/es/concepts/trust-labels/
- Versión en Markdown
- https://agentnas.com/es/concepts/trust-labels/index.md
- Cita sugerida
- Agent NAS project. “Trust Labels (etiquetas de confianza).” agentnas.com, 2026-11-11. https://agentnas.com/es/concepts/trust-labels/