Claude Code Mac Desktop + Controle Remoto: Um Guia para Usuários do CLI
O app Mac desktop do Claude Code e o subcomando claude remote-control resolvem o mesmo problema por direções opostas. O app desktop oferece uma janela com três abas (Chat, Cowork, Code) e um workspace que você pode organizar ao redor do seu código. O Controle Remoto oferece exatamente o oposto: nenhuma janela na sua máquina local, apenas um processo que serve sua sessão local para o app Claude no celular ou para claude.ai/code em qualquer navegador.1
Se você veio do claude no terminal, ambas as superfícies parecem estranhas no início. Por que eu iria querer uma GUI se o TUI funciona bem? Por que eu iria querer controlar meu Mac pelo celular se meu Mac está bem aqui? A resposta para ambas as perguntas é a mesma: seu ambiente local é a parte que você não pode mover. Sistema de arquivos, servidores MCP (Yurei, Cloudflare, GitHub), Xcode, identidades de assinatura de código, seu socket Yurei, seu histórico em ~/.claude/projects/. Tudo isso vive na máquina. O app desktop e o Controle Remoto são duas formas de chegar até esse ambiente a partir de outro lugar: outra janela, outro dispositivo, um sofá, uma reunião.
Este ensaio é a referência que eu gostaria de ter tido quando fiz a transição. Cobre os três modos (CLI local, cloud, local + Controle Remoto), como configurar cada um, quais slash commands funcionam onde, a história das push notifications, e os pontos específicos onde o app desktop diverge do claude no terminal. Honesto sobre as limitações. Sem enrolação.
TL;DR
- Três modos que parecem similares pelo claude.ai/code, mas rodam de forma muito diferente: CLI Local, Sessão Cloud (
claude --remoteno terminal, o ambiente Remote no Desktop, ou iniciando uma nova sessão em claude.ai/code), e Local + Controle Remoto. Apenas o primeiro e o terceiro têm acesso ao seu sistema de arquivos, servidores MCP e Xcode.12 - A aba Code do app Mac desktop é uma sessão gráfica do Claude Code: mesmo motor do CLI, mesma config
~/.claude.json, mesmo CLAUDE.md, mesmos servidores MCP. Mas ela tem seu próprio layout de painéis, side chats e barra lateral de sessões.2 claude remote-control(modo servidor) mantém o processo rodando localmente e permite que você se conecte de qualquer dispositivo.claude --remote-controlé uma sessão interativa com Controle Remoto habilitado./remote-controlé a mesma coisa, mas como slash command de dentro de uma sessão existente.1- As push notifications do app iOS funcionam via
/config→ “Push when Claude decides” (v2.1.110+). O Claude envia um push quando uma tarefa longa termina ou quando precisa do seu input.13 - Para builds nativos de macOS ou iOS, CLI Local ou Local + Controle Remoto é o único ambiente que realmente funciona. Sessões cloud não conseguem rodar Xcode, não conseguem assinar, não conseguem ver seu socket Yurei local.2
Os três modos que importam
Mesma URL claude.ai/code, mesmo ícone do app iOS, três ambientes de runtime completamente diferentes por trás deles.
1. CLI Local
Este é o claude no terminal. O processo roda no seu Mac. A sessão vive em ~/.claude/projects/<project-path>/<session-id>.jsonl no disco, não na sua conta Anthropic.4 Seu iPhone não pode vê-la. Não há superfície remota.
O que você ganha:
- Acesso completo ao sistema de arquivos:
~/Projects,~/.claude/, qualquer lugar onde o usuário tenha leitura/escrita - Todos os seus servidores MCP: Yurei (
/tmp/yurei.sock), Cloudflare, GitHub, Supabase, Playwright, etc. - Xcode, simuladores (
xcrun simctl), identidades de assinatura de código, App Store Connect - Plugins, skills e hooks instalados localmente
- Modo voz (
/voice) - Todas as flags do CLI (
--worktree,--rc,--print,--output-format, etc.)
O que você não ganha: nenhuma forma de ver ou controlar a sessão de outro dispositivo.
Para um build de app Mac (Return, Get Bananas, Water, os apps nos posts App Intents e servidor MCP), o CLI Local funciona perfeitamente. O mesmo vale para Local + Controle Remoto (coberto na seção 3 abaixo): ambos mantêm o processo do Claude no seu Mac, então ambos alcançam Xcode, simuladores e assinatura. A sessão cloud é o que não consegue rodar a toolchain da Apple.
2. Sessão Cloud
Este é o claude --remote "task" do terminal, selecionar Remote ao iniciar uma sessão no app desktop, ou visitar claude.ai/code na web e iniciar uma nova sessão lá. O processo do Claude Code roda na infraestrutura cloud gerenciada da Anthropic, não na sua máquina.2 (Documentações antigas e hábitos de shell às vezes mostram & task como atalho para o mesmo resultado; trate a flag explícita --remote como a forma canônica.)
O que você ganha:
- Persistência entre máquinas e dispositivos: visível pelo seu iPhone, iPad, navegador
- Continua rodando depois que você fecha o app ou desliga seu laptop
- Ambiente gerenciado pela Anthropic, sem necessidade de configuração local
- Suporte multi-repo: sessões cloud podem clonar vários repositórios GitHub no mesmo workspace2
O que você não ganha:
- Sem acesso ao sistema de arquivos em
~/Projects - Sem servidores MCP locais (socket Yurei, scripts locais de cache do Cloudflare, MCPs customizados em
.mcp.jsonnão estarão acessíveis) - Sem Xcode, sem simuladores, sem assinatura
- Não consegue ver sua config em
~/.claude/ou skills (apenas o que está no.claude/do repo clonado) - Não consegue fazer
@mentionde arquivos (o autocomplete do @ puxa do projeto local; sessões cloud não têm um)2
Caso de uso: uma tarefa de codificação autocontida sem dependência da toolchain Apple. Abrir um PR review, rodar uma suíte de testes, refatorar um arquivo, escrever um script Python. Qualquer coisa onde as únicas coisas que você precisa são git + Linux padrão + Python/Node.
3. Local + Controle Remoto
Esta é a terceira opção, a que a maioria dos usuários de CLI ignora. Há três formas de habilitá-la: claude remote-control (modo servidor), claude --remote-control (ou --rc, uma sessão interativa com Controle Remoto ligado), ou /remote-control de dentro de uma sessão existente. O processo do Claude Code continua rodando no seu Mac com acesso local completo, mas também se registra na API da Anthropic para que você possa controlá-lo pelo iPhone, iPad ou navegador.1
O que você ganha: tudo o que o CLI Local tem, mais um celular pelo qual você pode prompt. A conversa fica sincronizada em todos os dispositivos conectados. Você pode mandar uma mensagem do terminal do Mac, vê-la no iPhone, digitar uma resposta no iPhone, vê-la de volta no terminal. O processo local ainda está fazendo o trabalho; seu celular é só uma janela.
O que você abre mão: um conjunto pequeno e específico de slash commands. A documentação destaca explicitamente /mcp, /plugin e /resume como local-only (cada um abre um picker interativo que precisa de um terminal). A documentação explicitamente lista os comandos que produzem saída de texto e funcionam pelo mobile e web: /compact, /clear, /context, /usage, /exit, /extra-usage, /recap, /reload-plugins.1
Esta é a resposta para builds nativos de apps macOS ou iOS. Você ganha Xcode, ganha MCP, ganha o socket Yurei, e ganha visibilidade pelo celular.
Configurando o app Mac desktop
O app desktop e o CLI não são alternativas. São dois clientes para o mesmo motor. Você pode rodar ambos simultaneamente na mesma máquina, até no mesmo projeto. Cada um rastreia seu próprio histórico de sessão, mas eles compartilham CLAUDE.md, ~/.claude.json, servidores MCP, hooks e skills.2
Faça download em claude.com/download. Instale. Faça login com sua conta claude.ai. O app tem três abas:2
- Chat para conversas regulares com o Claude
- Cowork para Dispatch (tarefas de longa duração, opcionalmente acionadas por mensagem do seu celular)
- Code para Claude Code com interface gráfica
A aba Code é o que nos interessa. Clique em + New session na barra lateral. Configure quatro coisas na área de prompt:2
- Environment: Local (este Mac), Remote (cloud da Anthropic) ou SSH (uma máquina remota que você gerencia)
- Project folder: o diretório no qual o Claude trabalha
- Model: Sonnet 4.6, Opus 4.6, Opus 4.7 ou outros
- Permission mode: Ask, Auto-accept edits, Plan, Auto ou Bypass permissions
Digite seu prompt, pressione Enter. A partir daqui parece um app de chat: as mensagens se empilham, as chamadas de tools são renderizadas como cards expansíveis, e um indicador de stats de diff (+12 -1) aparece quando arquivos mudam. Clique no indicador para abrir o diff viewer com revisão arquivo por arquivo e comentários em nível de linha.2
Para sessões locais, a tecla @ na caixa de prompt autocompleta caminhos de arquivos do seu projeto: igual ao @ mention do CLI. Para sessões remotas, o @ é desabilitado porque o processo cloud não consegue ver seus arquivos locais.2
Requisitos antes de começar
Quatro pré-condições para qualquer sessão de Controle Remoto:1
- Claude Code v2.1.51 ou posterior (verifique com
claude --version). - Subscription: Pro, Max, Team ou Enterprise. Chaves de API não são suportadas. Em Team e Enterprise, um administrador precisa habilitar o toggle Remote Control em
claude.ai/admin-settings/claude-codeprimeiro. - Autenticação: rode
claudee use/login(opção claude.ai) se você ainda não fez. Tokens de inferência declaude setup-tokenou da variável de ambienteCLAUDE_CODE_OAUTH_TOKENnão vão funcionar. - Workspace trust: rode
claudeno diretório do seu projeto pelo menos uma vez e aceite o diálogo de workspace-trust.
Quatro formas de iniciar uma sessão de Controle Remoto
A documentação atual lista quatro superfícies de invocação (três do CLI mais um comando do VS Code). O app Mac desktop não é um host de Controle Remoto; o Controle Remoto é hospedado pelo claude (CLI) ou pela extensão do VS Code.1
Modo servidor: claude remote-control
cd ~/Projects/blakecrosley.com
claude remote-control
O terminal vira um servidor. Sem prompt interativo. Ele exibe uma URL de sessão e (se você pressionar a barra de espaço) um QR code. Conecte de outro dispositivo abrindo a URL ou escaneando o QR. Enquanto a sessão estiver ativa, o terminal mostra o status da conexão e a atividade das tools.
Flags úteis:1
--name "My Project": título customizado da sessão visível em claude.ai/code--remote-control-session-name-prefix <prefix>: sobrescreve o auto-name (o padrão é o hostname da sua máquina, produzindo nomes comomyhost-graceful-unicorn)--spawn same-dir(padrão): todas as sessões compartilham o diretório de trabalho atual--spawn worktree: cada sessão ganha seu próprio git worktree (requer um repo git); pressionewem runtime para alternar entresame-direworktree--spawn session: modo de sessão única, rejeita conexões adicionais; só pode ser definido na inicialização--capacity N: máximo de sessões concorrentes (padrão 32, não pode ser combinado com--spawn=session)--sandbox/--no-sandbox: alterna isolamento de sistema de arquivos e rede (desligado por padrão)
O modo servidor é a escolha certa quando você quer iniciar a sessão e ir embora. O terminal agora é um daemon, não um workspace.
Interativo: claude --remote-control
claude --remote-control
# ou mais curto
claude --rc
O mesmo que uma sessão interativa normal, mas com Controle Remoto ligado. Você pode digitar mensagens localmente e pelo claude.ai/code ou pelo app iOS. A conversa fica em sincronia. Opcional: claude --rc "Project Name".
Use isso quando você quer continuar trabalhando no terminal mas também quer visibilidade pelo celular. É o caso mais comum.
Slash command: /remote-control
Já está em uma sessão e quer habilitar o Controle Remoto nessa conversa especificamente? Digite /remote-control (ou /rc). O histórico atual da conversa é transferido e uma URL de sessão + QR aparecem. Passe um nome: /remote-control My Project.
As flags --verbose, --sandbox e --no-sandbox não funcionam com a forma slash: apenas com claude remote-control (modo servidor).
Extensão do VS Code
Na extensão Claude Code do VS Code, digite /remote-control (ou /rc) na caixa de prompt, ou abra o command menu com / e selecione. Requer Claude Code v2.1.79 ou posterior.1 Um banner aparece acima da caixa de prompt mostrando o status da conexão. Clique em Open in browser para pular direto para a sessão, ou encontre-a na lista de sessões em claude.ai/code. Desconecte clicando no ícone de fechar do banner ou rodando /remote-control novamente.
O comando do VS Code não aceita um argumento de nome e não exibe um QR code. O título da sessão é derivado do histórico da conversa ou do primeiro prompt.
Always-on: /config → “Enable Remote Control for all sessions”
Se você quer que toda sessão interativa do claude registre uma sessão remota por padrão, rode /config e ative Enable Remote Control for all sessions para true.1 Cada processo interativo ganha uma sessão remota. Múltiplas instâncias → múltiplas sessões. Para múltiplas sessões concorrentes a partir de um único processo, o modo servidor ainda é a ferramenta certa.
A história das push notifications
Push para o seu celular quando algo interessante acontece. A configuração tem quatro passos:13
- Instale o app Claude para iOS ou Android. Dentro do Claude Code,
/mobilemostra um QR code de download se você ainda não tiver. - Faça login com a mesma conta Claude que você usa para o Claude Code no terminal.
- Aceite o prompt de permissão de notificação do sistema operacional.
- No terminal, rode
/confige habilite Push when Claude decides (v2.1.110+).
Depois disso, o Claude decide quando enviar o push. Dois casos disparam: uma tarefa de longa duração terminando, ou o Claude precisando do seu input para continuar. Você também pode pedir explicitamente no seu prompt: notify me when the tests finish. Não há configuração por evento: está ligado ou desligado.
Se você ativa a configuração mas não vê notificações, o fix mais comum: abra o app Claude no celular para que ele atualize seu push token. A tela de /config mostra No mobile registered até isso acontecer. Os modos Focus do iOS e a otimização de bateria do Android também podem atrasar ou suprimir a entrega; verifique Settings → Notifications → Claude no iOS, ou exclua o app Claude da otimização de bateria no Android.1
Para contexto de fundo: uma tool separada push-notification (também v2.1.110+) permite ao próprio Claude decidir enviar notificações durante uma sessão, não apenas no fim da tarefa. Ela funciona em conjunto com a mesma superfície de Controle Remoto, sem configuração extra.3
Slash commands que funcionam remotamente
Esta é a parte que mais importa para usuários de CLI. Quando você está digitando no celular em vez do terminal, o que funciona?
Funcionam de qualquer cliente conectado (terminal, navegador, app iOS):1
/compact,/clear: gerenciamento de contexto/context,/usage,/extra-usage: inspeção de uso e contexto (v2.1.113+ adicionou suporte de Controle Remoto para/extra-usage)/exit,/recap,/reload-plugins- Toda entrada de texto que não seja picker (prompts regulares, slash commands normais que produzem saída de texto)
Local-only (apenas terminal):1
/mcp: abre um picker interativo/plugin: abre um picker interativo/resume: precisa renderizar uma lista de sessões com UI de seleção
O padrão: qualquer coisa que requer uma list-with-keyboard-selection no terminal fica local. Qualquer coisa que é text-in / text-out funciona pelo mobile ou web.
Alguns comandos têm suporte de Controle Remoto específico de versão. /extra-usage só funciona de clientes de Controle Remoto na v2.1.113 e posterior: versões anteriores falhavam silenciosamente.5 Vale a pena verificar claude --version se um comando se comporta de forma diferente do seu celular versus do seu Mac.
Os modos de permissão são um pouco diferentes
O app desktop tem cinco modos de permissão; o CLI tem esses cinco mais o dontAsk:2
| Modo | Comportamento | CLI? | Desktop? |
|---|---|---|---|
Ask permissions (default) |
Pergunta antes de cada edição/comando | ✓ | ✓ |
Auto accept edits (acceptEdits) |
Auto-aceita edições de arquivo + comandos seguros do sistema de arquivos; pergunta para o resto | ✓ | ✓ |
Plan mode (plan) |
Lê/explora, propõe um plano, sem edições no source | ✓ | ✓ |
Auto (auto) |
Verificações de segurança em background, menos prompts | ✓ | ✓ |
Bypass permissions (bypassPermissions) |
Sem prompts. Equivalente ao --dangerously-skip-permissions do CLI. Orientação da Anthropic: use apenas em containers ou VMs sandbox. |
✓ | ✓ (opt-in nas Settings) |
dontAsk |
Apenas tools pré-aprovadas | ✓ | ✗ |
dontAsk é CLI-only. Todo o resto mapeia para um controle de UI ao lado do botão de envio. A flag --dangerously-skip-permissions do CLI corresponde ao Bypass permissions, no qual você precisa optar via Settings → Claude Code → “Allow bypass permissions mode”.2
O modo Auto requer Claude Sonnet 4.6, Opus 4.6 ou Opus 4.7 em Team/Enterprise/API; Opus 4.7 em Max. Não disponível em planos Pro ou em provedores terceiros.2
A aba Cowork e o Dispatch (adjacentes, não a mesma coisa)
A aba Cowork do app desktop é uma feature diferente com ergonomias sobrepostas. Dispatch é “envie por mensagem uma tarefa para o Claude pelo seu celular, e ele decide se trata a tarefa por conta própria ou se cria uma sessão Code no seu Mac.”2
O pareamento acontece uma vez: instale o app mobile do Claude, vincule-o ao seu Mac via aba Cowork. Depois disso, você pode mandar uma tarefa por texto para o Dispatch (“conserte o bug de login, abra um PR”) e ele roteia o trabalho. Correções de bugs, atualizações de dependências, execuções de testes e criação de PRs tipicamente acabam como sessões Code no seu Mac com um badge Dispatch na barra lateral. Pesquisa, edição de documentos e trabalho em planilhas ficam no Cowork.
As permissões de aprovação do app para sessões Code criadas pelo Dispatch expiram após 30 minutos (ao contrário de durar a sessão para sessões Code regulares), então uma tarefa Dispatched de longa duração pode pedir novamente as permissões de app que você já tinha aprovado.2
Dispatch precisa de Pro ou Max. Não disponível em Team ou Enterprise.
Isto não é Controle Remoto. Dispatch é “envie ao Claude uma tarefa para rodar autonomamente”; Controle Remoto é “controle uma sessão que já está rodando.” Eles são documentados como superfícies independentes: Controle Remoto é hospedado pelo CLI ou VS Code, Dispatch cria sessões Code do Desktop: e a documentação atualmente não descreve combiná-los. Escolha um com base em se você quer delegar (Dispatch) ou controlar (Controle Remoto).
O que é transferido do CLI
O app desktop lê os mesmos arquivos de configuração que o CLI:2
CLAUDE.mdeCLAUDE.local.mdno seu projeto~/.claude.json(global) e.mcp.json(por projeto) para servidores MCP- Hooks e skills definidos em
~/.claude/settings.jsonou.claude/settings.json - Regras de permissão em
settings.json - Todos os modelos disponíveis
Flag do CLI → equivalente no desktop:2
| CLI | Desktop |
|---|---|
--model sonnet |
Dropdown de modelo ao lado do botão de envio |
--resume, --continue |
Clique em uma sessão na barra lateral |
--permission-mode |
Seletor de modo ao lado do botão de envio |
--dangerously-skip-permissions |
Bypass permissions (opt-in nas Settings) |
--add-dir |
Botão + para adicionar repos em sessões remotas |
--allowedTools, --disallowedTools |
Sem UI por sessão; regras do arquivo de settings ainda se aplicam |
--verbose |
Modo de visualização Verbose no dropdown Transcript |
--print, --output-format |
Não disponível: o Desktop é apenas interativo |
Variável de ambiente ANTHROPIC_MODEL |
Dropdown de modelo |
Variável de ambiente MAX_THINKING_TOKENS |
Editor de ambiente local |
Uma armadilha de configuração que vale destacar: o app de chat Claude Desktop (o cliente apenas-chat em claude_desktop_config.json) e o Claude Code Desktop (o cliente de dev sobre o qual estamos falando) são produtos diferentes. Servidores MCP configurados para o app de chat não vão aparecer na aba Code. O Code lê ~/.claude.json e .mcp.json, não claude_desktop_config.json.2
CLI → Desktop: quando migrar
O app desktop brilha em três coisas que o CLI não faz bem:2
- Sessões paralelas lado a lado: cada sessão da aba Code ganha seu próprio Git worktree em
<project-root>/.claude/worktrees/. Alterne comCtrl+Tab/Ctrl+Shift+Tab. Rode um refactor em uma sessão enquanto uma suíte de testes roda em outra, e revise-os visualmente em vez de por códigos de escape ANSI. - Revisão visual de diff: clique no indicador
+12 -1. Comente em linhas. Submeta comentários de volta para o Claude comCmd+Enter. Bate qualquer leitura de diffs inline em um terminal. - Painel de preview embutido: o Claude pode iniciar um servidor de dev e abrir o app rodando em um navegador embutido, tirar screenshots, clicar e verificar suas próprias mudanças. O Auto-verify está ligado por padrão por projeto (alterne em
.claude/launch.jsonou via dropdown Preview).2
O CLI ainda vence para: scripting (--print, --output-format), automação (cron jobs, CI), workflows tmux/screen, e qualquer coisa que precise do modo de permissão dontAsk.
Para mover uma sessão do CLI para o Desktop sem perder contexto, rode /desktop no terminal. Salva a sessão, abre no app desktop, sai do CLI.2
Limitações e armadilhas
Reais, da documentação:1
- Uma sessão remota por processo interativo. Fora do modo servidor, cada invocação
claudesuporta uma sessão remota. Precisa de várias? Useclaude remote-control(modo servidor). - O processo local precisa continuar rodando. O Controle Remoto é hospedado pelo processo do CLI
claudeou pela extensão do VS Code. Feche o terminal, saia do VS Code, ou mate o processoclaudee a sessão remota acaba. Não há modo desanexado-do-terminal.1 - Outage de rede > 10 minutos termina a sessão. O Mac pode estar acordado mas incapaz de alcançar a rede por 10 minutos; o processo sai e você precisa reiniciar.
- Ultraplan desconecta o Controle Remoto. Ambos ocupam a superfície claude.ai/code e apenas um pode estar conectado por vez.
- O modo Auto requer modelos recentes. Opus 4.7 em Max; Sonnet 4.6, Opus 4.6 ou Opus 4.7 em Team/Enterprise/API. Não em Pro.
- Chaves de API e tokens de inferência não vão funcionar. O Controle Remoto requer um login OAuth completo do claude.ai. Se
ANTHROPIC_API_KEYestiver setado, remova. Se você se autenticou viaclaude setup-tokenouCLAUDE_CODE_OAUTH_TOKEN, rodeclaude auth loginpara atualizar. - Administradores de Team e Enterprise precisam habilitá-lo. Desligado por padrão. O toggle está em
claude.ai/admin-settings/claude-code→ Remote Control. Algumas configurações de retenção de dados tornam o toggle indisponível.
A falha “por que isso não está funcionando” mais comum: o usuário está logado com um token de inferência. O erro “Remote Control requires a full-scope login token” mapeia para esse caso. Fix: claude auth login e escolha a opção claude.ai.1
Outros casos de troubleshooting que vale conhecer
A documentação oficial cobre vários outros modos de falha que custam ao iniciante tempo real. Destilado:1
- “Remote Control requires a claude.ai subscription”: você não está autenticado com claude.ai. Se
ANTHROPIC_API_KEYestiver setado, remova primeiro, depoisclaude auth login. - “Unable to determine your organization for Remote Control eligibility”: as informações de conta em cache estão desatualizadas. Rode
claude auth loginpara atualizar. - “Remote Control is not yet enabled for your account”: verifique se há
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC,DISABLE_TELEMETRY,CLAUDE_CODE_USE_BEDROCK,CLAUDE_CODE_USE_VERTEXouCLAUDE_CODE_USE_FOUNDRYno seu ambiente. O Controle Remoto requer autenticação claude.ai; provedores terceiros não vão funcionar. Remova e/logoutdepois/login. - “Remote Control is disabled by your organization’s policy”: três causas pela documentação: (a) você está em uma chave de API ou conta Console (use OAuth claude.ai), (b) o admin de Team/Enterprise não habilitou o toggle, (c) o toggle do admin está acinzentado por uma configuração de retenção de dados incompatível com Controle Remoto (entre em contato com o suporte da Anthropic).
- “Remote credentials fetch failed”: re-rode com
--verbosepara ver o erro subjacente:claude remote-control --verbose. Geralmente um caso de não-logado, um firewall bloqueando HTTPS de saída para a API da Anthropic na 443, ou uma falha anterior de criação de sessão (procure porSession creation failed: see debug log). - Diálogo de workspace trust: se o Controle Remoto falhar ao iniciar sem erro óbvio, rode
claudeno diretório do projeto pelo menos uma vez e aceite o diálogo de workspace-trust. Esse passo é necessário antes que o Controle Remoto registre a sessão.
Uma árvore de decisão para usuários do CLI
Diante de uma tarefa real, escolha o modo com base no que o trabalho precisa:
O trabalho precisa da toolchain Apple (Xcode, simuladores, assinatura)?
├── SIM → CLI Local ou Local + Controle Remoto
│ (a cloud não consegue alcançar a toolchain)
│
└── NÃO → Precisa dos seus servidores MCP locais (Yurei, Cloudflare, etc.)?
├── SIM → CLI Local ou Local + Controle Remoto
│
└── NÃO → Você precisa monitorar ou controlar pelo seu celular?
├── SIM → Local + Controle Remoto, OU Sessão Cloud
│ (a cloud é melhor se a tarefa for de várias horas)
│
└── NÃO → CLI Local está ótimo
Desenvolvimento de apps Mac/iOS: o que a maioria dos meus apps faz: cai na ramificação superior toda vez. Sessões cloud não conseguem xcodebuild, não conseguem falar com um simulador, não conseguem assinar. Para a extensão MCP do Get Bananas, meus scripts de census com Yurei, ou o trabalho do cluster Apple Ecosystem, a dependência da toolchain Apple é inevitável. Local + Controle Remoto é o único caminho que me dá tanto essa toolchain quanto uma superfície visível pelo celular.
FAQ
Posso rodar o CLI e o app desktop ao mesmo tempo no mesmo projeto?
Sim. Eles compartilham configuração (CLAUDE.md, ~/.claude.json, servidores MCP, hooks, skills) mas mantêm históricos de sessão separados.2 Você pode ter uma sessão claude no iTerm e uma sessão na aba Code no app desktop, ambas apontadas para o mesmo ~/Projects/blakecrosley.com, ambas escrevendo no git. Tenha cuidado com escritas paralelas se você não estiver usando worktrees.
O que acontece com uma sessão de Controle Remoto quando meu Mac dorme?
A sessão se reconecta automaticamente quando sua máquina volta a ficar online. Se seu Mac estiver acordado mas incapaz de alcançar a rede por mais de ~10 minutos, a sessão expira e você precisa iniciar uma nova com claude remote-control.1
O Controle Remoto funciona com a sintaxe & task (background)?
& task e Controle Remoto são superfícies diferentes. & task envia trabalho para uma sessão cloud. Controle Remoto te conecta a uma sessão local a partir de outro dispositivo. Ambos podem aparecer na lista de sessões em claude.ai/code, mas o cloud roda na infraestrutura da Anthropic e o de Controle Remoto roda na sua máquina.1
Posso usar Controle Remoto com um provedor terceiro (Bedrock, Vertex, Foundry)?
Não. O Controle Remoto requer autenticação claude.ai. Se você tem CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX ou CLAUDE_CODE_USE_FOUNDRY setado, a verificação de elegibilidade vai falhar com “Remote Control is not yet enabled for your account”. Remova e re-rode.1
Qual é a diferença entre --remote-control e claude remote-control?
claude --remote-control (ou --rc) inicia uma sessão interativa normal no seu terminal, com o Controle Remoto habilitado. Você pode digitar localmente e de outro dispositivo. claude remote-control (sem flag, subcomando) é o modo servidor: o terminal vira um servidor sem prompt local, apenas status de conexão. Ambos criam uma sessão remota por padrão; o modo servidor pode servir várias via --capacity ou --spawn.1
O app desktop tem skills, plugins e hooks como o CLI?
Sim. São as mesmas skills, plugins e hooks. O app desktop lê ~/.claude/settings.json e o .claude/settings.json no nível do projeto como o CLI faz. Clique no botão + ao lado da caixa de prompt para navegar pelos plugins e skills instalados. Plugins não estão disponíveis em sessões remotas (cloud) mas funcionam bem em sessões desktop locais.2
Por que o /mcp não funciona pelo meu celular?
/mcp abre um picker interativo que precisa de uma UI terminal-only para a seleção. É local-only. O mesmo vale para /plugin e /resume.1 Qualquer coisa que produz saída de texto (/compact, /clear, /context, /usage, /extra-usage, /exit, /recap, /reload-plugins) funciona pelo mobile e web.
Existe um free tier ou tudo isso requer subscription?
O Controle Remoto está disponível em planos Pro, Max, Team e Enterprise. Chaves de API não são suportadas. Em Team e Enterprise, um administrador precisa habilitar o toggle Remote Control nas admin settings do claude.ai antes que os usuários vejam a feature.1 O app desktop em si é grátis para download mas requer um login claude.ai para usar.
A versão mais curta: o CLI Local é o substrato. O app desktop é um cliente gráfico para o mesmo substrato. /remote-control é a ponte que torna o substrato alcançável pelo seu celular. Escolha pelo que o trabalho precisa e por onde você está.
Referências
-
Anthropic, “Continue local sessions from any device with Remote Control”. A referência canônica para
claude remote-control,claude --remote-control,/remote-control, push notifications, requisitos, a matriz de troubleshooting e limitações. Citado ao longo deste ensaio. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Anthropic, “Use Claude Code Desktop”. Estrutura de três abas (Chat, Cowork, Code), configuração de início de sessão, modos de permissão, visualização de diff, painel de preview, sessões paralelas via Git worktrees, a tabela comparativa “Coming from the CLI?”, Dispatch, computer use. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
GitHub Releases para Claude Code v2.1.105–v2.1.112: push notifications via Controle Remoto (v2.1.110+),
/recap+ Session Recap,/ultrareview,/less-permission-prompts, Auto Mode para Max em Opus 4.7, hooks PreCompact podem bloquear. Veja release notes da v2.1.110 para o anúncio da tool de push-notification. ↩↩↩ -
Convenção de armazenamento local de sessão:
~/.claude/projects/<sanitized-project-path>/<session-id>.jsonl. Sessões são arquivos JSONL acrescentados conforme a sessão progride. Visíveis apenas para processos locais; não sincronizados para a conta Anthropic. ↩ -
Suporte a clientes de Controle Remoto para
/extra-usageadicionado na v2.1.113. Veja histórico de releases do Claude Code. Versões anteriores funcionavam apenas pelo terminal local. ↩