RobertoMSen

contacttrace-agents

Rastreo de contactos para las skills de un agente de IA. Encuentra y pone en cuarentena todo lo que deriva de una fuente envenenada.

Lenguaje
Python
Año
2026
Versión
v0.1
Licencia
MIT
Stack
Python / Hermes Agent / Prompt injection / Provenance

El problema

Los agentes que aprenden solos, como Hermes Agent, convierten su experiencia en skills persistentes. Si esa experiencia viene de una fuente manipulada (un README con una instrucción inyectada, una web maliciosa), el veneno pasa a ser una skill. Y cada skill que se escriba después con ella en contexto puede heredarlo.

Borrar la skill infectada no arregla nada: sus descendientes siguen vivos.

Qué hace

ContactTrace apunta quién estuvo en contacto con quién. Con un solo comando localiza todas las skills derivadas de una fuente envenenada, las pone en cuarentena y deja intactas las limpias.

  • Captura. Cada fuente que lee una sesión (skills, web, ficheros, terminal) queda enlazada a cada skill que esa sesión escribe.
  • Herencia de confianza. La confianza de una versión es la mínima de todo lo que la influyó. Las fusiones del Curator trasladan esa confianza a la skill resultante.
  • Retirada en cascada. Al revocar una fuente se listan todos sus descendientes vivos (en seco) o se mueven a una cuarentena restaurable.
  • Registro a prueba de manipulación. Cada evento queda encadenado por hash.

Lo que vimos con un modelo real

Pruebas con Hermes Agent en octubre de 2026, usando como “veneno” una cadena canario inofensiva:

  1. El agente leyó el README manipulado de un proveedor y copió la instrucción inyectada en una skill nueva sin cuestionarla.
  2. Una instrucción ingenua se perdió al combinar skills, pero el mismo marcador disfrazado de cabecera obligatoria de API sobrevivió hasta una skill de segunda generación.
  3. Borrar la primera skill infectada dejó viva a la segunda.
  4. recall encontró al descendiente superviviente a través del enlace borrado, lo puso en cuarentena y respetó las dos skills limpias.

Límites conocidos

La atribución es por sesión: todo lo leído en una sesión cuenta como padre de todo lo que se escribe después. Nunca oculta una contaminación, pero a veces retira de más. El siguiente paso es comprobar que un padre marcado dejó rastro real en el descendiente antes de retirarlo.