Claude Code Mac Desktop + Control Remoto: Una guía para usuarios de CLI
La app de escritorio Claude Code para Mac y el subcomando claude remote-control resuelven el mismo problema desde direcciones opuestas. La app de escritorio te ofrece una ventana con tres pestañas (Chat, Cowork, Code) y un espacio de trabajo que puedes organizar en torno a tu código. Control Remoto te ofrece exactamente lo opuesto: ninguna ventana en tu máquina local, solo un proceso que sirve tu sesión local a la app de Claude en tu teléfono o a claude.ai/code en cualquier navegador.1
Si vienes de claude en una terminal, ambas superficies parecen extrañas al principio. ¿Por qué querría una GUI cuando la TUI funciona bien? ¿Por qué querría controlar mi Mac desde mi teléfono cuando mi Mac está justo aquí? La respuesta a ambas preguntas es la misma: tu entorno local es la parte que no puedes mover. El sistema de archivos, los servidores MCP (Yurei, Cloudflare, GitHub), Xcode, las identidades de firma de código, tu socket de Yurei, tu historial en ~/.claude/projects/. Todo eso vive en la máquina. La app de escritorio y Control Remoto son dos formas de llegar a ese entorno desde otro lugar: otra ventana, otro dispositivo, un sofá, una reunión.
Este ensayo es la referencia que me hubiera gustado tener cuando hice el cambio. Cubre los tres modos (CLI local, nube, local + Control Remoto), cómo configurar cada uno, qué comandos de barra funcionan dónde, la historia de las notificaciones push y los lugares específicos donde la app de escritorio diverge de claude en una terminal. Honesto sobre las limitaciones. Sin relleno.
TL;DR
- Tres modos que se ven similares desde claude.ai/code pero funcionan de forma muy distinta: CLI local, sesión en la nube (
claude --remotedesde la terminal, el entorno Remote en Desktop, o iniciar una nueva sesión en claude.ai/code) y Local + Control Remoto. Solo el primero y el tercero tienen acceso a tu sistema de archivos, servidores MCP y Xcode.12 - La pestaña Code de la app de escritorio para Mac es una sesión gráfica de Claude Code: el mismo motor que la CLI, la misma configuración
~/.claude.json, el mismo CLAUDE.md, los mismos servidores MCP. Pero tiene su propio diseño de paneles, chats laterales y barra lateral de sesiones.2 claude remote-control(modo servidor) mantiene el proceso ejecutándose localmente y te permite conectarte desde cualquier dispositivo.claude --remote-controles una sesión interactiva con Control Remoto activado./remote-controles lo mismo pero como comando de barra desde dentro de una sesión existente.1- Las notificaciones push de la app de iOS funcionan vía
/config→ “Push when Claude decides” (v2.1.110+). Claude envía push cuando una tarea larga termina o necesita tu intervención.13 - Para builds nativos de macOS o iOS, CLI local o Local + Control Remoto es el único entorno que realmente funciona. Las sesiones en la nube no pueden ejecutar Xcode, no pueden firmar, no pueden ver tu socket local de Yurei.2
Los tres modos que importan
La misma URL claude.ai/code, el mismo ícono de la app de iOS, tres entornos de ejecución completamente distintos detrás.
1. CLI local
Esto es claude en una terminal. El proceso se ejecuta en tu Mac. La sesión vive en ~/.claude/projects/<project-path>/<session-id>.jsonl en disco, no en tu cuenta de Anthropic.4 Tu iPhone no puede verla. No hay superficie remota.
Lo que obtienes:
- Acceso completo al sistema de archivos:
~/Projects,~/.claude/, cualquier lugar donde el usuario tenga lectura/escritura - Todos tus servidores MCP: Yurei (
/tmp/yurei.sock), Cloudflare, GitHub, Supabase, Playwright, etc. - Xcode, simuladores (
xcrun simctl), identidades de firma de código, App Store Connect - Plugins, skills y hooks instalados localmente
- Modo de voz (
/voice) - Cada flag de la CLI (
--worktree,--rc,--print,--output-format, etc.)
Lo que no obtienes: ninguna forma de ver o controlar la sesión desde otro dispositivo.
Para un build de app de Mac (Return, Get Bananas, Water, las apps de los posts de App Intents y servidor MCP), la CLI local funciona perfectamente. También Local + Control Remoto (cubierto en la sección 3 más adelante): ambos mantienen el proceso de Claude en tu Mac, así que ambos llegan a Xcode, simuladores y firma. La sesión en la nube es la que no puede ejecutar la cadena de herramientas de Apple.
2. Sesión en la nube
Esto es claude --remote "tarea" desde la terminal, seleccionar Remote al iniciar una sesión en la app de escritorio, o visitar claude.ai/code en la web e iniciar una nueva sesión allí. El proceso de Claude Code se ejecuta en la infraestructura gestionada en la nube de Anthropic, no en tu máquina.2 (Documentación más antigua y costumbres de shell a veces muestran & tarea como abreviatura para el mismo resultado; trata el flag explícito --remote como la forma canónica.)
Lo que obtienes:
- Persistencia entre máquinas y dispositivos: visible desde tu iPhone, iPad, navegador
- Sigue ejecutándose después de cerrar la app o apagar tu laptop
- Entorno gestionado por Anthropic, sin configuración local requerida
- Soporte multi-repo: las sesiones en la nube pueden clonar varios repositorios de GitHub en el mismo espacio de trabajo2
Lo que no obtienes:
- Sin acceso al sistema de archivos en
~/Projects - Sin servidores MCP locales (el socket de Yurei, scripts locales de caché de Cloudflare, los MCP personalizados en
.mcp.jsonno serán accesibles) - Sin Xcode, sin simuladores, sin firma
- No puede ver tu configuración de
~/.claude/ni tus skills (solo lo que está en.claude/del repo clonado) - No puede usar
@mentionen archivos (el autocompletado con @ se nutre del proyecto local; las sesiones en la nube no tienen uno)2
Caso de uso: una tarea de programación autocontenida sin dependencia de la cadena de herramientas de Apple. Abrir una revisión de PR, ejecutar una suite de tests, refactorizar un archivo, escribir un script de Python. Cualquier cosa donde lo único que necesitas sea git + Linux estándar + Python/Node.
3. Local + Control Remoto
Esta es la tercera opción, la que la mayoría de los usuarios de la CLI pasan por alto. Hay tres formas de habilitarla: claude remote-control (modo servidor), claude --remote-control (o --rc, una sesión interactiva con Control Remoto activado), o /remote-control desde dentro de una sesión existente. El proceso de Claude Code sigue ejecutándose en tu Mac con acceso local completo, pero también se registra con la API de Anthropic para que puedas controlarlo desde tu iPhone, iPad o navegador.1
Lo que obtienes: todo lo que la CLI local tiene, más un teléfono desde el que puedes enviar prompts. La conversación se mantiene sincronizada en todos los dispositivos conectados. Puedes enviar un mensaje desde la terminal del Mac, verlo en el iPhone, escribir un seguimiento en el iPhone, verlo de nuevo en la terminal. El proceso local sigue haciendo el trabajo; tu teléfono es solo una ventana.
Lo que sacrificas: un conjunto pequeño y específico de comandos de barra. La documentación señala explícitamente que /mcp, /plugin y /resume son solo locales (cada uno abre un selector interactivo que necesita una terminal). La documentación enumera explícitamente los comandos que producen salida de texto y funcionan desde móvil y web: /compact, /clear, /context, /usage, /exit, /extra-usage, /recap, /reload-plugins.1
Esta es la respuesta para builds nativos de apps de macOS o iOS. Tienes Xcode, tienes MCP, tienes el socket de Yurei y tienes visibilidad desde el teléfono.
Configurando la app de escritorio para Mac
La app de escritorio y la CLI no son alternativas. Son dos clientes para el mismo motor. Puedes ejecutar ambos simultáneamente en la misma máquina, incluso en el mismo proyecto. Cada uno lleva su propio historial de sesiones, pero comparten CLAUDE.md, ~/.claude.json, servidores MCP, hooks y skills.2
Descarga desde claude.com/download. Instala. Inicia sesión con tu cuenta de claude.ai. La app tiene tres pestañas:2
- Chat para conversaciones regulares con Claude
- Cowork para Dispatch (tareas de larga duración, opcionalmente con mensajes desde tu teléfono)
- Code para Claude Code con una interfaz gráfica
La pestaña Code es la que nos interesa. Haz clic en + New session en la barra lateral. Configura cuatro cosas en el área del prompt:2
- Entorno: Local (esta Mac), Remote (nube de Anthropic) o SSH (una máquina remota que tú gestionas)
- Carpeta del proyecto: el directorio en el que Claude trabaja
- Modelo: Sonnet 4.6, Opus 4.6, Opus 4.7 u otros
- Modo de permisos: Ask, Auto-accept edits, Plan, Auto o Bypass permissions
Escribe tu prompt, presiona Enter. A partir de aquí se siente como una app de chat: los mensajes se apilan, las llamadas a herramientas se renderizan como tarjetas plegables y aparece un indicador de estadísticas de diff (+12 -1) cuando los archivos cambian. Haz clic en el indicador para abrir el visor de diff con revisión archivo por archivo y comentarios a nivel de línea.2
Para sesiones locales, la tecla @ en la caja del prompt autocompleta rutas de archivos de tu proyecto: igual que la mención @ de la CLI. Para sesiones remotas, @ está deshabilitado porque el proceso en la nube no puede ver tus archivos locales.2
Requisitos antes de empezar
Cuatro precondiciones para cualquier sesión de Control Remoto:1
- Claude Code v2.1.51 o posterior (verifica con
claude --version). - Suscripción: Pro, Max, Team o Enterprise. Las claves de API no son compatibles. En Team y Enterprise, un administrador debe habilitar primero el toggle Remote Control en
claude.ai/admin-settings/claude-code. - Autenticación: ejecuta
claudey usa/login(opción claude.ai) si aún no lo has hecho. Los tokens de solo inferencia declaude setup-tokeno la variable de entornoCLAUDE_CODE_OAUTH_TOKENno funcionarán. - Confianza del workspace: ejecuta
claudeen el directorio de tu proyecto al menos una vez y acepta el diálogo de confianza del workspace.
Cuatro formas de iniciar una sesión de Control Remoto
La documentación actual lista cuatro superficies de invocación (tres desde la CLI más un comando de VS Code). La app de escritorio para Mac no es un host de Control Remoto; Control Remoto es alojado por claude (CLI) o la extensión de VS Code.1
Modo servidor: claude remote-control
cd ~/Projects/blakecrosley.com
claude remote-control
La terminal se convierte en un servidor. Sin prompt interactivo. Muestra una URL de sesión y (si presionas la barra espaciadora) un código QR. Conéctate desde otro dispositivo abriendo la URL o escaneando el QR. Mientras la sesión está activa, la terminal muestra el estado de conexión y la actividad de las herramientas.
Flags útiles:1
--name "My Project": título de sesión personalizado visible en claude.ai/code--remote-control-session-name-prefix <prefix>: anula el nombre automático (por defecto es el hostname de tu máquina, produciendo nombres comomyhost-graceful-unicorn)--spawn same-dir(predeterminado): todas las sesiones comparten el directorio de trabajo actual--spawn worktree: cada sesión obtiene su propio worktree de git (requiere un repo de git); presionawen tiempo de ejecución para alternar entresame-diryworktree--spawn session: modo de sesión única, rechaza conexiones adicionales; se establece solo al inicio--capacity N: máximo de sesiones concurrentes (predeterminado 32, no se puede combinar con--spawn=session)--sandbox/--no-sandbox: alterna el aislamiento de sistema de archivos y red (desactivado por defecto)
El modo servidor es la elección correcta cuando quieres iniciar la sesión y alejarte. La terminal ahora es un demonio, no un espacio de trabajo.
Interactivo: claude --remote-control
claude --remote-control
# o más corto
claude --rc
Igual que una sesión interactiva normal, pero con Control Remoto activado. Puedes escribir mensajes localmente y desde claude.ai/code o la app de iOS. La conversación se mantiene sincronizada. Opcional: claude --rc "Project Name".
Usa esto cuando quieras seguir trabajando en la terminal pero también quieras visibilidad desde el teléfono. Es el caso más común.
Comando de barra: /remote-control
¿Ya estás en una sesión y quieres habilitar Control Remoto en esta conversación específicamente? Escribe /remote-control (o /rc). El historial de conversación actual se traslada y aparecen una URL de sesión + QR. Pasa un nombre: /remote-control My Project.
Los flags --verbose, --sandbox y --no-sandbox no funcionan con la forma de barra: solo con claude remote-control (modo servidor).
Extensión de VS Code
En la extensión de VS Code de Claude Code, escribe /remote-control (o /rc) en la caja del prompt, o abre el menú de comandos con / y selecciónalo. Requiere Claude Code v2.1.79 o posterior.1 Aparece un banner sobre la caja del prompt que muestra el estado de conexión. Haz clic en Open in browser para saltar directamente a la sesión, o búscala en la lista de sesiones en claude.ai/code. Desconecta haciendo clic en el ícono de cerrar en el banner o ejecutando /remote-control de nuevo.
El comando de VS Code no acepta un argumento de nombre y no muestra un código QR. El título de la sesión se deriva del historial de conversación o del primer prompt.
Siempre activo: /config → “Enable Remote Control for all sessions”
Si quieres que cada sesión interactiva de claude registre una sesión remota por defecto, ejecuta /config y activa Enable Remote Control for all sessions a true.1 Cada proceso interactivo obtiene una sesión remota. Múltiples instancias → múltiples sesiones. Para múltiples sesiones concurrentes desde un solo proceso, el modo servidor sigue siendo la herramienta correcta.
La historia de las notificaciones push
Recibe push en tu teléfono cuando algo interesante sucede. La configuración tiene cuatro pasos:13
- Instala la app de Claude para iOS o Android. Dentro de Claude Code,
/mobilemuestra un código QR de descarga si aún no la tienes. - Inicia sesión con la misma cuenta de Claude que usas para Claude Code en la terminal.
- Acepta el aviso de permiso de notificaciones del sistema operativo.
- En la terminal, ejecuta
/configy activa Push when Claude decides (v2.1.110+).
Después de eso, Claude decide cuándo hacer push. Dos casos lo activan: una tarea de larga duración terminando, o Claude necesitando tu intervención para continuar. También puedes solicitar una explícitamente en tu prompt: notify me when the tests finish. No hay configuración por evento: está activado o desactivado.
Si activas el ajuste pero no ves notificaciones, la solución más común: abre la app de Claude en tu teléfono para que pueda actualizar su token de push. La pantalla de /config muestra No mobile registered hasta que eso ocurra. Los modos de Concentración de iOS y la optimización de batería de Android también pueden retrasar o suprimir la entrega; revisa Configuración → Notificaciones → Claude en iOS, o exime la app de Claude de la optimización de batería en Android.1
Para contexto adicional: una herramienta separada push-notification (también v2.1.110+) permite que Claude decida enviar notificaciones durante una sesión, no solo al final de la tarea. Se empareja con la misma superficie de Control Remoto, sin configuración adicional.3
Comandos de barra que funcionan remotamente
Esta es la parte que más le importa a los usuarios de la CLI. Cuando estás escribiendo en tu teléfono en lugar de tu terminal, ¿qué funciona?
Funcionan desde cualquier cliente conectado (terminal, navegador, app de iOS):1
/compact,/clear: gestión de contexto/context,/usage,/extra-usage: inspección de uso y contexto (v2.1.113+ agregó soporte de Control Remoto para/extra-usage)/exit,/recap,/reload-plugins- Toda entrada de texto sin selector (prompts regulares, comandos de barra normales que producen salida de texto)
Solo locales (solo terminal):1
/mcp: abre un selector interactivo/plugin: abre un selector interactivo/resume: necesita renderizar una lista de sesiones con UI de selección
El patrón: cualquier cosa que requiera una selección con teclado en la terminal se queda local. Cualquier cosa que sea texto-de-entrada / texto-de-salida funciona desde móvil o web.
Algunos comandos tienen soporte de Control Remoto específico por versión. /extra-usage solo funciona desde clientes de Control Remoto en v2.1.113 y posteriores: las versiones anteriores fallaban silenciosamente.5 Vale la pena verificar claude --version si un comando se comporta de forma distinta desde tu teléfono que desde tu Mac.
Los modos de permisos son un poco diferentes
La app de escritorio tiene cinco modos de permisos; la CLI tiene esos cinco más dontAsk:2
| Modo | Comportamiento | ¿CLI? | ¿Desktop? |
|---|---|---|---|
Ask permissions (default) |
Pregunta antes de cada edición/comando | ✓ | ✓ |
Auto accept edits (acceptEdits) |
Acepta automáticamente ediciones de archivos + comandos seguros del sistema de archivos; pregunta por el resto | ✓ | ✓ |
Plan mode (plan) |
Lee/explora, propone un plan, sin ediciones de fuente | ✓ | ✓ |
Auto (auto) |
Verificaciones de seguridad en segundo plano, menos avisos | ✓ | ✓ |
Bypass permissions (bypassPermissions) |
Sin avisos. Equivalente a --dangerously-skip-permissions de la CLI. Recomendación de Anthropic: úsalo solo en contenedores aislados o VMs. |
✓ | ✓ (opt-in en Settings) |
dontAsk |
Solo herramientas pre-aprobadas | ✓ | ✗ |
dontAsk es solo para la CLI. Todo lo demás se mapea a un control de UI junto al botón de envío. El flag de la CLI --dangerously-skip-permissions corresponde a Bypass permissions, que tienes que activar vía Settings → Claude Code → “Allow bypass permissions mode”.2
El modo Auto requiere Claude Sonnet 4.6, Opus 4.6 u Opus 4.7 en Team/Enterprise/API; Opus 4.7 en Max. No disponible en planes Pro ni en proveedores externos.2
La pestaña Cowork y Dispatch (adyacentes, no lo mismo)
La pestaña Cowork de la app de escritorio es una función distinta con ergonomía superpuesta. Dispatch es “envía un mensaje con una tarea a Claude desde tu teléfono, y decide si manejar la tarea él mismo o generar una sesión de Code en tu Mac”.2
El emparejamiento ocurre una vez: instala la app móvil de Claude, vincúlala a tu Mac vía la pestaña Cowork. Después de eso, puedes enviarle por mensaje a Dispatch una tarea (“arregla el bug de login, abre un PR”) y enrutará el trabajo. Las correcciones de bugs, actualizaciones de dependencias, ejecuciones de tests y creación de PRs típicamente terminan como sesiones de Code en tu Mac con una insignia Dispatch en la barra lateral. La investigación, edición de documentos y trabajo de hojas de cálculo se quedan en Cowork.
Los permisos de aprobación de la app para sesiones de Code generadas por Dispatch expiran después de 30 minutos (vs. duran lo que dure la sesión para sesiones regulares de Code), así que una tarea de larga duración enviada por Dispatch puede volver a pedirte permisos de app que ya habías aprobado.2
Dispatch necesita Pro o Max. No disponible en Team o Enterprise.
Esto no es Control Remoto. Dispatch es “envía a Claude una tarea para que ejecute autónomamente”; Control Remoto es “controla una sesión que ya está en ejecución”. Están documentados como superficies independientes: Control Remoto es alojado por la CLI o VS Code, Dispatch genera sesiones de Code en Desktop, y la documentación actualmente no describe cómo combinarlos. Elige uno según si quieres delegar (Dispatch) o controlar (Control Remoto).
Lo que se traslada desde la CLI
La app de escritorio lee los mismos archivos de configuración que la CLI:2
CLAUDE.mdyCLAUDE.local.mden tu proyecto~/.claude.json(global) y.mcp.json(por proyecto) para servidores MCP- Hooks y skills definidos en
~/.claude/settings.jsono.claude/settings.json - Reglas de permisos en
settings.json - Todos los modelos disponibles
Flag de la CLI → equivalente en escritorio:2
| CLI | Desktop |
|---|---|
--model sonnet |
Menú desplegable de modelo junto al botón de envío |
--resume, --continue |
Hacer clic en una sesión en la barra lateral |
--permission-mode |
Selector de modo junto al botón de envío |
--dangerously-skip-permissions |
Bypass permissions (opt-in en Settings) |
--add-dir |
Botón + para agregar repos en sesiones remotas |
--allowedTools, --disallowedTools |
Sin UI por sesión; las reglas del archivo de configuración aún aplican |
--verbose |
Modo de vista detallada en el menú desplegable Transcript |
--print, --output-format |
No disponible: Desktop es solo interactivo |
Variable de entorno ANTHROPIC_MODEL |
Menú desplegable de modelo |
Variable de entorno MAX_THINKING_TOKENS |
Editor de entorno local |
Una trampa de configuración que vale la pena señalar: la app de chat Claude Desktop (el cliente solo de chat en claude_desktop_config.json) y Claude Code Desktop (el cliente de desarrollo del que estamos hablando) son productos distintos. Los servidores MCP configurados para la app de chat no aparecerán en la pestaña Code. Code lee ~/.claude.json y .mcp.json, no claude_desktop_config.json.2
CLI → Desktop: cuándo cambiar
La app de escritorio brilla en tres cosas que la CLI no hace bien:2
- Sesiones paralelas lado a lado: cada sesión de la pestaña Code obtiene su propio worktree de Git en
<project-root>/.claude/worktrees/. Cicla conCtrl+Tab/Ctrl+Shift+Tab. Ejecuta una refactorización en una sesión mientras una suite de tests corre en otra, y revísalas visualmente en lugar de por códigos de escape ANSI. - Revisión visual de diffs: haz clic en el indicador
+12 -1. Comenta en líneas. Envía comentarios de vuelta a Claude conCmd+Enter. Mejor que leer diffs en línea en una terminal. - Panel de previsualización embebido: Claude puede iniciar un servidor de desarrollo y abrir la app en ejecución en un navegador embebido, tomar capturas de pantalla, hacer clic alrededor y verificar sus propios cambios. La auto-verificación está activada por defecto por proyecto (alterna en
.claude/launch.jsono vía el menú desplegable Preview).2
La CLI aún gana en: scripting (--print, --output-format), automatización (cron jobs, CI), flujos de trabajo con tmux/screen, y cualquier cosa que necesite el modo de permisos dontAsk.
Para mover una sesión de la CLI a Desktop sin perder contexto, ejecuta /desktop en la terminal. Guarda la sesión, la abre en la app de escritorio, sale de la CLI.2
Limitaciones y trampas
Reales, según la documentación:1
- Una sesión remota por proceso interactivo. Fuera del modo servidor, cada invocación de
claudeadmite una sesión remota. ¿Necesitas múltiples? Usaclaude remote-control(modo servidor). - El proceso local debe seguir ejecutándose. Control Remoto es alojado por el proceso de la CLI
claudeo la extensión de VS Code. Cierra la terminal, sal de VS Code o mata el procesoclaudey la sesión remota termina. No hay un modo desacoplado de la terminal.1 - Una caída de red de más de 10 minutos termina la sesión. La Mac puede estar despierta pero sin alcanzar la red durante 10 minutos; el proceso sale y tienes que reiniciar.
- Ultraplan desconecta Control Remoto. Ambos ocupan la superficie de claude.ai/code y solo uno puede estar conectado a la vez.
- El modo Auto requiere modelos recientes. Opus 4.7 en Max; Sonnet 4.6, Opus 4.6 u Opus 4.7 en Team/Enterprise/API. No en Pro.
- Las claves de API y los tokens de solo inferencia no funcionarán. Control Remoto requiere un login OAuth de claude.ai con todos los permisos. Si
ANTHROPIC_API_KEYestá configurada, desactívala. Si te autenticaste víaclaude setup-tokenoCLAUDE_CODE_OAUTH_TOKEN, ejecutaclaude auth loginpara refrescar. - Los administradores de Team y Enterprise deben habilitarlo. Desactivado por defecto. El toggle está en
claude.ai/admin-settings/claude-code→ Remote Control. Algunas configuraciones de retención de datos hacen que el toggle no esté disponible.
El fallo más común de “¿por qué no funciona?”: el usuario inició sesión con un token de solo inferencia. El error “Remote Control requires a full-scope login token” se mapea a ese caso. Solución: claude auth login y elige la opción claude.ai.1
Otros casos de troubleshooting que vale la pena conocer
La documentación oficial cubre varios modos de fallo más que le cuestan tiempo real a un principiante. Destilados:1
- “Remote Control requires a claude.ai subscription”: no estás autenticado con claude.ai. Si
ANTHROPIC_API_KEYestá configurada, desactívala primero, luegoclaude auth login. - “Unable to determine your organization for Remote Control eligibility”: la información de cuenta cacheada está obsoleta. Ejecuta
claude auth loginpara refrescar. - “Remote Control is not yet enabled for your account”: revisa si tienes
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC,DISABLE_TELEMETRY,CLAUDE_CODE_USE_BEDROCK,CLAUDE_CODE_USE_VERTEXoCLAUDE_CODE_USE_FOUNDRYen tu entorno. Control Remoto requiere autenticación con claude.ai; los proveedores externos no funcionarán. Desactívalas y haz/logoutluego/login. - “Remote Control is disabled by your organization’s policy”: tres causas según la documentación: (a) estás con una clave de API o cuenta de Console (usa OAuth de claude.ai), (b) el administrador de Team/Enterprise no ha habilitado el toggle, (c) el toggle del administrador está en gris debido a una configuración de retención de datos incompatible con Control Remoto (contacta al soporte de Anthropic).
- “Remote credentials fetch failed”: vuelve a ejecutar con
--verbosepara ver el error subyacente:claude remote-control --verbose. Generalmente un caso de no haber iniciado sesión, un firewall bloqueando HTTPS saliente a la API de Anthropic en 443, o un fallo previo de creación de sesión (buscaSession creation failed: see debug log). - Diálogo de confianza del workspace: si Control Remoto falla al iniciar sin error obvio, ejecuta
claudeen el directorio del proyecto al menos una vez y acepta el diálogo de confianza del workspace. Este paso es requerido antes de que Control Remoto registre la sesión.
Un árbol de decisión para usuarios de la CLI
Frente a una tarea real, elige el modo según lo que el trabajo necesite:
¿El trabajo necesita la cadena de herramientas de Apple (Xcode, simuladores, firma)?
├── SÍ → CLI local o Local + Control Remoto
│ (la nube no puede alcanzar la cadena de herramientas)
│
└── NO → ¿Necesita tus servidores MCP locales (Yurei, Cloudflare, etc.)?
├── SÍ → CLI local o Local + Control Remoto
│
└── NO → ¿Necesitas monitorearlo o controlarlo desde tu teléfono?
├── SÍ → Local + Control Remoto, O sesión en la nube
│ (la nube es mejor si la tarea dura varias horas)
│
└── NO → CLI local está bien
Desarrollo de apps Mac/iOS: lo que la mayoría de mis apps hacen: cae en la rama superior cada vez. Las sesiones en la nube no pueden ejecutar xcodebuild, no pueden hablar con un simulador, no pueden firmar. Para la extensión MCP de Get Bananas, mis scripts de censo impulsados por Yurei o el trabajo del cluster Apple Ecosystem, la dependencia de la cadena de herramientas de Apple es inevitable. Local + Control Remoto es el único camino que me da tanto esa cadena de herramientas como una superficie visible desde el teléfono.
Preguntas frecuentes
¿Puedo ejecutar la CLI y la app de escritorio al mismo tiempo en el mismo proyecto?
Sí. Comparten configuración (CLAUDE.md, ~/.claude.json, servidores MCP, hooks, skills) pero mantienen historiales de sesiones separados.2 Puedes tener una sesión claude en iTerm y una sesión de la pestaña Code en la app de escritorio, ambas apuntadas al mismo ~/Projects/blakecrosley.com, ambas escribiendo en git. Ten cuidado con escrituras paralelas si no estás usando worktrees.
¿Qué le pasa a una sesión de Control Remoto cuando mi Mac entra en suspensión?
La sesión se reconecta automáticamente cuando tu máquina vuelve a estar en línea. Si tu Mac está despierta pero no puede alcanzar la red por más de ~10 minutos, la sesión expira y tienes que iniciar una nueva con claude remote-control.1
¿Funciona Control Remoto con la sintaxis & tarea (segundo plano)?
& tarea y Control Remoto son superficies distintas. & tarea envía trabajo a una sesión en la nube. Control Remoto te conecta a una sesión local desde otro dispositivo. Ambos pueden aparecer en la lista de sesiones de claude.ai/code, pero el de la nube se ejecuta en infraestructura de Anthropic y el de Control Remoto se ejecuta en tu máquina.1
¿Puedo usar Control Remoto con un proveedor externo (Bedrock, Vertex, Foundry)?
No. Control Remoto requiere autenticación con claude.ai. Si tienes CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX o CLAUDE_CODE_USE_FOUNDRY configurados, la verificación de elegibilidad fallará con “Remote Control is not yet enabled for your account”. Desactívalos y vuelve a ejecutar.1
¿Cuál es la diferencia entre --remote-control y claude remote-control?
claude --remote-control (o --rc) inicia una sesión interactiva normal en tu terminal, con Control Remoto activado. Puedes escribir localmente y desde otro dispositivo. claude remote-control (sin flag, subcomando) es modo servidor: la terminal se convierte en un servidor sin prompt local, solo estado de conexión. Ambos crean una sesión remota por defecto; el modo servidor puede servir múltiples vía --capacity o --spawn.1
¿La app de escritorio tiene skills, plugins y hooks como la CLI?
Sí. Son los mismos skills, plugins y hooks. La app de escritorio lee ~/.claude/settings.json y el .claude/settings.json a nivel de proyecto igual que lo hace la CLI. Haz clic en el botón + junto a la caja del prompt para navegar plugins y skills instalados. Los plugins no están disponibles en sesiones remotas (en la nube) pero funcionan bien en sesiones locales de escritorio.2
¿Por qué no funciona /mcp desde mi teléfono?
/mcp abre un selector interactivo que necesita una UI solo de terminal para selección. Es solo local. Lo mismo aplica para /plugin y /resume.1 Cualquier cosa que produzca salida de texto (/compact, /clear, /context, /usage, /extra-usage, /exit, /recap, /reload-plugins) funciona desde móvil y web.
¿Hay un nivel gratuito o todo esto requiere una suscripción?
Control Remoto está disponible en planes Pro, Max, Team y Enterprise. Las claves de API no son compatibles. En Team y Enterprise, un administrador debe habilitar el toggle Remote Control en la configuración de administrador de claude.ai antes de que los usuarios vean la función.1 La app de escritorio en sí es gratuita para descargar pero requiere un login de claude.ai para usar.
La versión más corta: La CLI local es el sustrato. La app de escritorio es un cliente gráfico para el mismo sustrato. /remote-control es el puente que hace el sustrato accesible desde tu teléfono. Elige según lo que el trabajo necesite y dónde te encuentres.
Referencias
-
Anthropic, “Continue local sessions from any device with Remote Control”. La referencia canónica para
claude remote-control,claude --remote-control,/remote-control, notificaciones push, requisitos, la matriz de troubleshooting y limitaciones. Citado a lo largo de este ensayo. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Anthropic, “Use Claude Code Desktop”. Estructura de tres pestañas (Chat, Cowork, Code), configuración de inicio de sesión, modos de permisos, vista de diff, panel de previsualización, sesiones paralelas vía worktrees de Git, la tabla comparativa “Coming from the CLI?”, Dispatch, computer use. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Releases de GitHub para Claude Code v2.1.105–v2.1.112: notificaciones push vía Control Remoto (v2.1.110+),
/recap+ Session Recap,/ultrareview,/less-permission-prompts, modo Auto para Max en Opus 4.7, los hooks de PreCompact pueden bloquear. Consulta las notas de la versión v2.1.110 para el anuncio de la herramienta de notificaciones push. ↩↩↩ -
Convención de almacenamiento de sesiones locales:
~/.claude/projects/<sanitized-project-path>/<session-id>.jsonl. Las sesiones son archivos JSONL a los que se va agregando contenido a medida que la sesión progresa. Visibles solo para procesos locales; no sincronizadas con la cuenta de Anthropic. ↩ -
Soporte de cliente de Control Remoto para
/extra-usageagregado en v2.1.113. Consulta el historial de releases de Claude Code. Las versiones anteriores solo funcionaban desde la terminal local. ↩