AgentLaw

Apache-2.0 · spec-first · v0.1

AgentLaw

Un contrato de seguridad determinista para agentes de IA.

Cada acción de un agente se verifica contra reglas firmadas por su operador — reglas que ningún prompt puede reescribir.

A un modelo se lo puede persuadir. A una política firmada, no.

Ver en GitHub

La confianza no es una estrategia de seguridad.

Los agentes de IA ya no solo conversan: ejecutan. Mueven archivos, envían pagos, publican código — con credenciales reales. Hasta hoy, la única barrera entre un agente y una acción irreversible eran instrucciones escritas en su propio prompt. Y la inyección de prompts es, precisamente, el arte de derrotar esas instrucciones.

AgentLaw parte de una premisa distinta: las decisiones críticas no se le piden al modelo — se verifican fuera de él. Cada acción pasa por un evaluador externo, determinista y firmado, al que no se puede persuadir, negociar ni reescribir.

El evaluador no es otra IA.

Es un motor determinista: reglas compiladas y condiciones tipadas que producen el mismo veredicto ante la misma entrada, siempre. No opina, no interpreta, no se cansa y no se convence. Ahí reside la garantía: donde un modelo puede ser engañado, una regla compilada no puede.

Cómo funciona

  1. Declare

    Escriba sus reglas una sola vez, en un manifiesto legible: qué está permitido, qué exige aprobación humana, qué no ocurre jamás.

  2. Firme

    El manifiesto se sella con criptografía Ed25519. La llave privada nunca reside donde corre el agente: relajar una regla requiere la llave — no un argumento convincente.

  3. Aplique

    Cada llamada a una herramienta atraviesa el motor de políticas — sin ningún modelo en el circuito — y recibe un veredicto: permitir, requerir aprobación o denegar. Lo no contemplado se deniega por defecto, y cada decisión queda en un registro de auditoría encadenado por hash, imposible de alterar sin dejar rastro.

Pruebe el motor

Elija una política, pida que el agente haga algo y lea el veredicto: permitido, detenido a la espera de una persona, o denegado — junto con la regla exacta que lo decidió.

El motor corre en este navegador. El mismo parser, las mismas reglas compiladas y el mismo evaluate() que en un punto de aplicación. Ninguna consulta sale de esta página.

Un agente que consulta expedientes, redacta y envía correo. Leer es libre; todo lo que sale del estudio o no se puede deshacer se detiene ante una persona.

La política en vigor

Se parsea y compila acá. La regla que decide queda resaltada.

apiVersion: agentlaw/v1alpha1kind: PolicyManifestmetadata:  name: lawfirm-assistant  version: 0.1.0defaults:  effect: denyrules:  - id: casefile-read    match: { server: lawfirm, tool: ["case_search", "doc_summarize", "deadline_list"] }    effect: allow  - id: deadline-write    match: { server: lawfirm, tool: deadline_create }    effect: allow  - id: internal-mail    match: { server: lawfirm, tool: email_send }    when:      - { arg: to, op: endsWith, value: "@estudio.legal" }    effect: allow    else: approve    reason: "el correo que sale del estudio lo lee una persona antes de enviarse"  - id: client-documents    match: { server: lawfirm, tool: doc_share }    when:      - { arg: recipient_is_client, op: eq, value: true }    effect: allow    else: approve    reason: "el material del cliente solo va al cliente, salvo que alguien lo apruebe"  - id: court-filing    match: { server: lawfirm, tool: filing_submit }    effect: approve    reason: "una presentación no se puede retirar: la aprueba una persona"  - id: never-destroy    match: { server: lawfirm, tool: ["case_delete", "doc_purge"] }    effect: forbid    reason: "un agente no destruye expedientes"limits:  - id: mail-burst    match: { server: lawfirm, tool: email_send }    max: 2    per: 1m    onExceeded: deny 

Lo que intenta el agente

Cada botón es una llamada a una herramienta. Repita una y encontrará un límite de frecuencia.

Registro de auditoría

Vacío. Cada decisión — también las denegadas — se agrega acá, encadenada por hash a la anterior.

No existe una lista fija de acciones prohibidas — cada implementación declara la suya.

AgentLaw aporta el mecanismo — el veredicto determinista, la aprobación humana, la auditoría. La política la declara cada implementación. Tres ejemplos reales, de las políticas de ejemplo del repositorio:

Agente de código en una workstation

Lee y edita el proyecto libremente; los push y borrados fuera del sandbox requieren aprobación humana; comandos destructivos, nunca.

examples/policies/dev-workstation.yaml

Agente de pagos y facturación

Los pagos por debajo de un umbral se ejecutan solos; por encima, un humano aprueba; los reembolsos siempre pasan por una persona.

examples/policies/payments-capped.yaml

Agente de investigación o soporte

Modo solo-lectura: puede consultarlo todo, no puede modificar nada.

examples/policies/readonly.yaml

Seguridad honesta: qué detiene, y qué no.

Ninguna herramienta seria promete protección total. AgentLaw define su alcance con precisión — y lo publica.

Detiene

  • Llamadas a herramientas inducidas por inyección de prompts
  • Un agente confundido o excesivamente diligente
  • Credenciales con más alcance del necesario
  • Desvíos silenciosos de comportamiento — mediante la auditoría
  • Relajación no autorizada de la política — mediante la firma

No detiene

  • Contenido hostil devuelto por herramientas permitidas — la política impide que ese texto actúe, no que se lea
  • Un atacante que posee la llave privada de firma
  • Un atacante con privilegios de administrador en el host
  • Canales laterales dentro de una herramienta permitida

AgentLaw complementa — no reemplaza — la especificación de autorización de MCP y las mitigaciones del OWASP LLM Top 10.

El hook PreToolUse y la consola de governance son patrones de integración: el núcleo es embebible dondequiera que actúe un agente.

Tres formas de desplegarlo — la misma política firmada

Local

Una línea en su configuración MCP envuelve cualquier servidor MCP, sin modificar clientes ni servidores.

Organización

Un gateway desplegado una vez, delante de sus servidores MCP remotos, cubre a todo el equipo.

Integrado

El motor central no depende de MCP — se embebe directamente en su plataforma de agentes.

{
  "mcpServers": {
    "safe-fs": {
      "command": "npx",
      "args": ["-y", "@agentlaw/gateway",
               "--policy", "policy.yaml", "--trust", "policy.pub",
               "--", "npx", "-y",
               "@modelcontextprotocol/server-filesystem", "C:/sandbox"]
    }
  }
}

Quickstart

Un solo comando genera una política firmada y lista para correr — plantilla, umbrales, par de llaves:

El CLI, de un vistazo

agentlaw wizard .Configuración guiada: elige una plantilla, pregunta sus umbrales y escribe un policy.yaml firmado con su par de llaves.
agentlaw signFirma un manifiesto de política con su llave privada Ed25519.
agentlaw verifyVerifica la firma de un manifiesto contra una llave pública de confianza.
agentlaw explainSimulación en seco: muestra el veredicto que recibiría una llamada, sin ejecutar nada.
agentlaw audit verifyComprueba la integridad del registro de auditoría encadenado por hash.

Libre, abierto y spec-first.

La seguridad de los agentes de IA es una responsabilidad compartida de todos los que construyen software. AgentLaw es open source bajo licencia Apache-2.0 y diseñado spec-first: las especificaciones (RFC-0001, RFC-0002) están publicadas y abiertas a discusión antes que el código.

El motor de seguridad — políticas, firma, enforcement y auditoría — es libre y auto-hosteable, y lo será siempre.

Su lectura crítica es bienvenida.

AgentLaw está en versión 0.1 y sus RFC están en borrador. Esta página acompaña la maduración del producto — el feedback sobre la especificación vale tanto como el código.