1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
title: "Anatomia do Remote Control do Claude Code: a API oculta que você ainda não pode usar"
date: 2026-02-27T18:00:00+01:00
draft: false
slug: "claude-code-remote-control-api-oculta"
slug_en: "claude-code-remote-control-hidden-api"
description: "A Anthropic anunciou o Remote Control para o Claude Code. Investigamos a API do bridge, os WebSockets, os rastros em disco e por que, em fevereiro de 2026, isso ainda não funciona para todas as contas Max."
tags: ["claude-code", "anthropic", "api", "websocket", "remote-control", "engenharia-reversa"]
categories: ["opinião"]

translation:
  hash: ""
  last_translated: ""
  notes: |
    - "grifo": metáfora para conceder/negarem acesso ("torneira"). Não traduzir como "grifon".
    - "com o traseiro de fora": "pego no flagra" / "exposto". Não é vulgar neste contexto.
    - "dito de forma clara": "em palavras simples". Sem conotação religiosa.
    - "gambiarra": "hack/adaptação improvisada". Não pejorativo, significa solução provisória.
    - "balcão do bar": "balcão do bar" — metáfora para conversa informal, não literal.
    - "legal": gíria que corresponde a "it's cool/neat".
    - "parece que": equivale a "pinta" no contexto.

---

No dia 25 de fevereiro de 2026, a Anthropic anunciou o *Remote Control* para o Claude Code. A ideia: você inicia o Claude Code no seu terminal, vai para o sofá com o celular e continua a sessão a partir de claude.ai. Sem SSH. Sem *tmux*. Sem ter que ficar preso à tela do terminal remoto.

Legal. Na teoria.

Porque, na prática, quando ativei (`/rc` no terminal), ele me forneceu uma URL, abri no celular, fiz o login... e o site claude.ai me respondeu com um "this feature is not active in your organization". Fevereiro de 2026, conta Max 5x, tudo em dia. E nada.

Então, fiz o que qualquer pessoa razoável faria: comecei a desmontar a API para entender o que está acontecendo nos bastidores.

## O que é o Remote Control (versão oficial)

Em essência: uma ponte entre sua CLI local e o site claude.ai. A CLI do Claude Code continua rodando na sua máquina (com acesso ao seu código, terminal, arquivos), mas você pode visualizar, aprovar *tool calls* e enviar mensagens de qualquer navegador.

A Anthropic apresentou isso como um "*research preview*", apenas para contas Max. A promessa é que você pode iniciar uma tarefa longa (`/rc` + seu prompt), fechar o laptop, ir à academia e revisar o progresso no celular.

Na realidade, como veremos, as coisas são mais complexas.

## O que descobrimos nos bastidores

Quando você executa `/rc`, o Claude Code faz várias coisas por trás das cortinas. E deixa rastros. Muitos rastros. Em arquivos JSONL, em *debug logs* e até nas respostas da API. Vamos por partes.

### 1. A Bridge API

A primeira coisa que a CLI faz é registrar um "*environment*" na API da Anthropic:

POST https://api.anthropic.com/v1/environments/bridge


O *payload* inclui informações sobre sua máquina:

```json
{
  "machine_name": "MacBook-Pro-do-Fernando",
  "directory": "/Users/fernando/code/tokamak",
  "branch": "main",
  "git_repo_url": "https://git.frr.dev/frr/tokamak.git"
}

E a resposta retorna um environment_id, um environment_secret e o seu organization_uuid. É um registro: “esta máquina, neste diretório, com esta sessão, está disponível para controle remoto”.

2. O WebSocket (não é polling)

Aqui vem a parte interessante. A comunicação não é polling HTTP. É um WebSocket bidirecional:

wss://api.anthropic.com/v1/session_ingress/ws/{session_id}

A CLI abre esse WebSocket e continua ouvindo. Quando você, no celular, digita algo no claude.ai, a mensagem é enviada pelo WebSocket até a sua CLI local. A CLI processa (executa ferramentas, lê arquivos, o que for) e envia o resultado de volta pelo mesmo canal.

Não é mágica, mas é elegante. O WebSocket mantém uma conexão persistente, então a latência é mínima. Não é preciso ficar perguntando “tem algo novo?” a cada 5 segundos.

A Anthropic chama isso internamente de HybridTransport: HTTPS para registro e operações pesadas, WebSocket para comunicação em tempo real.

3. O polling de trabalho

Além do WebSocket, há um endpoint de polling para quando a conexão do WebSocket cai:

GET https://api.anthropic.com/v1/environments/{env_id}/work/poll

É o fallback. Se o WebSocket se desconecta (Wi-Fi instável, laptop em modo de suspensão), a CLI pode perguntar novamente “tem trabalho para mim?” via HTTP comum. Uma solução belt and suspenders, como dizem os americanos.

4. Os rastros no disco

E aqui está o que mais me interessa como desenvolvedor de ferramentas. Cada sessão com /rc deixa rastros em três locais:

No JSONL da sessão (o arquivo que o Tokamak já lê), aparece um novo evento:

1
2
3
4
5
6
{
  "type": "bridge_status",
  "subtype": "bridge_status",
  "bridgeUrl": "https://claude.ai/code/session_01SjBW...",
  "slug": "rapid-frozen-basilisk"
}

O campo slug é particularmente interessante: um nome de três palavras gerado aleatoriamente para identificar a sessão de forma mais humana. “rapid-frozen-basilisk”. Parece até nome de operação da CIA.

Nos arquivos de telemetria, aparece uma flag:

is_claude_code_remote: true

E no log de depuração (~/.claude/debug/{sessionId}.txt), aparece TUDO:

Bridge API request: POST /v1/environments/bridge
Bridge API response: 200 { environment_id: "...", ... }
WebSocket connected: wss://api.anthropic.com/v1/session_ingress/ws/...

É um registro completo de cada interação com a Bridge API: URLs, payloads, respostas, estados do WebSocket. Um sonho para quem gosta de engenharia reversa.

Por que ainda não funciona

Agora vem a parte frustrante. Tudo o que descrevi foi descoberto ao executar o /rc no meu terminal. A CLI se registrou na Bridge API sem problemas. O WebSocket conectou. O log de depuração ficou cheio de rastros.

Mas, quando tentei conectar do celular, o claude.ai disse que não.

Pesquisei no GitHub. Dezenas de issues relatando exatamente o mesmo problema. “Remote Control not available in my organization.” Contas Max. Contas pagas. Todas com o mesmo problema.

A resposta da Anthropic é que está sendo um “gradual rollout”. Dito de forma clara: estão ativando conta por conta, não de uma vez só. E em fevereiro de 2026, a maioria das contas Max ainda não têm acesso.

É como quando te mostram o cardápio de um restaurante com fotos maravilhosas, você pede o prato principal e o garçom diz: “ah, esse ainda não tá disponível.”

O que dá para fazer sem que o Remote Control funcione

Essa é a parte construtiva. Mesmo que você não possa usar o Remote Control a partir do celular, a mera existência da API e dos rastros que ela deixa abre possibilidades interessantes para ferramentas de terceiros.

Detectar sessões remotas

O campo slug no JSONL e a flag is_claude_code_remote na telemetria permitem distinguir sessões locais de sessões remotas. Se você estiver desenvolvendo um painel de controle (como o Tokamak), pode mostrar algo como: “esta sessão foi controlada do celular entre 14:00 e 15:30”.

Dados do Bridge como contexto

O registro na Bridge API inclui machine_name, directory, branch, git_repo_url. Se você tem várias máquinas ou sessões, o Bridge fornece um inventário completo de onde cada instância do Claude Code está rodando. Uma visão geral do seu ambiente.

WebSocket como canal de observação

O WebSocket é bidirecional. Hoje, a Anthropic o utiliza para conectar o claude.ai à sua CLI. Mas um cliente de terceiros poderia, em teoria, conectar-se ao mesmo canal como observador. Visualizar as mensagens em tempo real sem interferir. Um replay ao vivo da sessão.

Digo “em teoria” porque você precisaria do environment_secret que a Bridge API fornece, e a Anthropic pode (e provavelmente vai) limitar quem pode se conectar. Mas a infraestrutura está lá.

O que isso diz sobre a Anthropic

Duas coisas chamam a atenção.

Primeiro: a qualidade técnica da Bridge API é alta. WebSocket com fallback para polling, segredos rotacionáveis, registro de ambiente com metadados do git, nomes humanos para sessões. Não é uma gambiarra. Eles projetaram para ser escalável.

Segundo: a gestão do lançamento é… discutível. Anunciar uma feature no blog oficial, que a CLI a suporte, que deixe rastros, que gere URLs funcionais… mas não a disponibilizar para a maioria dos usuários pagos. Isso gera frustração. As dezenas de issues no GitHub confirmam.

É um padrão recorrente no mundo da IA: muitos anúncios, pouco rollout. Como se as empresas precisassem gerar hype antes de terem a infraestrutura pronta para atender todos.

Resumindo

O Remote Control do Claude Code é uma feature real, bem projetada, com uma API elegante por trás. A Bridge API, o WebSocket, os rastros em disco — tudo indica que foi feito para durar.

Mas, até hoje, 27 de fevereiro de 2026, a maioria dos usuários Max não pode utilizá-la. Os dados estão lá. A API responde. Sua CLI se registra e conecta. E então o claude.ai diz que você não pode entrar.

Se você tem uma conta Max e isso funciona: parabéns, você é um dos poucos. Caso contrário: tenha paciência. Ou faça como eu e passe a tarde desmontando uma API que você ainda não pode usar. Pelo menos você aprende algo.

E se você está desenvolvendo ferramentas para o Claude Code, tome nota dos endpoints e rastros. Quando isso for liberado para todos, você vai querer estar preparado.