<!-- Canonical: https://lucioduran.com/es/projects/agent-tool-capabilities
Language: es
Content-SHA256: 506b4f4f8a9bd66a4bfb130ecced26383c98af0f958c3c2222be21b0f02f5993
-->

[Proyectos](<https://lucioduran.com/es/projects>) / Agent Tool Capabilities

# Agent Tool Capabilities

Autorización de herramientas por argumento, recurso y vencimiento, con presupuestos atómicos de llamadas y bytes y registros verificables de rechazo y revocación.

Autor: [Lucio Durán](<https://lucioduran.com/es>) · Python 3.11.13 · Licencia: [MIT](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/LICENSE>)

Ficha publicada: 2026-11-09 · Ficha actualizada: 2026-11-09

[Repositorio](<https://github.com/lucioduran/agent-tool-capabilities>) · [Evidencia original](<https://raw.githubusercontent.com/lucioduran/agent-tool-capabilities/f4d3df5ea1399da44f6eb90050933b32d3782918/results/reference.json>) · [Release v1.0.0](<https://github.com/lucioduran/agent-tool-capabilities/releases/tag/v1.0.0>)

## Problema y utilidad para agentes

El nombre de una herramienta no limita sus argumentos, su acceso a recursos ni su costo. Las solicitudes concurrentes pueden superar un presupuesto si la autorización no se aplica antes de producir efectos.

El agente recibe únicamente autoridad de ejecución; un anfitrión confiable conserva la emisión de permisos, la revocación y el registro de herramientas.

## Arquitectura

1. **Emitir permisos acotados.** Tokens de portador opacos y locales al proceso remiten a alcances inmutables de herramienta, argumentos, recursos virtuales y vencimiento.
2. **Reservar de forma atómica.** Un bloqueo compartido de admisión valida el alcance y la revocación, y reserva tanto llamadas como bytes de entrada antes de ejecutar una función.
3. **Registrar decisiones.** Los registros ordenados e inmutables omiten tokens y valores de argumentos. Los rechazos dejan intacto el almacén de notas sintético.

- [Diseño y límites de confianza](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/design.md>)

## Qué demuestra

- Comprobaciones atómicas de presupuesto en dos pruebas de concurrencia con ocho hilos.
- Restricciones estrictas de argumentos y normalización de recursos antes de ejecutar las funciones.
- Orden de revocación con tratamiento explícito del trabajo ya admitido.

## Resultados publicados

El experimento local fijo contiene 25 casos secuenciales, dos pruebas de concurrencia con 64 intentos y una revocación durante la ejecución controlada mediante eventos.

Los casos secuenciales se reproducen con herramientas de notas propias que operan en memoria. La evidencia de concurrencia registra admisiones, rechazos y efectos sobre los recursos; el verificador comprueba la aritmética sin reproducir la planificación histórica de los hilos.

### Comprobaciones de admisión y revocación

| Comprobación | Resultado observado |
| --- | --- |
| Controles secuenciales permitidos | 3/3 admitidos |
| Casos adversariales o con presupuesto agotado | 22/22 rechazados |
| Llamadas rechazadas que modificaron el almacén | 0/22 |
| Concurrencia sobre el presupuesto de llamadas, 64 intentos | 7 admitidos, 57 rechazados |
| Concurrencia sobre el presupuesto de bytes, 64 intentos | 7 admitidos, 57 rechazados |
| Revocación | La llamada admitida terminó; la posterior fue rechazada |

El experimento confirma estos casos sintéticos, no una resistencia general a ataques. No afirma resultados de capacidad de procesamiento, latencia ni auditoría de seguridad independiente.

## Reproducir

Python 3.11 o posterior, sin dependencias de ejecución.

Ejecutá las mediciones en una carpeta de salida nueva y los trabajos pesados de a uno. Dentro de la serie original de proyectos, usá el ejecutor compartido benchmark\_lock.py. Los comandos siguientes usan sintaxis de shell POSIX.

### Verificar la evidencia guardada

```
git clone https://github.com/lucioduran/agent-tool-capabilities.git
cd agent-tool-capabilities
git checkout f4d3df5ea1399da44f6eb90050933b32d3782918
python -m experiments.verify results/reference.json
```

### Repetir el experimento local

```
python -m experiments.reproduce --output build/new-run.json
python -m experiments.verify build/new-run.json
```

## Alcance y límites

- El código Python arbitrario dentro del proceso intermediario puede eludir este límite de autorización de la aplicación. No es un entorno aislado por el sistema operativo.
- El robo de un token de portador transfiere la autoridad restante. Los permisos son locales al proceso y no tienen autenticación, persistencia ni aplicación distribuida.
- Las rutas de recursos virtuales no aplican límites sobre enlaces simbólicos del sistema de archivos, redirecciones de URL ni el sistema operativo.
- La revocación no cancela llamadas admitidas. Los fallos consumen presupuesto y pueden dejar efectos parciales. Los registros de auditoría están en memoria, no tienen límite y no están firmados.

- [Artículo de arquitectura relacionado](<https://lucioduran.com/es/blog/capability-based-security-wasi-preview2>)

## Fuentes y revisión

El informe de referencia registra la fecha, la revisión de implementación sin cambios locales, los hashes de fuentes y el hardware. La release agrega archivos de publicación; los hashes establecen consistencia, no autenticidad.

- Revisión consultada: [` f4d3df5ea1399da44f6eb90050933b32d3782918 `](<https://github.com/lucioduran/agent-tool-capabilities/commit/f4d3df5ea1399da44f6eb90050933b32d3782918>)
- Revisión registrada por el experimento: [` 7397b9c40f0f284c108f584966b8d6c803ebebcd `](<https://github.com/lucioduran/agent-tool-capabilities/commit/7397b9c40f0f284c108f584966b8d6c803ebebcd>)
- Fecha del informe (UTC): 2026-11-09T18:28:21.140506+00:00
- Release publicada: [v1.0.0](<https://github.com/lucioduran/agent-tool-capabilities/releases/tag/v1.0.0>) · 2026-11-09T18:31:17Z

- [README y uso](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/README.md>)
- [Evidencia original](<https://raw.githubusercontent.com/lucioduran/agent-tool-capabilities/f4d3df5ea1399da44f6eb90050933b32d3782918/results/reference.json>)
- [Licencia MIT](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/LICENSE>)
- [Diseño y límites de confianza](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/design.md>)
- [Metodología de medición](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/evidence.md>)
- [Cobertura de pruebas registrada](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/results/coverage.txt>)
