flowchart TD
A[Modelo propone acción] --> B{¿Tool habilitada?}
B -- No --> X[Bloquear]
B -- Sí --> C{¿Requiere aprobación?}
C -- No --> D[Validar y ejecutar]
C -- Sí --> E[Solicitar autorización humana]
E --> F{¿Aprobada?}
F -- No --> X
F -- Sí --> D
D --> G[Registrar resultado]
Permisos
Llegamos al punto en que el sistema ya puede hacer mucho más que generar texto.
Puede disponer de tools.
Puede invocarlas mediante tool calling.
Puede comunicarse con servicios mediante APIs.
Puede utilizar connectors.
Puede descubrir capacidades mediante MCP.
Desde una perspectiva puramente funcional, cada nueva conexión parece una mejora.
Pero hay una pregunta que debe aparecer antes de celebrar esa capacidad:
¿Qué está autorizado a hacer el sistema?
La diferencia es fundamental porque una aplicación puede ser técnicamente capaz de ejecutar una operación que institucionalmente no debería ejecutar.
No debemos confundir:
CAPACIDAD → qué puede hacer técnicamente el sistema.
PERMISO → qué está autorizado a hacer.
DECISIÓN → cuándo puede seleccionar esa acción.
RESPONSABILIDAD → quién responde por sus efectos.
Una tool amplía capacidad.
No concede automáticamente autoridad.
El problema aparece cuando la IA deja de ser sólo un borrador
Supongamos que el sistema genera:
Recomiendo informar al proveedor que la cláusula 14.2 debe renegociarse.
Mientras esa frase permanezca en pantalla, una persona puede revisarla.
Ahora supongamos que existe una tool:
enviar_correo_proveedor(...)
El sistema ya puede convertir la recomendación en una comunicación real.
El riesgo cambia.
Y si además existe:
aprobar_proveedor(...)
la diferencia es todavía mayor.
Por eso los permisos no deben pensarse como una capa administrativa añadida al final.
Forman parte del diseño de la arquitectura.
Capacidad, permiso, decisión y responsabilidad
Conviene fijar las cuatro preguntas mediante un caso.
Capacidad
Existe técnicamente:
enviar_correo
Pregunta:
¿puede el sistema ejecutar esa función?
Permiso
La política establece:
puede crear borradores
no puede enviar sin autorización
Pregunta:
¿está autorizado a hacerlo?
Decisión
Incluso si el envío está permitido después de aprobación, queda otra cuestión:
¿quién decide cuándo corresponde solicitar ese envío?
Puede ser el usuario, un workflow o, más adelante, un agente.
Responsabilidad
Finalmente:
¿quién responde por una comunicación incorrecta?
La existencia de automatización no elimina la necesidad de asignar responsabilidad.
Autenticación, autorización y aprobación
Antes de analizar tipos de permiso conviene consolidar tres conceptos.
Autenticación
Pregunta:
¿Quién eres?
El sistema establece la identidad.
Autorización
Pregunta:
¿Qué puedes hacer?
Por ejemplo:
leer matter ACME
crear borradores
no eliminar documentos
Aprobación
Pregunta:
¿Puede ejecutarse esta acción concreta ahora?
Por ejemplo:
Acción propuesta:
enviar correo al proveedor
Regla:
requiere confirmación humana
Estas tres capas pueden coexistir.
Una persona puede estar autenticada, tener autorización general para utilizar correo y, aun así, necesitar aprobar un envío concreto generado por el sistema.
1. Leer
El primer nivel es leer.
Puede incluir:
abrir contrato
leer anexo
consultar correo
obtener política
consultar registro
A primera vista parece de bajo riesgo porque no modifica el sistema.
Pero la lectura puede involucrar información muy sensible.
En Derecho podemos estar trabajando con:
- información de clientes;
- secretos comerciales;
- comunicaciones confidenciales;
- datos personales;
- expedientes segregados;
- estrategias de litigación.
Por eso read-only significa únicamente:
no modifica el recurso
No significa:
acceso irrestricto
Permisos de lectura deben seguir el alcance
Supongamos que la abogada A trabaja en el matter ACME.
La integración debería permitir:
leer ACME
pero no necesariamente:
buscar todos los matters del estudio
Este punto es especialmente importante cuando el connector utiliza una cuenta de servicio con privilegios amplios.
La arquitectura debe evitar que la capacidad técnica de la integración destruya las fronteras de autorización existentes.
2. Escribir
El segundo nivel es escribir.
Incluye:
guardar informe
crear ticket
crear nota
actualizar estado
registrar hallazgo
Ahora existe persistencia.
El error puede quedar almacenado y propagarse.
Pensemos en:
estado = APROBADO
cuando correspondía:
estado = PENDIENTE_REVISION
Una clasificación equivocada deja de ser solamente una frase en una conversación.
Puede convertirse en un dato utilizado por otros sistemas o personas.
Borrador y registro definitivo no son lo mismo
La categoría “write” también necesita granularidad.
Podemos distinguir:
crear borrador
de:
publicar versión definitiva
El primer caso puede tener revisión humana posterior.
El segundo puede convertirse inmediatamente en información oficial.
Esto permite diseñar permisos más seguros.
Por ejemplo:
crear_borrador_revision
→ permitido
cerrar_revision_como_aprobada
→ requiere autorización
3. Comunicar
Desde la perspectiva jurídica conviene separar comunicar aunque técnicamente sea una forma de escritura.
¿Por qué?
Porque una comunicación cruza una frontera de audiencia.
Comparemos:
redactar_correo
con:
enviar_correo
El contenido puede ser idéntico.
El efecto no lo es.
Un borrador puede corregirse.
Un correo enviado puede producir:
- expectativas;
- compromisos;
- efectos reputacionales;
- consecuencias negociadoras;
- revelación de información.
Por eso las acciones comunicativas suelen merecer controles específicos.
Destinatario y adjuntos también son parte del permiso
No basta preguntar:
“¿puede enviar correo?”
También necesitamos considerar:
¿a quién?
¿desde qué cuenta?
¿con qué adjuntos?
¿puede enviar externamente?
¿puede incluir información confidencial?
¿hay allowlist?
Un permiso granular podría permitir comunicaciones internas y exigir aprobación para destinatarios externos.
4. Modificar
Modificar incluye operaciones sobre objetos existentes.
Por ejemplo:
editar registro
reemplazar documento
cambiar fecha
mover archivo
cambiar permisos
eliminar contenido
Aquí aparecen dos variables muy útiles:
IMPACTO
qué consecuencias produce
REVERSIBILIDAD
qué tan fácil es deshacerlo
Modificar una etiqueta interna no equivale a eliminar un expediente.
Cambiar una fecha de borrador no equivale a cambiar permisos de acceso.
La autorización debería reflejar esas diferencias.
5. Acciones que requieren autorización
Llegamos al núcleo de la página.
No todas las acciones que el sistema puede ejecutar deberían ejecutarse inmediatamente cuando el modelo las propone.
La aplicación puede interponer un human gate.
Por ejemplo:
La diferencia entre instrucción y control es crucial.
“No lo hagas” no equivale a impedirlo
Podríamos escribir en el prompt:
No envíes correos sin aprobación.
La instrucción puede ayudar.
Pero si la arquitectura realmente considera imprescindible la autorización, el control más fuerte es:
la función de envío no se ejecuta hasta recibir confirmación
Eso transforma una expectativa lingüística en una regla de ejecución.
Las instrucciones orientan al modelo.
Los permisos y gates limitan lo que el sistema puede ejecutar.
Cuando una acción tiene consecuencias importantes, conviene evitar que toda la protección dependa de que el modelo recuerde obedecer una frase.
Read · Write · Execute
Las clases UDD utilizan una clasificación simple para comenzar a pensar permisos según efecto sobre el mundo.
| Nivel | Qué permite | Ejemplo jurídico | Riesgo principal |
|---|---|---|---|
| Read | acceder a información | leer contrato, anexo o correo | confidencialidad, privacidad, acceso indebido |
| Write | crear o modificar estado | guardar informe, actualizar ticket | registro incorrecto, propagación, trazabilidad |
| Execute | producir un efecto relevante | enviar, aprobar, firmar, cancelar | efecto externo o jurídico |
La regla pedagógica es:
cuanto más irreversible o externo sea el efecto, más fuerte debe ser el control.
No es una fórmula matemática ni una regla jurídica universal.
Es un principio de diseño.
Una matriz más granular
Podemos traducirlo al caso contractual.
| Acción | Tipo | ¿Automática? | Posible control |
|---|---|---|---|
| buscar contrato en matter autorizado | Read | sí | logging y ACL |
| leer anexo | Read | sí | permisos heredados |
| calcular ratio | Compute | sí | validar inputs |
| crear borrador de revisión | Write | sí | etiquetar como borrador |
| actualizar estado a “requiere negociación” | Write | quizás | validación previa |
| enviar correo interno | Communicate | quizás | destinatarios permitidos |
| enviar correo al proveedor | Execute | no por defecto | aprobación humana |
| aprobar contratación | Execute | no | autoridad institucional |
| modificar permisos del DMS | Critical modify | no | fuera de alcance o doble aprobación |
La matriz ayuda a diseñar antes de conectar.
Menor privilegio
De esta lógica surge un principio clásico de seguridad: least privilege o menor privilegio.
Una identidad debería disponer sólo de las capacidades necesarias para cumplir su función.
Aplicado a nuestro sistema:
Si sólo necesita buscar contratos:
permitir buscar y leer
No:
permitir eliminar y cambiar permisos
Si sólo necesita preparar comunicaciones:
permitir crear borradores
No necesariamente:
permitir enviar
Reducir capacidad disponible disminuye el espacio de errores posibles.
Capability bounding: acotar desde la tool
El control no tiene que aparecer solamente en el sistema de permisos.
También podemos diseñar herramientas más estrechas.
Comparemos:
administrar_DMS(accion, recurso, usuario, permisos, ...)
con:
buscar_contratos_autorizados(proveedor)
La primera tool concentra demasiado poder.
La segunda está acotada por finalidad.
Incluso si ambas utilizan la misma API, la superficie operacional es muy distinta.
La reversibilidad como criterio
Supongamos dos acciones:
crear_borrador
y:
eliminar_documento_definitivamente
Ambas modifican estado.
Pero la segunda es mucho más difícil de revertir.
Por eso la reversibilidad puede utilizarse para graduar controles.
Una regla útil es:
más irreversible
→ más validación
→ más autorización
→ más evidencia
La exterioridad como criterio
También importa si el efecto permanece dentro del entorno.
nota interna
no equivale a:
correo a contraparte
Aunque ambas sean escrituras.
La exterioridad aumenta la posibilidad de consecuencias que no pueden corregirse simplemente editando un registro.
La autoridad institucional como criterio
Algunas acciones no son sensibles porque modifiquen muchos datos, sino porque representan una decisión.
Por ejemplo:
aprobar contrato
rechazar proveedor
presentar escrito
firmar documento
La pregunta no es sólo si la tool puede ejecutarlas.
También:
¿quién tiene competencia organizacional o profesional para decidir?
La arquitectura técnica no puede crear por sí sola esa autoridad.
Permiso ≠ responsabilidad
Supongamos que la aplicación tiene permiso para enviar un correo y que una persona aprueba el envío.
Todavía queda una pregunta distinta:
¿quién responde si el contenido era incorrecto?
La autorización técnica no determina automáticamente la asignación jurídica de responsabilidad.
Esto debe analizarse mediante:
- roles organizacionales;
- obligaciones profesionales;
- contratos;
- procedimientos internos.
La ABA Formal Opinion 512 destaca precisamente que el uso de herramientas de IA no elimina deberes profesionales como competencia, confidencialidad, supervisión, comunicación y revisión. La guía del CCBE formula preocupaciones convergentes desde el entorno europeo.
Permisos y trazabilidad
Si una acción requiere autorización, debería poder reconstruirse posteriormente:
qué acción se propuso
quién la solicitó
qué argumentos llevaba
quién la aprobó
cuándo se ejecutó
qué resultado produjo
No desarrollaremos todavía observabilidad completa, pero aquí aparece su razón de ser.
Sin evidencia de ejecución, la autorización puede ser difícil de demostrar.
Un caso completo
Nuestro sistema concluye:
El contrato ACME contiene una desviación material en responsabilidad.
Read
Busca precedentes.
consultar_excepciones("responsabilidad")
Permitido dentro del matter.
Compute
Calcula exposición.
calcular_ratio(800000, 2400000)
Permitido.
Write
Crea borrador.
crear_borrador_revision(...)
Permitido, claramente marcado como borrador.
Communicate
Propone correo al proveedor.
enviar_correo(...)
La acción queda en estado:
PENDIENTE_DE_APROBACION
Human gate
La persona revisa:
- destinatario;
- texto;
- adjuntos;
- oportunidad.
Execute
Sólo después de aprobación se envía.
Record
El sistema conserva el resultado.
Éste es el tipo de arquitectura que permite combinar capacidad con control.
Un error frecuente: permiso demasiado amplio por comodidad
Durante una prueba puede parecer sencillo utilizar una cuenta con acceso total.
La aplicación “funciona”.
Después esa misma arquitectura pasa a producción.
El problema es que se ha confundido:
facilidad de integración
con:
modelo de autorización adecuado
La etapa de piloto no debería ocultar qué permisos serán aceptables en operación real.
Otro error: pedir autonomía antes de definir permisos
Las clases UDD incluyen una advertencia especialmente importante:
no pedir autonomía antes de definir permisos, logs y criterios de término.
Tiene sentido.
Si todavía no sabemos:
qué puede leer
qué puede escribir
qué necesita aprobación
qué nunca debe hacer
no estamos en condiciones de decidir cuánta autonomía conceder.
Los permisos deben preceder a la autonomía.
Por qué importa para la contratación de IA
Cuando un proveedor ofrece una aplicación conectada, una revisión contractual debería ir más allá de la frase:
“el servicio podrá acceder a los sistemas del cliente”.
Necesitamos concretar:
sistemas autorizados
identidades
scopes
operaciones permitidas
finalidades
restricciones
aprobaciones
logging
revocación de credenciales
tratamiento de incidentes
La arquitectura técnica permite formular obligaciones contractuales más precisas.
Dónde estamos en el recorrido
La sección PODER ACTUAR ha añadido una propiedad nueva al sistema.
Antes teníamos:
SKILL
cómo trabajar
KNOWLEDGE / RAG
con qué información trabajar
Ahora añadimos:
TOOLS
qué operaciones ejecutar
API / CONNECTOR / MCP
cómo acceder a capacidades externas
PERMISOS
qué puede ejecutarse y bajo qué límites
Podemos representarlo así:
flowchart LR
S[Skill] --> K[Knowledge / RAG]
K --> T[Tool]
T --> I[API / Connector / MCP]
I --> P[Permisos]
Pero todavía falta algo.
Tener varias herramientas autorizadas no determina el orden de trabajo.
Qué debes recordar
Los permisos separan poder técnico de autoridad operacional.
Conviene distinguir:
AUTENTICACIÓN
¿quién eres?
AUTORIZACIÓN
¿qué puedes hacer?
APROBACIÓN
¿puede ejecutarse esta acción concreta ahora?
Y clasificar acciones según efecto:
READ
leer
WRITE
crear o modificar
COMMUNICATE
cruzar una frontera de audiencia
MODIFY / EXECUTE
producir efectos más fuertes
El principio general es aumentar controles a medida que aumentan sensibilidad, impacto, exterioridad e irreversibilidad.
El problema que todavía queda abierto
Ahora nuestro sistema puede acceder a información, realizar cálculos y ejecutar acciones bajo permisos definidos.
Pero un trabajo jurídico real no es una bolsa de operaciones aisladas.
Existe una secuencia.
Hay estados.
Hay condiciones de avance.
Hay responsables.
Hay excepciones.
Hay puntos de revisión.
Hay decisiones sobre qué ocurre después.
Por eso el siguiente problema ya no es:
¿puede actuar?
Es:
¿cómo organizamos esas acciones dentro de un proceso controlable?
El recorrido pasa ahora de PODER ACTUAR a ORGANIZAR EL TRABAJO.
El siguiente concepto será el workflow.