Ir al contenido
Guías

Aprobaciones de exec avanzadas en OpenClaw

La vía rápida de los safe bins solo de stdin y sus opciones denegadas, los directorios de binarios de confianza, las reglas de encadenamiento y de envoltorios de shell, la vinculación de intérpretes, el scope approvals, el reenvío de solicitudes a canales de chat y los clientes de aprobación nativos

8 min de lectura

La página principal de aprobaciones de exec explica la política y la solicitud. La página avanzada es donde están los puntos delicados: qué binarios pueden saltarse la lista de permitidos porque solo pueden leer stdin, cómo vincula el gateway un comando de intérprete a los archivos exactos que ejecutará, qué scope necesita un panel para aprobar algo y cómo llega una solicitud a un canal de chat y vuelve como una decisión. Aquí tienes esa página condensada.

Safe bins

  • El ajuste de safe bins nombra binarios que solo leen stdin y que se ejecutan en modo allowlist sin entradas explícitas, cut, uniq, head, tail, tr y wc por defecto; rechazan los argumentos de archivo posicionales y los tokens con forma de ruta, tratan los argumentos como texto literal sin globbing ni expansión de variables, y la validación es determinista a partir únicamente de la forma de los argumentos: las opciones largas desconocidas y las abreviaturas ambiguas se rechazan en modo cerrado ante fallos (fail-closed) y las opciones cortas no reconocidas pasan a la política de aprobación.
  • grep y sort no son safe bins predeterminados y mantienen entradas explícitas en la lista de permitidos para sus usos que no se limitan a stdin, y grep en modo safe bin solo recibe su patrón a través de la opción explícita de patrón; awk, sed y jq siempre se deniegan como safe bins porque no se puede validar que su semántica se limite a stdin; los intérpretes y los entornos de ejecución (runtimes) nunca deben añadirse, los safe bins personalizados necesitan un perfil explícito, la auditoría avisa de los binarios de intérprete sin perfil y la corrección de doctor puede generar perfiles personalizados vacíos para ajustarlos después.
  • Los safe bins deben resolverse desde directorios de confianza, las dos rutas del sistema predeterminadas, y las entradas de la ruta de búsqueda nunca se consideran de confianza automáticamente, así que las rutas de los gestores de paquetes se añaden explícitamente a la lista de directorios de confianza; la lista de opciones denegadas por perfil bloquea las opciones que leen archivos, como las opciones recursiva y de archivo de grep, las opciones de salida y de lista de archivos de sort, follow en tail y la opción de lista de archivos en wc.
  • El encadenamiento de shell se permite cuando cada segmento de nivel superior cumple la lista de permitidos, las redirecciones siguen sin estar admitidas, la sustitución de comandos se rechaza incluso entre comillas dobles, los envoltorios de shell reducen las sobrescrituras de entorno de la petición a una lista corta, las decisiones de permitir siempre guardan el ejecutable interno que hay detrás de los envoltorios transparentes y desenvuelven los applets de los multiplexores de shell, y la evaluación en línea estricta mantiene el eval en línea sujeto a revisión cuando hay intérpretes en la lista de permitidos.
La entrega en la sesión solo controla dónde aparece la solicitud. No autoriza por sí sola a todos los participantes de ese chat a aprobar.

Vinculación de intérpretes y el scope approvals

Las ejecuciones de intérpretes respaldadas por aprobación son deliberadamente conservadoras. Se vinculan los argumentos exactos, el directorio de trabajo y el entorno; en el gateway, toda la cadena de despacho externa, cada ejecutable envoltorio y el final, se vincula antes de la revisión y se vuelve a comprobar antes del lanzamiento, los ejecutables protegidos por su ruta real y los que admiten escritura también por el hash de su contenido, así que un ejecutable nuevo situado antes en la ruta de búsqueda hace que se deniegue la ejecución. Los scripts directos y los archivos de runtime se vinculan a una instantánea de archivo, los envoltorios comunes de los gestores de paquetes se desenvuelven primero, y cuando el gateway no puede identificar exactamente un archivo local (scripts de paquetes, formas eval o cadenas de cargadores), la ejecución respaldada por aprobación se deniega en lugar de fingir que la cubre. En modo automático, el revisor solo gestiona cadenas totalmente vinculadas: los envoltorios de comandos de shell, las asignaciones de entorno, los applets y el despacho de builtins se saltan la revisión automática y pasan a una aprobación humana de un solo uso, los envoltorios de shell de inicio de sesión e interactivos necesitan a una persona porque sus archivos de arranque quedan fuera de la vinculación, y las opciones interactivas de carga de código siguen denegadas. Cuando se requiere aprobación, la herramienta devuelve de inmediato un id de aprobación; una decisión que nunca llega es un tiempo de espera agotado que se presenta como una denegación de comando del host, con la sesión de origen reanudada para que el agente vea que el comando no se ejecutó, y las aprobaciones pendientes caducan a los 30 minutos. Resolver una aprobación requiere el scope dedicado approvals, que write no engloba, y la documentación lo describe como una autoridad del nivel de la ejecución remota que hay que conceder de forma deliberada, incluso a una pequeña interfaz de aprobación.

Reenvío al chat

  • El bloque de reenvío de aprobaciones de exec envía las solicitudes a cualquier canal de chat a través del flujo de salida normal, en modo session, targets o both, con filtros de agente y de sesión y destinos formados por canal y destinatario; el agente solo transmite un comando de aprobación a partir de una aprobación realmente pendiente con su id exacto, un id suelto o inventado no aprueba nada, una autorización de una sola vez cubre un comando, y el mismo comando resuelve las aprobaciones de plugins cuando el id no corresponde a una aprobación de exec pendiente, con la familia de plugins configurada de forma independiente.
  • El chat de origen puede aprobar por defecto en Slack, Matrix, Teams y superficies de entrega similares, mientras que Discord, Telegram y el bot de QQ usan sus listas de aprobadores resueltas incluso en el mismo chat; los clientes de aprobación nativos añaden mensajes directos a los aprobadores, difusión en el chat de origen y tarjetas interactivas, que se activan por canal con aprobadores resolubles, con Telegram por defecto en automático y en mensajes a los aprobadores, y una tarjeta que no llega a ningún destino recurre a un aviso en el mismo chat con el comando exacto.
  • Un destino puede llevar un id de cuenta para enviar a través de una cuenta de bot concreta y un id de hilo para quedarse dentro de un tema de foro; las aplicaciones móviles oficiales revisan las aprobaciones pendientes en una conexión de administrador o cuando su dispositivo de aprobaciones era el destino, y vuelven a leer el registro cuando se pierde una confirmación; y la vía de macOS funciona sobre un socket del mismo usuario con un token, un desafío y un tiempo de vida corto.

Las aprobaciones de exec de OpenClaw es la política principal que amplía esta página, y el aislamiento en OpenClaw, el perímetro que la documentación prefiere para los flujos de trabajo que la vinculación no puede cubrir.

Por qué la vía rápida es estrecha

Todo el diseño de los safe bins se basa en una propiedad: un binario que solo puede leer su stdin no puede exfiltrar un archivo que la política no pretendía exponer. Todas las reglas se derivan de ella: el rechazo de las rutas posicionales, los argumentos literales, las opciones de archivo denegadas, la prohibición de los intérpretes y de jq, y los directorios de confianza que detienen a un binario impostor situado antes en la ruta de búsqueda. En cuanto una herramienta puede abrir archivos o evaluar código, la documentación la envía a la lista de permitidos con una solicitud de aprobación. Telegram en Diali y Slack en Diali son dos canales de Diali a los que pueden llegar las solicitudes reenviadas.

En Diali

En Diali, la configuración de ejecución se genera desde el panel y se reemplaza en cada versión, y el entorno de ejecución de cada cliente es su propio perímetro. OpenClaw alojado en Diali describe el asistente alojado, y la seguridad en Diali, los controles que rodean cada comando que ejecuta.

  • Los safe bins solo leen stdin; los intérpretes nunca cumplen los requisitos.
  • Las ejecuciones de intérpretes vinculan toda la cadena o se deniegan.
  • Aprobar requiere el scope approvals, no write.
Empezar

Deja de leer sobre ello y crea el tuyo

Configura un agente, elige un canal y ponlo a trabajar dentro de la aplicación que ya tienes abierta.