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:
- El agente leyó el README manipulado de un proveedor y copió la instrucción inyectada en una skill nueva sin cuestionarla.
- 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.
- Borrar la primera skill infectada dejó viva a la segunda.
recallencontró 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.