{"schemaVersion":1,"id":"https://lucioduran.com/es/projects/agent-tool-capabilities","url":"https://lucioduran.com/es/projects/agent-tool-capabilities","title":"Agent Tool Capabilities","description":"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.","language":"es","datePublished":"2026-11-09","dateModified":"2026-11-09","contentFormat":"text/markdown","content":"[Proyectos](<https://lucioduran.com/es/projects>) / Agent Tool Capabilities\n\n# Agent Tool Capabilities\n\nAutorización de herramientas por argumento, recurso y vencimiento, con presupuestos atómicos de llamadas y bytes y registros verificables de rechazo y revocación.\n\nAutor: [Lucio Durán](<https://lucioduran.com/es>) · Python 3.11.13 · Licencia: [MIT](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/LICENSE>)\n\nFicha publicada: 2026-11-09 · Ficha actualizada: 2026-11-09\n\n[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>)\n\n## Problema y utilidad para agentes\n\nEl 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.\n\nEl 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.\n\n## Arquitectura\n\n1. **Emitir permisos acotados.** Tokens de portador opacos y locales al proceso remiten a alcances inmutables de herramienta, argumentos, recursos virtuales y vencimiento.\n2. **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.\n3. **Registrar decisiones.** Los registros ordenados e inmutables omiten tokens y valores de argumentos. Los rechazos dejan intacto el almacén de notas sintético.\n\n- [Diseño y límites de confianza](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/design.md>)\n\n## Qué demuestra\n\n- Comprobaciones atómicas de presupuesto en dos pruebas de concurrencia con ocho hilos.\n- Restricciones estrictas de argumentos y normalización de recursos antes de ejecutar las funciones.\n- Orden de revocación con tratamiento explícito del trabajo ya admitido.\n\n## Resultados publicados\n\nEl 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.\n\nLos 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.\n\n### Comprobaciones de admisión y revocación\n\n| Comprobación | Resultado observado |\n| --- | --- |\n| Controles secuenciales permitidos | 3/3 admitidos |\n| Casos adversariales o con presupuesto agotado | 22/22 rechazados |\n| Llamadas rechazadas que modificaron el almacén | 0/22 |\n| Concurrencia sobre el presupuesto de llamadas, 64 intentos | 7 admitidos, 57 rechazados |\n| Concurrencia sobre el presupuesto de bytes, 64 intentos | 7 admitidos, 57 rechazados |\n| Revocación | La llamada admitida terminó; la posterior fue rechazada |\n\nEl 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.\n\n## Reproducir\n\nPython 3.11 o posterior, sin dependencias de ejecución.\n\nEjecutá 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.\n\n### Verificar la evidencia guardada\n\n```\ngit clone https://github.com/lucioduran/agent-tool-capabilities.git\ncd agent-tool-capabilities\ngit checkout f4d3df5ea1399da44f6eb90050933b32d3782918\npython -m experiments.verify results/reference.json\n```\n\n### Repetir el experimento local\n\n```\npython -m experiments.reproduce --output build/new-run.json\npython -m experiments.verify build/new-run.json\n```\n\n## Alcance y límites\n\n- 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.\n- 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.\n- Las rutas de recursos virtuales no aplican límites sobre enlaces simbólicos del sistema de archivos, redirecciones de URL ni el sistema operativo.\n- 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.\n\n- [Artículo de arquitectura relacionado](<https://lucioduran.com/es/blog/capability-based-security-wasi-preview2>)\n\n## Fuentes y revisión\n\nEl 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.\n\n- Revisión consultada: [` f4d3df5ea1399da44f6eb90050933b32d3782918 `](<https://github.com/lucioduran/agent-tool-capabilities/commit/f4d3df5ea1399da44f6eb90050933b32d3782918>)\n- Revisión registrada por el experimento: [` 7397b9c40f0f284c108f584966b8d6c803ebebcd `](<https://github.com/lucioduran/agent-tool-capabilities/commit/7397b9c40f0f284c108f584966b8d6c803ebebcd>)\n- Fecha del informe (UTC): 2026-11-09T18:28:21.140506+00:00\n- Release publicada: [v1.0.0](<https://github.com/lucioduran/agent-tool-capabilities/releases/tag/v1.0.0>) · 2026-11-09T18:31:17Z\n\n- [README y uso](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/README.md>)\n- [Evidencia original](<https://raw.githubusercontent.com/lucioduran/agent-tool-capabilities/f4d3df5ea1399da44f6eb90050933b32d3782918/results/reference.json>)\n- [Licencia MIT](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/LICENSE>)\n- [Diseño y límites de confianza](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/design.md>)\n- [Metodología de medición](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/evidence.md>)\n- [Cobertura de pruebas registrada](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/results/coverage.txt>)","headings":[{"level":1,"text":"Agent Tool Capabilities","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#title"},{"level":2,"text":"Problema y utilidad para agentes","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#problem"},{"level":2,"text":"Arquitectura","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#architecture"},{"level":2,"text":"Qué demuestra","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#demonstrates"},{"level":2,"text":"Resultados publicados","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#results"},{"level":3,"text":"Comprobaciones de admisión y revocación","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#results-Admission%20and%20revocation%20checks"},{"level":2,"text":"Reproducir","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#reproduce"},{"level":3,"text":"Verificar la evidencia guardada","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#reproduce-replay"},{"level":3,"text":"Repetir el experimento local","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#reproduce-experiment"},{"level":2,"text":"Alcance y límites","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#scope"},{"level":2,"text":"Fuentes y revisión","url":"https://lucioduran.com/es/projects/agent-tool-capabilities#sources"}],"sections":[{"heading":"Agent Tool Capabilities","level":1,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities","content":"[Proyectos](<https://lucioduran.com/es/projects>) / Agent Tool Capabilities"},{"heading":"Agent Tool Capabilities","level":1,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#title","content":"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.\n\nAutor: [Lucio Durán](<https://lucioduran.com/es>) · Python 3.11.13 · Licencia: [MIT](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/LICENSE>)\n\nFicha publicada: 2026-11-09 · Ficha actualizada: 2026-11-09\n\n[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>)"},{"heading":"Problema y utilidad para agentes","level":2,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#problem","content":"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.\n\nEl 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."},{"heading":"Arquitectura","level":2,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#architecture","content":"1. **Emitir permisos acotados.** Tokens de portador opacos y locales al proceso remiten a alcances inmutables de herramienta, argumentos, recursos virtuales y vencimiento.\n2. **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.\n3. **Registrar decisiones.** Los registros ordenados e inmutables omiten tokens y valores de argumentos. Los rechazos dejan intacto el almacén de notas sintético.\n\n- [Diseño y límites de confianza](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/design.md>)"},{"heading":"Qué demuestra","level":2,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#demonstrates","content":"- Comprobaciones atómicas de presupuesto en dos pruebas de concurrencia con ocho hilos.\n- Restricciones estrictas de argumentos y normalización de recursos antes de ejecutar las funciones.\n- Orden de revocación con tratamiento explícito del trabajo ya admitido."},{"heading":"Resultados publicados","level":2,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#results","content":"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.\n\nLos 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."},{"heading":"Comprobaciones de admisión y revocación","level":3,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#results-Admission%20and%20revocation%20checks","content":"| Comprobación | Resultado observado |\n| --- | --- |\n| Controles secuenciales permitidos | 3/3 admitidos |\n| Casos adversariales o con presupuesto agotado | 22/22 rechazados |\n| Llamadas rechazadas que modificaron el almacén | 0/22 |\n| Concurrencia sobre el presupuesto de llamadas, 64 intentos | 7 admitidos, 57 rechazados |\n| Concurrencia sobre el presupuesto de bytes, 64 intentos | 7 admitidos, 57 rechazados |\n| Revocación | La llamada admitida terminó; la posterior fue rechazada |\n\nEl 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."},{"heading":"Reproducir","level":2,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#reproduce","content":"Python 3.11 o posterior, sin dependencias de ejecución.\n\nEjecutá 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."},{"heading":"Verificar la evidencia guardada","level":3,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#reproduce-replay","content":"```\ngit clone https://github.com/lucioduran/agent-tool-capabilities.git\ncd agent-tool-capabilities\ngit checkout f4d3df5ea1399da44f6eb90050933b32d3782918\npython -m experiments.verify results/reference.json\n```"},{"heading":"Repetir el experimento local","level":3,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#reproduce-experiment","content":"```\npython -m experiments.reproduce --output build/new-run.json\npython -m experiments.verify build/new-run.json\n```"},{"heading":"Alcance y límites","level":2,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#scope","content":"- 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.\n- 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.\n- Las rutas de recursos virtuales no aplican límites sobre enlaces simbólicos del sistema de archivos, redirecciones de URL ni el sistema operativo.\n- 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.\n\n- [Artículo de arquitectura relacionado](<https://lucioduran.com/es/blog/capability-based-security-wasi-preview2>)"},{"heading":"Fuentes y revisión","level":2,"url":"https://lucioduran.com/es/projects/agent-tool-capabilities#sources","content":"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.\n\n- Revisión consultada: [` f4d3df5ea1399da44f6eb90050933b32d3782918 `](<https://github.com/lucioduran/agent-tool-capabilities/commit/f4d3df5ea1399da44f6eb90050933b32d3782918>)\n- Revisión registrada por el experimento: [` 7397b9c40f0f284c108f584966b8d6c803ebebcd `](<https://github.com/lucioduran/agent-tool-capabilities/commit/7397b9c40f0f284c108f584966b8d6c803ebebcd>)\n- Fecha del informe (UTC): 2026-11-09T18:28:21.140506+00:00\n- Release publicada: [v1.0.0](<https://github.com/lucioduran/agent-tool-capabilities/releases/tag/v1.0.0>) · 2026-11-09T18:31:17Z\n\n- [README y uso](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/README.md>)\n- [Evidencia original](<https://raw.githubusercontent.com/lucioduran/agent-tool-capabilities/f4d3df5ea1399da44f6eb90050933b32d3782918/results/reference.json>)\n- [Licencia MIT](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/LICENSE>)\n- [Diseño y límites de confianza](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/design.md>)\n- [Metodología de medición](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/evidence.md>)\n- [Cobertura de pruebas registrada](<https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/results/coverage.txt>)"}],"links":[{"text":"Proyectos","url":"https://lucioduran.com/es/projects"},{"text":"Lucio Durán","url":"https://lucioduran.com/es"},{"text":"MIT","url":"https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/LICENSE"},{"text":"Repositorio","url":"https://github.com/lucioduran/agent-tool-capabilities"},{"text":"Evidencia original","url":"https://raw.githubusercontent.com/lucioduran/agent-tool-capabilities/f4d3df5ea1399da44f6eb90050933b32d3782918/results/reference.json"},{"text":"Release v1.0.0","url":"https://github.com/lucioduran/agent-tool-capabilities/releases/tag/v1.0.0"},{"text":"Diseño y límites de confianza","url":"https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/design.md"},{"text":"Artículo de arquitectura relacionado","url":"https://lucioduran.com/es/blog/capability-based-security-wasi-preview2"},{"text":"f4d3df5ea1399da44f6eb90050933b32d3782918","url":"https://github.com/lucioduran/agent-tool-capabilities/commit/f4d3df5ea1399da44f6eb90050933b32d3782918"},{"text":"7397b9c40f0f284c108f584966b8d6c803ebebcd","url":"https://github.com/lucioduran/agent-tool-capabilities/commit/7397b9c40f0f284c108f584966b8d6c803ebebcd"},{"text":"v1.0.0","url":"https://github.com/lucioduran/agent-tool-capabilities/releases/tag/v1.0.0"},{"text":"README y uso","url":"https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/README.md"},{"text":"Licencia MIT","url":"https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/LICENSE"},{"text":"Metodología de medición","url":"https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/evidence.md"},{"text":"Cobertura de pruebas registrada","url":"https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/results/coverage.txt"}],"structuredData":[{"@context":"https://schema.org","@graph":[{"@type":"Person","@id":"https://lucioduran.com/#person","name":"Lucio Durán","url":"https://lucioduran.com/"},{"@type":"WebSite","@id":"https://lucioduran.com/#website","url":"https://lucioduran.com/","name":"Lucio Durán","inLanguage":["en","es"],"publisher":{"@id":"https://lucioduran.com/#person"}},{"@type":"WebPage","@id":"https://lucioduran.com/es/projects/agent-tool-capabilities#page","url":"https://lucioduran.com/es/projects/agent-tool-capabilities","name":"Agent Tool Capabilities","description":"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.","inLanguage":"es","author":{"@id":"https://lucioduran.com/#person"},"publisher":{"@id":"https://lucioduran.com/#person"},"isPartOf":{"@id":"https://lucioduran.com/#website"},"isAccessibleForFree":true,"mainEntity":{"@id":"https://lucioduran.com/projects/agent-tool-capabilities#software"},"datePublished":"2026-11-09","dateModified":"2026-11-09","breadcrumb":{"@id":"https://lucioduran.com/es/projects/agent-tool-capabilities#breadcrumb"}},{"@type":"SoftwareSourceCode","@id":"https://lucioduran.com/projects/agent-tool-capabilities#software","name":"Agent Tool Capabilities","description":"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.","inLanguage":"es","url":"https://lucioduran.com/es/projects/agent-tool-capabilities","codeRepository":"https://github.com/lucioduran/agent-tool-capabilities","programmingLanguage":"Python","runtimePlatform":"Python 3.11.13","license":"https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/LICENSE","version":"v1.0.0","identifier":{"@type":"PropertyValue","propertyID":"git-commit","value":"f4d3df5ea1399da44f6eb90050933b32d3782918"},"author":{"@type":"Person","@id":"https://lucioduran.com/#person","name":"Lucio Durán","url":"https://lucioduran.com"},"isAccessibleForFree":true,"citation":["https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/README.md","https://raw.githubusercontent.com/lucioduran/agent-tool-capabilities/f4d3df5ea1399da44f6eb90050933b32d3782918/results/reference.json","https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/design.md","https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/docs/evidence.md","https://github.com/lucioduran/agent-tool-capabilities/blob/f4d3df5ea1399da44f6eb90050933b32d3782918/results/coverage.txt","https://github.com/lucioduran/agent-tool-capabilities/releases/tag/v1.0.0"],"publisher":{"@id":"https://lucioduran.com/#person"},"mainEntityOfPage":{"@id":"https://lucioduran.com/es/projects/agent-tool-capabilities#page"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Proyectos","item":"https://lucioduran.com/es/projects"},{"@type":"ListItem","position":2,"name":"Agent Tool Capabilities","item":"https://lucioduran.com/es/projects/agent-tool-capabilities"}],"@id":"https://lucioduran.com/es/projects/agent-tool-capabilities#breadcrumb"}]}],"contentHash":"506b4f4f8a9bd66a4bfb130ecced26383c98af0f958c3c2222be21b0f02f5993","provenance":{"method":"Deterministic serialization of the server-rendered main element","source":"https://lucioduran.com/es/projects/agent-tool-capabilities","hashAlgorithm":"sha256","hashScope":"JSON document fields before contentHash and provenance","sourceHTMLBytes":45013,"contentBytes":6705}}
