Un agente de IA puede hacer más que responder solicitudes.
Puede:
- Cambiar datos
- Enviar solicitudes a API
- Crear archivos
- O ejecutar procesos
Es decir, puede ejecutar acciones en el mundo real.
Y aquí aparece un nuevo problema.
Porque no todas las acciones son seguras.
Un agente puede:
- Eliminar datos
- Gastar dinero
- O hacer una solicitud a un sistema externo
Incluso si no lo planeaste.
Por eso no se le puede permitir hacer todo.
Necesita límites.
Qué son las acciones permitidas (Permissions)

Un agente no tiene acceso directo a las herramientas.
No puede por sí solo:
- Abrir un archivo
- Cambiar un registro en la base de datos
- O enviar una solicitud a API
Para ejecutar una acción, tiene que usar una herramienta.
Y solo las herramientas que tiene permitido invocar.
Esta lista de acciones permitidas es exactamente sus Permissions.
Definen:
- Qué puede hacer el agente
- Y qué no
Niveles de permisos
No todas las acciones son igual de seguras.
Por eso los permisos suelen dividirse por niveles, según cuánto puede afectar el agente al sistema.
Read
El agente puede obtener datos. Pero no puede cambiarlos.
Por ejemplo: leer un registro en la base, abrir un archivo, revisar estado.
Write
El agente puede crear o cambiar datos.
Por ejemplo: crear un registro nuevo, actualizar un archivo, guardar un resultado.
Execute
El agente puede invocar procesos o servicios externos.
Por ejemplo: enviar una solicitud a API, ejecutar un script, llamar un webhook.
Delete
El agente puede eliminar datos o registros.
Este es el nivel más peligroso.
Porque la acción es irreversible.
Cuanto más alto el nivel de permiso, más puede cambiar el agente en el mundo.
Por eso se le da solo el acceso necesario para completar la tarea.
Por qué no hay que dar acceso a todo
El agente no entiende las consecuencias de sus acciones.
Elige la herramienta que parece más adecuada en ese contexto.
| Nivel | Qué está permitido | Riesgo |
|---|---|---|
| Read | Obtener datos | Bajo |
| Write | Crear o cambiar | Medio |
| Execute | Ejecutar procesos o API | Alto |
| Delete | Eliminar datos | Crítico |
Pero "adecuada" no siempre significa "segura".
El agente puede:
- Guardar datos incorrectos
- Invocar una API de pago
- O eliminar un archivo importante
Solo porque eso ayuda a completar la tarea.
Si le das acceso a todo, puede hacer más de lo que esperabas.
Quién define los límites
El agente no elige sus permisos por sí mismo.
No decide:
- A qué herramientas tiene acceso
- Qué acciones puede ejecutar
Estos límites los define una persona.
O un sistema que define:
- Qué herramientas están permitidas
- Qué acciones se pueden ejecutar
- Y con qué nivel de acceso
El agente solo trabaja dentro de estas reglas.
Principio de privilegio mínimo
Hay una regla simple:
Al agente se le da solo el acceso necesario para completar una tarea concreta.
Nada más.
Esto se llama el principio de privilegio mínimo (Least Privilege).
Si el agente solo necesita acceso de lectura, no debe recibir acceso de escritura.
Si necesita crear un archivo, no debe poder eliminarlo.
Menos permisos significa menos riesgos.
En código se ve así
Abajo está el mismo principio en formato simple:
definimos explícitamente qué puede hacer el agente y obligamos al sistema a comprobarlo antes de cada acción.
1) Tenemos herramientas con distintos niveles de riesgo
def read_user(user_id: int):
return {"id": user_id, "status": "active"}
def update_user(user_id: int, status: str):
return {"id": user_id, "status": status}
def send_webhook(event: str):
return {"sent": event}
def delete_user(user_id: int):
return {"deleted": user_id}
TOOLS = {
"read_user": {"level": "read", "handler": read_user},
"update_user": {"level": "write", "handler": update_user},
"send_webhook": {"level": "execute", "handler": send_webhook},
"delete_user": {"level": "delete", "handler": delete_user},
}
2) Aquí definimos permisos para este agente
AGENT_PERMISSIONS = {"read", "write"} # execute y delete están prohibidos
3) El modelo pide ejecutar una acción
model_output = {
"action": "update_user",
"parameters": {"user_id": 42, "status": "paused"},
}
4) El sistema comprueba permisos antes de ejecutar
def run_action(call: dict):
action = call["action"]
params = call["parameters"]
tool = TOOLS.get(action)
if tool is None:
return {"error": "Herramienta no encontrada"}
if tool["level"] not in AGENT_PERMISSIONS:
return {"error": "Acción no permitida"}
return tool["handler"](**params)
5) Si el nivel está permitido, ejecutamos la acción
result = run_action(model_output)
# {"id": 42, "status": "paused"}
Si el modelo pide delete_user, el sistema devuelve:
{
"error": "Acción no permitida"
}
Ejemplo completo de implementación con LLM conectada
Analogía de la vida real
Imagina que le das a alguien las llaves de tu apartamento.
Si solo necesita regar las plantas, le das la llave de la puerta.
Pero no le das:
- La llave de la caja fuerte
- Acceso a la app bancaria
- O el PIN de la tarjeta
Porque cuanto más acceso, más se puede cambiar.
Incluso por accidente.
Por eso se dan solo las llaves necesarias para la tarea concreta.
En resumen
Un agente puede ejecutar acciones a través de herramientas.
Pero se le permite:
- Solo ciertas herramientas
- Solo ciertos tipos de acción
- Y solo en un nivel de acceso concreto
Normalmente se usa el principio de privilegio mínimo:
El agente recibe solo el acceso necesario para completar la tarea.
FAQ
Q: ¿Puede un agente ejecutar cualquier acción mediante herramientas?
A: No. Solo puede usar las herramientas y acciones que tiene permitidas.
Q: ¿Quién define lo que el agente puede hacer?
A: Una persona o un sistema que define la lista de herramientas disponibles y su nivel de acceso.
Q: ¿Qué es el principio de privilegio mínimo?
A: Es una regla según la cual el agente recibe solo el acceso necesario para una tarea concreta.
Qué sigue
Ahora ya sabes qué puede hacer un agente.
Pero incluso con restricciones, puede:
- Quedarse en un bucle
- Repetir las mismas acciones
- O gastar recursos
Por eso, a veces el agente tiene que detenerse por sí mismo.
O ser detenido por el sistema.