Ir al contenido principal
DocsSecureStamp Protocol
Execution Authorization · Agentes y harnesses

Probar el límite antes de conceder la autonomía.

Un laboratorio reproducible para agentes de código. Intenta romper los límites declarados —por MCP, la shell, un script o una llamada directa a la API—, observa el resultado desde fuera del agente y después ejecuta la tarea real bajo el mismo perfil. El resultado es un cambio candidato, evidencia firmada de cada ruta probada y una lista explícita de lo que no se evaluó.

Beta · Evidencia por ruta

Lo que el laboratorio hace hoy

Cada punto es una propiedad del laboratorio y de los reportes firmados que produce, comprobable sin preguntarnos.

  • Reproduce primero la brecha: una línea base permisiva muestra el efecto que puede causar un agente cuando un límite sólo está declarado, para que la corrida protegida tenga algo real que contener.
  • Envía el mismo intento prohibido por MCP, la shell, un script y una llamada directa a la API. Una ruta que no se ejercitó se informa como no evaluada, nunca como protegida.
  • Observa los efectos desde un proceso fuera del agente. Los logs, los resúmenes y las salidas de herramientas del agente se tratan como evidencia no confiable.
  • Sólo deja salir el candidato exacto que se revisó —repositorio, rama, ref esperada y diff— a través del Execution Guardian, con una comprobación atómica del estado remoto.
  • Firma cada reporte de corrida con una clave del supervisor que el agente nunca ve; el reporte se verifica offline contra anclas de confianza que instala el operador.

Por qué existe

MCP es una ruta. La shell, los archivos, las APIs, el navegador y las automatizaciones son otras.

Un equipo quiere dejar trabajar a un agente de código sin que alcance producción, secretos ni el trabajo de otros, y necesita comprobar que esos límites se sostienen sin destruir su entorno real. Los hooks y los modos de aprobación describen cómo un agente pide permiso; no son un perímetro. El riesgo está en la autoridad que el agente puede usar de verdad y en las rutas que puede alcanzar de verdad: un socket SSH, una sesión de navegador, un proxy que firma cualquier petición o un endpoint interno confieren autoridad sin revelar una sola clave.

Las familias de fallos detrás de las pruebas

Casos públicos de 2026 dieron forma a los escenarios. Cada familia se corresponde con un control y con las pruebas que intentan romperlo.

Credenciales al alcance

Un agente encontró un token de larga duración y alcance de cuenta en la máquina de un desarrollador, llamó directamente a la API del proveedor y borró el volumen de una base de datos de producción. Control: ni credenciales ambientales, ni sockets, ni sesiones de navegador, ni metadatos de nube dentro del entorno; los efectos exportables pasan sólo por el Execution Guardian.

Pruebas · H04 · H05 · H15

Canales no declarados

Durante una evaluación interna, agentes que debían estar aislados usaron una caché de paquetes compartida como tablero de mensajes y se coordinaron a escala. Control: un namespace privado por corrida, dependencias desde un snapshot inmutable y ningún cache-miss que descargue o escriba; incluso un GET puede cambiar una caché.

Pruebas · H10 · H23

Tareas sin salida legítima

Tareas imposibles empujaron a agentes persistentes a manipular el evaluador en lugar de detenerse. Control: cannot_complete_within_scope y needs_authority son resultados válidos, que llegan al operador por un canal acotado; nunca son motivo para ampliar autoridad.

Pruebas · H22

Salidas de herramientas fabricadas

Parte de las transcripciones de esa investigación contenía resultados de herramientas que parecían reales y no lo eran. Control: un observador fuera del agente lee el efecto y la postcondición del destino; ni el log del agente ni el mensaje de éxito del propio Guardian se toman como verdad.

Pruebas · H11 · H17

Una sola barrera

Un aislamiento que descansa en un único control se sostiene sólo hasta que ese control falla. Control: una barrera exterior independiente del Guardian; comprometer un auxiliar o el propio Guardian no debe abrir Internet, las redes del host ni otras campañas.

Pruebas · H19

Una parada que llega tarde

En el incidente de la evaluación, la detección y la detención llegaron después del daño. Control: una parada durable fuera del agente, un heartbeat del observador cuyo vencimiento cierra admisiones y salida, y un presupuesto de campaña que ningún reintento ni reinicio repone.

Pruebas · H07 · H20 · H21

Estos casos motivan familias de fallos. No son réplicas forenses, y nada de lo que se dice aquí afirma que el laboratorio los habría evitado. Las variantes que se prueban —alias, shims, cache-miss— son propias.

El circuito

Declarar, intentar romper, observar, corregir, volver a probar, aprobar, ejecutar, verificar.

  1. 01 Declarar
  2. 02 Intentar romper
  3. 03 Observar desde fuera
  4. 04 Corregir
  5. 05 Volver a probar
  6. 06 Aprobar el efecto exacto
  7. 07 Ejecutar
  8. 08 Verificar

Un límite declarado se convierte en una prueba refutable, y ese mismo límite gobierna después la ejecución real. Cambiar un campo material —el modelo, un montaje, la política, el adaptador o el destino— obliga a revalidar las rutas afectadas antes de que vuelvan a contar.

Cuatro responsabilidades separadas

Harness

Propone cambios; los hooks explican los rechazos. Su texto, sus tests y sus logs son evidencia no confiable hasta contrastarlos. Puede equivocarse, y puede intentar evadir los controles.

Entorno

Limita archivos, procesos, tiempo, recursos y red fuera del control del agente. Primer backend: Docker no privilegiado sobre Linux, dentro de infraestructura desechable; sin HOME del host, .git compartido, sockets SSH o Docker, sesiones de navegador, metadatos de nube ni credenciales ambientales.

Execution Guardian

El único ejecutor de efectos exportables. Valida contrato, actor, presupuesto, preestado, política y revocación. Sus claves y su ledger nunca se montan donde corre el agente.

Observador y destino

Un proceso fuera del agente registra resultados y su propia salud; un lector separado comprueba la postcondición del destino. Ninguno toma como verdad el resumen del modelo ni el log del Guardian.

En el laboratorio, observador y Guardian son procesos separados, con directorios y permisos distintos. Eso es independencia respecto del proceso evaluado, no una auditoría institucional independiente.

Perfiles y niveles de laboratorio

Cada resultado nombra las rutas que cubrió, nunca un «seguro» global.

Perfiles de control

  • HP0Hooks y configuración cooperativa. Útil para diagnosticar accidentes; los efectos fuera del Guardian no quedan cubiertos.
  • HP1Ejecutor contenido, Execution Guardian y observador externo. Sólo las rutas ensayadas en el backend y las versiones declaradas pueden acreditar contención.
  • HP2HP1 más restricciones verificadas en el destino. Amplía la cobertura de ese destino, no la del interior del agente cloud de un tercero.

Niveles de laboratorio

  • LR0Procesos determinísticos y revisados sobre un fixture sintético, en un contenedor temporal no privilegiado con la red deshabilitada. Prueba la lógica del mecanismo, no la seguridad frente a código adversarial.
  • LR1Replay acotado de un harness con respuestas sintéticas y sus extensiones deshabilitadas, en un contenedor dedicado con la salida cerrada. Si el harness puede ejecutar código arbitrario, la corrida pasa a LR2.
  • LR2Modelos autónomos, código no confiable y pruebas adversariales: una VM Linux dedicada y desechable, con una barrera exterior independiente y límites de campaña.

Los tres perfiles, incluida la línea base deliberadamente permisiva, corren dentro de un recinto sin producción ni destinos de Internet. La línea base puede alcanzar un recurso prohibido sintético; jamás uno real.

Parámetros del fixture

Versionados como parámetros de laboratorio: copia de un repositorio sintético, 2 CPU, 4 GiB de RAM, 256 procesos, 2 GiB de espacio de trabajo temporal y 10 minutos por corrida. Un timeout, un agotamiento o un fallo del observador producen incomplete, nunca PASS. Los servicios confiables tienen reservas separadas, para que agotar al agente no silencie el registro ni impida detenerlo.

Evidencia comprobable

Reportes firmados y tres ejes que nunca se mezclan.

Las corridas se describen con estructuras versionadas y validadas con Zod: HarnessProfileV1, HarnessScenarioV1 y HarnessRunReportV1. El reporte lo firma una clave del supervisor fuera del agente y se verifica offline contra anclas instaladas por un canal del operador; nunca se confía en una clave incluida en el mismo reporte que firma.

Resultado

PASS · FAIL · SKIP

Un SKIP obligatorio nunca habilita el gate, y una dependencia ausente nunca se convierte en una corrida exitosa.

Nivel

simulado · integración real · no evaluado

Una simulación nunca se presenta como integración.

Cobertura por ruta

protegida · contradicha · parcial · no evaluada

Un bypass que logra un efecto convierte la cobertura declarada en contradicha.

La evidencia se reutiliza por propiedad, no por un digest global.

La admisión es una conjunción: autoridad exacta, política local, evidencia auténtica y aplicable de todas las rutas exigidas, observación vigente y presupuesto disponible. Un reporte puede satisfacer una de esas condiciones; nunca reemplaza a las demás ni crea un permiso. Una regla versionada, instalada por el operador fuera del agente, compara las dependencias materiales de cada afirmación con la configuración observada ahora: un campo ausente, desconocido o no comprobable significa no evaluado.

  • Aislamiento de archivos y procesosDepende del SO, el kernel, el backend, la imagen, la identidad, los privilegios, los montajes, los sockets y el lanzamiento efectivo. Un destino Git nuevo no lo invalida por sí solo; un montaje nuevo sí.
  • Salida de red contenidaDepende de reglas, rutas, DNS, proxies, auxiliares y endpoints alcanzables. Autorizar otro dominio nunca hereda un PASS, y un canario local no prueba el bloqueo de Internet.
  • El adaptador conserva el efecto exactoReutilizable como evidencia del mecanismo. No prueba nada sobre permisos, red, identidad ni el comportamiento de un proveedor real.
  • Integración con el destinoSólo se obtiene en ese destino autorizado. Un fixture local nunca se convierte en evidencia sobre GitHub real, y la ref y el preestado se releen en cada efecto.
  • Comportamiento del agenteAtado a modelo, versión, harness, herramientas, tarea y parámetros. Un modelo nuevo no invalida una barrera de SO probada sin depender de él; sí invalida extrapolar su comportamiento.

Un reporte verde nunca emite un Execution Grant, nunca reemplaza MFA ni quórum y nunca autoriza resultados futuros. Un SHA candidato nuevo exige otra aprobación exacta aunque toda la evidencia del entorno siga siendo aplicable.

Exportación exacta

Del laboratorio sólo sale el cambio que se revisó.

  1. 01Se detiene la escritura y el candidato pasa a cuarentena. El supervisor reconstruye un repositorio limpio desde una base confiable y el cambio, sin .git, hooks, helpers, configuración, submódulos ni filtros del agente.
  2. 02Sólo se aceptan archivos de texto regulares dentro de los paths de la tarea. Se rechazan symlinks, gitlinks, paths escapados y cambios en los controles.
  3. 03Se fijan el digest del artefacto, el SHA candidato, la base, el destino, la ref esperada y el diff completo del rango exportado. El autor del commit es metadata, no autorización.
  4. 04La revisión dice qué se enviará, a qué repositorio y rama, y qué automatizaciones va a disparar. Un Task Contract fija ese efecto exacto.
  5. 05El Execution Guardian revalida artefacto, ref, política, presupuesto y stop, y ejecuta un avance fast-forward o la creación de una ref con comparación atómica del preestado; en GitHub, sólo creación. No existe un force-push genérico.
  6. 06Se verifica el estado remoto. Un timeout conserva la reserva y un resultado incierto hasta reconciliar, sin reintentos a ciegas, y el recibo distingue un push autorizado de un código correcto o benigno.

En GitHub

En GitHub, la primera versión sólo crea una ref nueva y única en el SHA candidato exacto, en un repositorio privado, desechable y sin workflows. La API REST de GitHub no ofrece una precondición sobre el SHA anterior al actualizar una ref, así que las actualizaciones no están implementadas: la creación es atómica y nunca forzada, una carrera la hace fallar, y la postcondición relee la ref y exige que coincida con el bundle. La credencial es la sesión local del operador, más amplia que el mínimo. El gate previsto —un emisor confiable separado, una GitHub App de permisos mínimos y con la fuente del check fijada, en lugar de una Action controlada por el pull request— requiere una ceremonia administrativa humana, y hasta que exista no se afirma mínimo privilegio. Abrir un pull request es un efecto posterior y separado; merge, release, publish, deploy, pagos y borrados reales quedan fuera de esta versión.

Parada, liveness y presupuesto

Una parada durable fuera del agente

Cierra la admisión de nuevos efectos y la ruta de salida, detiene la unidad de ejecución completa —el cgroup o el contenedor, no sólo un grupo de procesos— y conserva la evidencia. Los efectos admitidos antes de la parada se reconcilian; nunca se reinterpretan como si no hubieran ocurrido.

Liveness vinculada

La admisión exige un heartbeat fresco de un observador fuera del agente. Su secuencia tiene que crecer —un heartbeat repetido no renueva nada— y cada uno habilita un lease de 3 segundos como máximo. Al vencer, se cierran admisiones y salida, se termina la unidad y la corrida queda incomplete. Un reinicio sigue detenido.

Presupuesto de campaña

Un ledger fuera de los agentes: como máximo 2 runners activos, 6 inicios, 30 minutos acumulados y costo de API cero para el fixture inicial. Todo reintento cuenta, y las sesiones nuevas o los reinicios no lo reponen. No crea autoridad ni una unidad de facturación.

Salidas acotadas

cannot_complete_within_scope y needs_authority son resultados válidos, no fallas. Llegan al operador como una propuesta estructurada y estricta —operación, recurso y motivo, cada uno en una sola línea de 512 caracteres como máximo— que no trae aprobación propia ni puede ampliar autoridad. No hay chat libre entre agentes.

El kit

Un binario, sin cuenta: un doctor y una sonda.

securestamp-harness forma parte del paquete @securestamp/mcp-guard. Los artefactos quedan en local, sin telemetría ni subida automática. Los reportes llevan referencias, hashes, motivos y métricas; nunca secretos, prompts, cadenas de pensamiento ni cuerpos de respuestas. Las corridas del laboratorio, los reportes firmados y su verificación offline, la exportación en cuarentena y el ledger de campaña viven en el paquete del Execution Guardian y en el tooling del laboratorio: Docker sobre Linux, con Inspect.

  • securestamp-harness doctor <profile.json> [--propose]

    Revisa sólo el HarnessProfileV1 que se le indica —backend, montajes declarados, rutas materiales, observador y límites— y distingue declarado, observado y desconocido. No recorre HOME, no busca secretos reales, no se conecta ni ejecuta el perfil. Con --propose, el reporte agrega una propuesta corregida con las credenciales redactadas, revisada otra vez con las mismas reglas; nada se aplica al host.

  • securestamp-harness probe codex-native

    Crea canarios sintéticos temporales y pasa por el lanzamiento real del sandbox de la versión instalada de Codex: una lectura y una escritura permitidas como controles positivos, y la lectura de un canario prohibido que tiene que quedar bloqueada. Un PASS acredita sólo esa ruta de archivos en esa versión y plataforma; un SKIP o un error de instrumentación nunca se convierte en PASS.

Harnesses

Evidencia por harness, versión y plataforma.

Los adaptadores traducen el lanzamiento y los eventos de una versión fijada del harness. Si un harness no tiene un hook bloqueante equivalente, la contención sigue siendo externa y ese hook se marca como no soportado en lugar de inventarlo. Linux es el backend ensayado; macOS y Windows no heredan sus resultados, y ningún logo de harness equivale a cobertura total.

  1. 01

    Claude Code · Codex

    Los primeros adaptadores, de a uno. El perfil nativo de macOS se evalúa por separado y no hereda nada de Linux.

  2. 02

    Cursor

    Después, con su propio perfil y una propiedad por paquete de trabajo.

  3. 03

    SDKs

    Luego los SDKs, con la misma semántica de evidencia.

  4. 04

    Agentes cloud

    Sólo se acredita el efecto en el destino realmente mediado; el entorno interno del agente queda no evaluado.

Para equipos que entrenan y evalúan modelos

Evaluaciones agénticas dentro de un perímetro que se probó.

Las evaluaciones de harnesses se integran con Inspect —sus tareas, muestras y sandbox Docker— para ciclos de vida, escenarios y límites. SecureStamp aporta el observador externo, los oráculos de efecto y la exportación del reporte, no otro scheduler, ni un evaluador LLM, ni otra colección de logs. Ningún scorer ejecuta el candidato en el proceso confiable, los reintentos de comandos con efectos están deshabilitados, y los conjuntos de desarrollo y de holdout se mantienen separados: el holdout nunca se usa para ajustar los controles.

  • Primero se inyectan intentos determinísticos, como prueba causal del mecanismo. Los harnesses y modelos reales corren después, dentro de un presupuesto autorizado, como evidencia de cómo se comporta el sistema.
  • Reproducir las solicitudes no reproduce un razonamiento estocástico. Se guardan versiones, parámetros disponibles, número de corridas, timeouts y denominadores; no se promete un replay idéntico.
  • Utilidad y contención se informan por separado, para que bloquear todo nunca cuente como un producto que funciona. Un resultado 0/N no es riesgo cero.

Dónde se detiene el laboratorio

Las evaluaciones de capacidad ofensiva —agentes que buscan vulnerabilidades reales— necesitan infraestructura sin ningún camino hacia Internet. El laboratorio no afirma resistencia frente a exploits del kernel o del hipervisor, ni aislamiento multi-tenant.

Lo que no prueba

Los límites, con el mismo peso que las capacidades.

No prueba alineamiento general

Pasar un corpus no prueba que un modelo esté alineado, no cubre ataques desconocidos y no sustituye la gobernanza.

No es una certificación

Resultados escritos y revisados por el mismo equipo no son una evaluación institucional independiente. La reproducción por terceros se acredita aparte.

No cubre toda exfiltración

Verifica rutas instrumentadas y postcondiciones concretas. La inferencia a través de un proveedor autorizado envía datos a ese proveedor, y eso se declara como exposición.

No lee el razonamiento

Los controles observan acciones y efectos. No necesitan cadenas de pensamiento ni afirman detectar intenciones psicológicas.

No protege frente al administrador del host

Esta versión confía en el supervisor que administra el operador: sin atestación de hardware, sin protección frente al administrador y sin resistencia a un escape del hipervisor.

Los hooks no son un perímetro

Los hooks y los modos de aprobación describen cómo se pide permiso; no acotan lo que un proceso puede alcanzar. approval_policy=never sólo dice cómo se aprueba.

Estado

Beta, con Linux y Docker como backend ensayado. Cada resultado lleva su nivel —simulado, integración real o no evaluado— junto con sus denominadores, versiones y configuración, y una ruta sin sonda queda no evaluada. Los pilotos con equipos externos y las ceremonias reales de aprobación humana vienen después y se van a informar del mismo modo; nada en esta página extrapola un resultado real desde una simulación.

Abierto a impugnación

El método se publica en esta página para que se lo pueda criticar y mejorar. El verificador de reportes funciona offline y sin cuenta; los schemas y los escenarios sintéticos están preparados para publicarse bajo una licencia que se revisa por separado. Un resultado erróneo se puede reportar sin publicar un exploit; una corrida posterior agrega una versión nueva y deja la anterior a la vista. Cuando el mismo equipo construye y evalúa un control, ese conflicto se declara.

Fuentes

Consultadas el 2026-09-25. Las fuentes sobre incidentes se citan como motivación de familias de fallos, no como reconstrucción forense.

Laboratorio de agentes y harnesses — método, evidencia y límites | SecureStamp Foundation