Configuration
Emparejamiento
El «emparejamiento» es el paso explícito de aprobación de acceso de OpenClaw. Se utiliza en dos lugares:
- Emparejamiento de mensajes directos (quién puede comunicarse con el bot)
- Emparejamiento de Node (qué dispositivos o Nodes pueden unirse a la red del Gateway)
Contexto de seguridad: Seguridad
1) Emparejamiento de mensajes directos (acceso al chat entrante)
Cuando un canal está configurado con la política de mensajes directos pairing, los remitentes desconocidos reciben un código corto y su mensaje no se procesa hasta que se aprueba.
Las políticas predeterminadas de mensajes directos se documentan en: Seguridad
dmPolicy: "open" es público solo cuando la lista efectiva de remitentes permitidos para mensajes directos incluye "*".
La configuración y la validación requieren ese comodín para las configuraciones públicas abiertas. Si el estado
existente contiene open con entradas allowFrom concretas, el entorno de ejecución sigue admitiendo
solo a esos remitentes, y las aprobaciones del almacén de emparejamiento no amplían el acceso a open.
Códigos de emparejamiento:
- 8 caracteres, en mayúsculas y sin caracteres ambiguos (
0O1I). - Caducan después de 1 hora. El bot solo envía el mensaje de emparejamiento cuando se crea una solicitud nueva (aproximadamente una vez por hora y remitente).
- Las solicitudes pendientes de emparejamiento de mensajes directos están limitadas a 3 por cuenta de canal; las solicitudes adicionales se ignoran hasta que una caduque o se apruebe.
Aprobación desde la interfaz de control
Abra Configuración → Canales → Solicitudes de acceso a mensajes directos. La cola combina las solicitudes
pendientes de todas las cuentas de canal configuradas cuya política de mensajes directos sea pairing.
Filtre por canal o cuenta, revise el ID y los metadatos del remitente y, a continuación, seleccione
Aprobar.
La aprobación concede únicamente acceso mediante mensajes directos. No concede acceso a grupos. El cuadro de diálogo de aprobación también ofrece estas opciones explícitas cuando son compatibles:
- Notificar al solicitante después de la aprobación
- Convertir también a este remitente en el primer propietario de comandos, que solo se muestra cuando no existe ningún propietario
de comandos y la sesión de la interfaz de control tiene
operator.admin
Seleccione Descartar para eliminar una solicitud pendiente sin aprobarla. El descarte no constituye un bloqueo permanente; el remitente puede volver a solicitar acceso más adelante.
Aprobación desde la CLI
openclaw pairing list telegramopenclaw pairing approve telegram <CODE>Añada --notify para avisar al solicitante en el mismo canal. Los canales con varias cuentas
aceptan --account <id>.
A diferencia de la casilla explícita de la interfaz de control, la CLI inicializa automáticamente
commands.ownerAllowFrom cuando no hay ningún propietario de comandos configurado, mediante una entrada
como telegram:123456789. Esto proporciona a las configuraciones iniciales un propietario explícito para
los comandos privilegiados y las solicitudes de aprobación de ejecución. Una vez que existe un propietario, las
aprobaciones de emparejamiento posteriores solo conceden acceso a mensajes directos; no añaden más propietarios.
Canales compatibles (cualquier Plugin de canal instalado que declare emparejamiento; los Plugins externos como openclaw-weixin pueden añadir más): discord, feishu, googlechat, imessage, irc, line, matrix, mattermost, msteams, nextcloud-talk, nostr, signal, slack, sms, synology-chat, telegram, twitch, whatsapp, zalo, zalouser.
Grupos de remitentes reutilizables
Utilice accessGroups en el nivel superior cuando el mismo conjunto de remitentes de confianza deba aplicarse a
varios canales de mensajería o tanto a las listas de permitidos de mensajes directos como a las de grupos.
Los grupos estáticos utilizan type: "message.senders" y se hace referencia a ellos mediante
accessGroup:<name> desde las listas de permitidos de los canales:
{ accessGroups: { operators: { type: "message.senders", members: { discord: ["discord:123456789012345678"], telegram: ["987654321"], whatsapp: ["+15551234567"], }, }, }, channels: { telegram: { dmPolicy: "allowlist", allowFrom: ["accessGroup:operators"] }, whatsapp: { groupPolicy: "allowlist", groupAllowFrom: ["accessGroup:operators"] }, },}Los grupos de acceso se documentan en detalle aquí: Grupos de acceso
Ubicación del estado
Se almacena en la base de datos de estado SQLite compartida en
~/.openclaw/state/openclaw.sqlite:
- solicitudes pendientes en
channel_pairing_requests - remitentes aprobados en
channel_pairing_allow_entries
Comportamiento del ámbito de las cuentas:
- cada solicitud y remitente aprobado se identifica mediante el canal y la cuenta
- el entorno de ejecución solo lee las filas canónicas de SQLite; no combina archivos heredados
Los Gateways anteriores escribían <channel>-pairing.json y
<channel>-<accountId>-allowFrom.json en ~/.openclaw/credentials/.
La migración al iniciar y openclaw doctor --fix importan esos archivos en SQLite y
eliminan cada origen tras una importación correcta. Trate la base de datos SQLite como
información confidencial, ya que estas filas controlan el acceso al asistente.
2) Emparejamiento de dispositivos Node (Nodes iOS/Android/macOS/sin interfaz)
Los Nodes se conectan al Gateway como dispositivos con role: node. El Gateway
crea una solicitud de emparejamiento de dispositivo que debe aprobarse.
Emparejamiento desde la interfaz de control (recomendado)
Utilice una sesión de la interfaz de control ya conectada con acceso operator.admin:
- Abra la interfaz de control y vaya a Configuración → Dispositivos.
- En la página Dispositivos, haga clic en Emparejar dispositivo móvil.
- Mantenga Acceso completo (recomendado) o seleccione Acceso limitado para omitir los controles administrativos del Gateway.
- Haga clic en Crear código de configuración.
- En el teléfono, abra la aplicación OpenClaw → Configuración → Gateway.
- Escanee el código QR o pegue el código de configuración y, a continuación, conéctese.
Las aplicaciones oficiales de OpenClaw para iOS y Android se aprueban automáticamente cuando los metadatos de su código de configuración coinciden. Si Aprobación pendiente muestra una solicitud (por ejemplo, de un cliente no oficial o con metadatos que no coinciden), revise su rol y sus ámbitos antes de aprobarla.
El botón está deshabilitado cuando la sesión actual de la interfaz de control no tiene acceso de administrador. En ese caso, utilice el siguiente flujo de aprobación mediante la CLI desde el host del Gateway.
Emparejamiento mediante Telegram
Si utiliza el Plugin device-pair, puede realizar el emparejamiento inicial del dispositivo íntegramente desde Telegram:
- En Telegram, envíe este mensaje al bot:
/pair - El bot responde con dos mensajes: uno con instrucciones y otro independiente con el código de configuración (fácil de copiar y pegar en Telegram).
- En el teléfono, abra la aplicación OpenClaw para iOS → Configuración → Gateway.
- Escanee el código QR (
/pair qr) o pegue el código de configuración y conéctese. - La aplicación móvil oficial se conecta automáticamente. Si
/pair pendingmuestra una solicitud, revise su rol y sus ámbitos antes de aprobarla.
El código de configuración es una carga JSON codificada en base64 que contiene:
url: la URL de WebSocket del Gateway (ws://...owss://...)urls: cuando estén disponibles, las rutas LAN/Tailnet ordenadas que puede probar la aplicación móvilbootstrapToken: un token de inicialización de un solo uso para el intercambio inicial de emparejamiento; el Gateway lo hace caducar después de 10 minutos
Ejecute /pair cleanup para invalidar los códigos de configuración no utilizados una vez finalizado el emparejamiento.
Ese token de inicialización incluye el perfil integrado de inicialización de emparejamiento:
- una configuración segura de
wss://(o de bucle invertido en el mismo host) utiliza de forma predeterminadanodemás acceso completo aoperatorpara dispositivos móviles nativos - el token
nodetransferido permanece comoscopes: [] - el token
operatortransferido de forma predeterminada incluyeoperator.admin,operator.approvals,operator.read,operator.talk.secretsyoperator.write - El Acceso limitado de la interfaz de control y
openclaw qr --limitedomitenoperator.admin, pero mantienen los demás ámbitos de operador - la configuración LAN de texto sin formato
ws://utiliza automáticamente el mismo perfil limitado; configurewss://o Tailscale Serve y genere un código nuevo para obtener acceso completo - la posterior rotación o revocación del token sigue estando limitada tanto por el contrato de rol aprobado del dispositivo como por los ámbitos de operador de la sesión que realiza la llamada
Trate el código de configuración como una contraseña mientras sea válido.
Las páginas Configuración → Gateway de iOS y Android muestran acceso Completo o Limitado.
Para ampliar el acceso de un teléfono limitado, configure primero una ruta segura wss:// o
Tailscale Serve; a continuación, genere un nuevo código de configuración con acceso completo, escanéelo o péguelo
en esa página de configuración y vuelva a conectarse.
Para el emparejamiento móvil mediante Tailscale, una red pública u otra conexión remota, utilice Tailscale Serve/Funnel
u otra URL wss:// del Gateway. Los códigos de configuración ws:// en texto sin formato solo se aceptan
para el bucle invertido, direcciones LAN privadas, hosts Bonjour .local y el host del
emulador de Android. Las rutas de texto sin formato que no sean de bucle invertido reciben acceso limitado. Las direcciones
CGNAT de Tailnet, los nombres .ts.net y los hosts públicos siguen rechazándose de forma segura antes
de emitir el QR o el código de configuración.
Para las URL de configuración gateway.bind=lan, OpenClaw detecta las raíces HTTPS persistentes de Tailscale Serve
que actúan como proxy del puerto de bucle invertido del Gateway activo y las anuncia
junto con la ruta LAN. El comando de configuración añade esta alternativa solo
para lan; custom y tailnet conservan sus rutas anunciadas explícitamente. La
aplicación para iOS prueba las rutas anunciadas en orden y guarda el primer
punto de conexión accesible.
Aprobación de un dispositivo Node
openclaw devices listopenclaw devices approve <requestId>openclaw devices reject <requestId>Cuando se deniega una aprobación explícita porque la sesión del dispositivo emparejado que aprueba
se abrió con un ámbito exclusivo de emparejamiento, la CLI vuelve a intentar la misma solicitud con
operator.admin. Esto permite que un dispositivo emparejado existente con capacidad administrativa recupere un nuevo
emparejamiento de la interfaz de control o del navegador sin editar manualmente el almacén de emparejamiento. El
Gateway sigue validando la conexión reintentada; los tokens que no puedan autenticarse
con operator.admin permanecen bloqueados.
Si el mismo dispositivo vuelve a intentarlo con datos de autenticación diferentes (por ejemplo, un
rol, ámbitos o clave pública distintos), la solicitud pendiente anterior queda reemplazada y se crea un nuevo
requestId.
Aprobación automática opcional de Nodes mediante CIDR de confianza
El emparejamiento de dispositivos sigue siendo manual de forma predeterminada. Para redes de Nodes estrictamente controladas, se puede habilitar la aprobación automática inicial de Nodes mediante direcciones IP exactas o CIDR explícitos:
{ gateway: { nodes: { pairing: { autoApproveCidrs: ["192.168.1.0/24"], }, }, },}Esto solo se aplica a solicitudes de emparejamiento role: node nuevas que no soliciten
ámbitos. Los clientes de operador, navegador, interfaz de control y WebChat siguen requiriendo aprobación
manual. Los cambios de rol, ámbito, metadatos y clave pública también siguen requiriendo aprobación
manual.
Almacenamiento del estado de emparejamiento de Nodes
Se almacena en la base de datos de estado SQLite compartida en ~/.openclaw/state/openclaw.sqlite:
- solicitudes pendientes de emparejamiento de dispositivos (de corta duración; caducan después de 5 minutos)
- dispositivos emparejados y tokens
Los gateways anteriores conservaban este estado en ~/.openclaw/devices/*.json; esos archivos se
importan en SQLite al iniciar el gateway y se archivan con el sufijo .migrated.
Notas
- La API
node.pair.*(CLI:openclaw nodes pending|approve|reject|remove|rename) gestiona las aprobaciones de capacidades de los nodos almacenadas en los mismos registros de dispositivos emparejados. Los nodos WS siguen requiriendo el emparejamiento de dispositivos; consulte Emparejamiento de nodos. - El registro de emparejamiento es la fuente de verdad persistente para los roles aprobados. Los tokens de dispositivo activos permanecen limitados a ese conjunto de roles aprobados; una entrada de token aislada fuera de los roles aprobados no crea nuevos accesos.