Pinguy Learning
Temario · lección 22 de 74
0Empieza aquí
1Por qué fallan los agentes
2Qué es un harness
3Patrones de agentes
4Herramientas
5Ingeniería de contexto
6El repositorio como memoria
7Tareas largas
8Alcance y “hecho” de verdad
9Observabilidad y estado limpio
10Loops y grafos
11Harness reales
12Proyecto final
Herramientas· 7 min de lectura

Permisos y límites

En 30 segundos

Por defecto, una herramienta debe considerarse peligrosa hasta demostrar lo contrario. Clasifica qué es solo lectura, qué puede ir en paralelo y qué nunca se aprueba sola.

El llavero del portero

Un portero tiene llaves de todo el edificio, pero no abre cualquier puerta a cualquiera. Las zonas delicadas (la sala de contadores, el cuarto de máquinas) exigen permiso aunque quien pregunte parezca de fiar.

Con un agente pasa lo mismo: dar acceso a herramientas lo hace productivo, pero un acceso sin límites trae tres riesgos que cita la fuente: operaciones destructivas (como rm -rf o DROP TABLE), condiciones de carrera por llamadas simultáneas y violaciones silenciosas de política por permisos mal configurados.

Regla 1: «fail-closed» por defecto

Fail-closed significa que, si no sabes, se cierra. Una herramienta nueva se trata como no de solo lectura y no apta para ejecución simultánea, salvo que alguien la marque explícitamente como segura. Así se evita corrupción de datos por escrituras concurrentes.

Regla 2: la seguridad depende de la llamada, no solo de la herramienta

La misma herramienta puede ser segura con unas entradas y peligrosa con otras. Por ejemplo, con una shell:

Seguras (pueden ir a la vez):   cat archivo.txt   |  grep "patrón" src/  |  ls -la
Inseguras (una a una):          rm -rf build/     |  npm install         |  sed -i ... *.ts

El motor agrupa las llamadas: las seguras corren en paralelo; cualquier insegura abre un tramo en serie.

Regla 3: una cadena de permisos con orden estricto

Cuando hay varias fuentes de reglas, el orden de prioridad de la fuente es:

Política (organización) -> Ajustes de usuario -> Reglas de proyecto -> Overrides locales -> Permisos de sesión

Cada capa puede permitir, denegar o «aplazar» a la siguiente. Ojo: evaluar permisos tiene efectos laterales (registrar denegaciones, cambiar de modo tras un rechazo), así que no cachees resultados entre llamadas.

Regla 4: zonas que nunca se aprueban solas

Hay rutas y comandos que deberían preguntar siempre, incluso en modo automático. Ejemplo de la fuente:

protected_paths: [/etc/**, /usr/**, node_modules/**, .git/**]
protected_commands: ["rm -rf*", "DROP TABLE*", "DELETE FROM*", "mkfs*"]

Checklist antes de activar una herramienta

- [ ] ¿Es de solo lectura? (sí / no / depende de los argumentos)
- [ ] ¿Es segura en paralelo?
- [ ] Modo por defecto: preguntar o denegar
- [ ] Rutas y comandos protegidos definidos
- [ ] Probada con entradas seguras (se aprueban) e inseguras (preguntan)
- [ ] Fallos registrados sin dejar estado a medias

Las reglas del proyecto viven en archivos como los que veremos en AGENTS.md corto.

Comprueba lo aprendido

¿Qué significa tratar las herramientas como «fail-closed»?

Así una herramienta nueva es segura por defecto; hay que optar explícitamente por darle permisos o concurrencia.

Fuentes: Learn Harness Engineering, skill harness-creator (Tool Registry and Safety Pattern)