Permisos de macOS (TCC)

Los permisos concedidos en macOS son frágiles. TCC asocia la concesión de un permiso con la firma de código de la app, el identificador de bundle y la ruta en disco. Si cualquiera de estos cambia, macOS trata la app como nueva y puede descartar u ocultar los prompts.

Requisitos para permisos estables

  • Misma ruta: ejecuta la app desde una ubicación fija (para OpenClaw, dist/OpenClaw.app).
  • Mismo identificador de bundle: cambiar el bundle ID crea una nueva identidad de permisos.
  • App firmada: los builds sin firmar o con firma ad-hoc no persisten permisos.
  • Firma consistente: usa un certificado real de Apple Development o Developer ID para que la firma se mantenga estable entre recompilaciones.

Las firmas ad-hoc generan una nueva identidad en cada compilación. macOS olvidará las concesiones anteriores, y los prompts pueden desaparecer por completo hasta que se limpien las entradas obsoletas.

Lista de recuperación cuando los prompts desaparecen

  1. Cierra la app.
  2. Elimina la entrada de la app en Preferencias del Sistema → Privacidad y Seguridad.
  3. Vuelve a abrir la app desde la misma ruta y concede los permisos de nuevo.
  4. Si el prompt sigue sin aparecer, restablece las entradas TCC con tccutil e inténtalo de nuevo.
  5. Algunos permisos solo reaparecen después de un reinicio completo de macOS.

Ejemplos de restablecimiento (reemplaza el bundle ID según sea necesario):

sudo tccutil reset Accessibility ai.openclaw.mac
sudo tccutil reset ScreenCapture ai.openclaw.mac
sudo tccutil reset AppleEvents

Permisos de archivos y carpetas (Escritorio/Documentos/Descargas)

macOS también puede restringir el acceso a Escritorio, Documentos y Descargas para procesos en terminal/segundo plano. Si las lecturas de archivos o listados de directorios se cuelgan, concede acceso al mismo contexto de proceso que realiza operaciones de archivos (por ejemplo Terminal/iTerm, app lanzada por LaunchAgent o proceso SSH).

Alternativa: mueve los archivos al workspace de OpenClaw (~/.openclaw/workspace) si quieres evitar concesiones por carpeta.

Si estás probando permisos, siempre firma con un certificado real. Los builds ad-hoc solo son aceptables para ejecuciones locales rápidas donde los permisos no importan.