Dá para entregar o desenvolvimento às sessões na nuvem do Claude Code sem abrir um novo caminho até a produção, desde que a nuvem só consiga mexer em um único repositório do GitHub e o seu servidor de produção apenas faça pull desse repositório. Só que, até chegar lá, travei mais de uma vez. Este artigo é o meu registro (eu mantenho este site) de quando comecei a usar as sessões na nuvem em um projeto de desenvolvimento separado, em 4 de outubro de 2026, conferido de novo com o texto original da documentação oficial.

O que a nuvem pode acessar

Um repositório do GitHub

Instale o Claude GitHub App com "Only select repositories" (apenas repositórios selecionados) e dê acesso só a esse repositório.

Servidor de produção

Só pull

A produção busca o código com uma chave somente leitura. Nem a nuvem nem o GitHub recebem uma chave da produção.

Ambiente na nuvem

Um novo para cada projeto

Quem usa um ambiente consegue ler as variáveis de ambiente dele. Não coloque segredos nelas.

Fontes: Use Claude Code in the cloud e Configure cloud environments. Conferido em 4 de outubro de 2026. Para entender como funciona, como começar e os preços, veja "O que são as sessões na nuvem do Claude Code?"

1. Uma configuração que protege a produção: a produção só faz pull

Minha maior preocupação era que passar pelo GitHub criasse mais um caminho até o servidor de produção. Acabei ficando com a configuração abaixo (é uma escolha minha, não uma recomendação oficial). As setas mostram o sentido em que os dados são buscados.

  • Sessão na nuvem Escreve o código e faz push de branches (não consegue entrar na produção)
  • → push
  • Repositório privado no GitHub O único repositório em que o App está instalado
  • ← fetch
  • Servidor de produção Faz pull com uma deploy key somente leitura; quem executa o deploy é uma pessoa
ChaveColoque na produção uma chave somente leitura exclusiva daquele repositório (uma deploy key). Segundo a documentação do GitHub, uma deploy key dá acesso a um único repositório e, por padrão, é somente leitura.
O que eu não façoNão dou ao GitHub Actions uma chave da produção para fazer deploy automático. Isso criaria mais um caminho até a produção.
DeployUma pessoa executa manualmente. Um script no lado da produção puxa o código mais recente, faz o build e troca a versão. Se falhar, a versão em execução continua no ar.

No começo tentei reaproveitar a chave de outro repositório, e o GitHub recusou com "Key is already in use" (a chave já está em uso). Segundo a documentação do GitHub, essa mensagem aparece quando a chave já está registrada em outra conta ou outro repositório. Como cada repositório recebe a própria chave, uma chave vazada expõe só aquele repositório.

2. O que é enviado se você começar sem o GitHub

Costumo guardar meu código em um repositório git no meu próprio servidor, então, no início, cogitei usar as sessões na nuvem sem o GitHub. Segundo a documentação oficial, quando você executa claude --cloud "task description" em, por exemplo, um repositório sem remote, o repositório local é empacotado em um único bundle e enviado para a nuvem. Veja o que é enviado.

HistóricoO histórico de todas as branches. Um arquivo que você commitou uma vez e depois apagou também é enviado, desde que continue no histórico.
Alterações não commitadasAlterações não commitadas em arquivos rastreados pelo git.
Não enviadoArquivos que o git não rastreia (faça git add se precisar deles).

macOS, Linux, WSL

Nomes com cara de segredo ficam na máquina

Para arquivos com nomes como .env, *.tfvars, id_rsa ou *.pem, as alterações não commitadas ficam no seu computador em vez de serem enviadas.

Windows (fora do WSL)

Enviado seja qual for o nome

As alterações não commitadas em arquivos rastreados são enviadas como estão. Antes de começar, faça stash ou desfaça qualquer alteração que você não queira enviar.

Os casos arriscados são quando você rastreia no git um arquivo com segredos e o editou e quando você commitou segredos em algum momento no passado. Um .env excluído pelo .gitignore nem chega a ser enviado.

Mais um detalhe: segundo a documentação oficial, uma sessão criada a partir de um bundle só consegue fazer push para "repositories your GitHub connection has push access to" (repositórios em que a sua conexão com o GitHub tem permissão de push). Não encontrei na documentação nenhuma forma de mandar os resultados direto de volta para um repositório próprio fora do GitHub. Depois de chegar a escrever um documento de procedimentos, desisti e criei um repositório privado no GitHub.

3. Os cinco pontos em que eu realmente travei

Estes são os obstáculos que encontrei entre criar um repositório privado no GitHub e de fato começar, cada um organizado em sintoma, causa e solução.

1) O repositório não aparece na lista

SintomaO repositório que eu tinha acabado de criar não estava na lista. Só apareciam repositórios de teste de outra conta que eu tinha experimentado antes.
CausaA conta do GitHub conectada ao claude.ai não era a que eu uso normalmente. Eu tinha conectado outra conta antes e esquecido disso.
SoluçãoDesconectei o GitHub em claude.ai/customize/connectors, entrei de novo na conta certa no navegador e conectei outra vez. A documentação oficial diz que desconectar remove as credenciais do GitHub usadas pelas sessões na nuvem.

2) Até onde instalar o GitHub App

SintomaNo meio da conexão, você precisa escolher até onde instalar o Claude GitHub App. Escolher "All repositories" instala o App em todos os repositórios daquela conta ou organização.
CausaMinha conta também faz parte da organização de um projeto de cliente, e eu não queria que o Claude mexesse nela.
SoluçãoInstalei só na organização da minha própria empresa e usei "Only select repositories" para escolher apenas esse repositório. Algumas organizações exigem que um owner da organização aprove a instalação.

3) Aparecem repositórios de organizações sem o App

SintomaMesmo depois de restringir o escopo, vários repositórios de outra organização apareceram na lista.
CausaTodos eram repositórios públicos. Segundo a tabela da documentação oficial, conectar pelo GitHub App dá acesso a "all public repositories, plus private repositories where the App is installed" (todos os repositórios públicos, mais os privados em que o App está instalado).
SoluçãoNão é preciso fazer nada. Repositórios públicos já podem ser lidos por qualquer pessoa, então nada novo fica exposto. Os repositórios privados só podem ser usados onde o App está instalado.

4) Um ambiente antigo na nuvem continuava lá

SintomaEntre os meus ambientes na nuvem (configurações salvas com as opções de acesso à rede, as variáveis de ambiente e um script de setup), ainda estava lá um que eu tinha criado para outro projeto.
CausaSegundo a documentação oficial, quem usa um ambiente consegue ler as variáveis de ambiente e o script de setup dele. Se você reaproveitar, os valores antigos ficam visíveis também a partir do projeto novo.
SoluçãoCriei um ambiente novo para este projeto e deixei as variáveis de ambiente vazias. O acesso à rede ficou no padrão, "Trusted". Se você precisar de uma chave de API, no Pro e no Max dá para registrá-la em "API credentials" em vez de usar uma variável de ambiente, e a sessão não consegue ler o valor da chave (ainda não disponível no Team e no Enterprise).

5) Tentei fazer com que lesse um arquivo local

SintomaEu estava prestes a escrever "leia o documento de procedimentos na minha pasta local" na primeira instrução.
CausaUma sessão na nuvem não enxerga os arquivos do seu PC. A tabela comparativa da documentação oficial também diz que as sessões na nuvem não usam a sua configuração local; usam "only the repository" (apenas o repositório).
SoluçãoColoquei as regras do projeto, os requisitos de segurança e as regras básicas da produção, tudo na primeira mensagem, e anexei a especificação. As regras que você reutiliza podem ir no CLAUDE.md do repositório e ser commitadas, para não precisar escrevê-las toda vez.

4. Como os modos de permissão mudam na nuvem

Logo antes de enviar, percebi que o modo de permissão estava em "Accept edits". Pelo nome, parece o modo que mais avança sozinho, mas, segundo a documentação oficial, o Accept edits na nuvem corresponde ao modo padrão (Manual) do Claude Code local. Na nuvem, as edições de arquivos já vêm aprovadas em todos os modos, então o modo padrão simplesmente aparece com esse nome.

Accept edits

Para nos comandos

As edições de arquivos passam automaticamente. Comandos como npm install, builds e git push esperam a sua aprovação a cada vez.

Plan

Planeja primeiro

Antes de mudar qualquer coisa, monta e mostra um plano do que vai fazer.

Auto

Segue sozinho

Em vez de pedir aprovação, um classificador (um mecanismo de verificação de segurança) avalia cada ação e segue em frente. Só aparece quando a sua organização permite e o modelo selecionado oferece suporte.

Eu queria que ele continuasse trabalhando sem mim, então mudei para Auto. Observe que na nuvem não dá para escolher o modo que pula todas as verificações (bypass permissions), e ele é ignorado mesmo que esteja definido no arquivo de configurações do repositório. Para uma comparação detalhada de cada modo, veja "Modos de permissão do Claude Code".

5. Quanto custou de fato: US$ 226 com uma só instrução

Com tudo isso configurado, rodei uma sessão na nuvem com o crédito por tempo limitado do plano Max (US$ 250). Na primeira mensagem, entreguei o documento de design e as instruções, com o modo de permissão em Auto. Depois disso, não falei com ele nenhuma vez. No meio do caminho, abri a tela de uso, levei um susto com a velocidade com que o crédito estava acabando e mandei parar. Quando parou, restavam US$ 24 de crédito. Se eu não tivesse parado, teria consumido os US$ 250 inteiros.

US$ 226

Crédito usado (de US$ 250, restaram US$ 24)

676,7 mil

Contexto ao parar (68% de 1M)

86%

Limite semanal do plano usado (todos os modelos)

Fonte: minha tela de uso do Claude Code (4 de outubro de 2026, plano Max 20x). Os 86% do limite semanal incluem o uso fora da nuvem.

Com uma só instrução, isto é o quanto de trabalho a nuvem tinha feito até eu mandar parar (segundo o meu registro de trabalho).

BaseUma base completa de produto para um app web (design, alternância entre japonês e inglês, formulário de contato, notificações de erro, sitemap, suporte offline e mais).
Funcionalidades41 ferramentas que rodam no navegador (texto, imagens, PDF, planilhas e mais).
Testes695 testes unitários e 142 testes de interface. Todos passando.
OutrosVerificação do build no Docker, configuração de CI, correção de 3 bugs relacionados à produção e um documento de handoff.

Por que o crédito acaba tão rápido

O custo não depende de quantas vezes você conversa com ele, e sim de quantas vezes o Claude chama o modelo e de quanto contexto ele lê a cada vez. Quando roda de forma autônoma, cada leitura de arquivo, cada escrita de arquivo e cada execução de teste gera uma chamada, então ele pode chegar a centenas ou milhares de chamadas sem nenhuma conversa. A documentação oficial (Manage costs effectively) também diz que os custos crescem com o tamanho do contexto.

Cada chamada relê o contexto acumulado até ali. Mesmo com cache, a leitura não sai de graça: pelo preço de leitura de cache do Opus 5.5 (US$ 0,20 por milhão de tokens), ler 500 mil tokens uma vez custa cerca de US$ 0,10. Repita isso 1.000 vezes e são cerca de US$ 100 (é um exemplo que calculei a partir do preço unitário; não verifiquei o número real de chamadas nem a divisão por modelo nesta sessão). O código e os testes que ele escreve são cobrados à parte, pelo preço de saída.

Até onde consegui encontrar na documentação oficial, não existe uma configuração que limite o gasto de crédito (o --max-budget-usd vale só para execuções não interativas, e o limite de gasto mensal é para os créditos de uso pré-pago). As únicas formas de definir um ponto de parada são escrevê-lo nas instruções ou parar você mesmo. Além disso, quando o crédito acaba, as sessões na nuvem passam a usar o limite semanal do seu plano, igual ao uso local. Se você rodar um trabalho do mesmo tamanho quando restar pouco do limite semanal, vai bater no limite, incluindo o Claude Code local.

A divisão: releituras e subagentes

Depois de parar, abri a divisão detalhada na tela de uso (estes números cobrem a sessão inteira, incluindo o resumo que pedi para ele escrever depois de parar).

8h33min

Tempo em que o modelo trabalhou (eu interagi por 2min24s)

99%

Parcela do Opus (Sonnet 1%)

63%

Parcela dos subagentes (general-purpose 34%, Agent 29%)

Fonte: a visão por sessão da minha tela de uso do Claude Code (4 de outubro de 2026). Custo exibido: US$ 231,09.

Leituras de cache242,5 milhões de tokens. É a releitura da conversa até ali, e responde por quase todos os tokens. Taxa de acerto do cache: 99%.
Escritas de cache1,4 milhão de tokens.
Entrada e saída1.200 tokens de entrada e 10.700 tokens de saída (como aparecem na linha do Opus 5.5 na tela).
Dica na telaEm paráfrase: cada subagente faz as próprias requisições; considere um modelo mais barato para subagentes simples, ou deixe os prompts deles mais enxutos.

Interagi por só 2 minutos e 24 segundos; nas mais de 8 horas restantes, o Claude trabalhou sozinho. Durante todo esse tempo, a conversa principal no Opus e os subagentes, também rodando no Opus, ficaram relendo uma conversa cada vez mais longa, de novo e de novo. Quando pedi à sessão na nuvem que levantasse a divisão, ela informou que terminar uma ferramenta levava cerca de 30 ações para um subagente no Sonnet e de 130 a 230 ações para um subagente no Opus (é a contagem da própria sessão; não conferi uma por uma).

O custo exibido na tela (US$ 231,09) foi quase igual à queda do crédito no momento em que abri essa tela (US$ 250 → US$ 18, ou seja, US$ 232). Eu tinha US$ 24 quando parei a sessão; abri essa tela depois, então o saldo já tinha caído um pouco mais. Segundo a documentação oficial, o custo nessa tela é uma estimativa baseada na contagem de tokens multiplicada pelos preços de tabela. Então parece seguro supor que o crédito é descontado pelos preços de tabela da API (a documentação oficial não diz isso explicitamente).

Se você não especificar um modelo, os subagentes usam o mesmo modelo da conversa principal (documentação oficial: "Create custom subagents"). Com o Opus como modelo principal, até o trabalho braçal acaba rodando no Opus.

Formas de reduzir o custo (das de maior impacto para as de menor)

  • 1. Rode os subagentes no Sonnet Escreva "run subagents with model: sonnet" nas instruções. Também dá para mudar o padrão com a variável de ambiente CLAUDE_CODE_SUBAGENT_MODEL (não é um segredo, então não tem problema colocá-la no ambiente).
  • 2. Mantenha as conversas curtas (/compact ou uma nova sessão) Quanto mais curta a conversa, mais barata cada ação. Se você vai continuar no mesmo assunto, resumir com /compact encurta a conversa sem trocar de sessão (dá para dizer o que manter, como "mantenha os resultados dos testes"). Quando o assunto mudar, ou quando você retomar depois de uma pausa longa, comece uma nova sessão. Se você pedir para ele registrar o progresso em um documento de handoff, nada se perde quando você divide o trabalho.
  • 3. Defina um ponto de parada desde o início Escreva algo como "pare e reporte quando a base estiver pronta" ou "pare e reporte quando chegar a uns US$ 50" (não existe configuração de limite de gasto, então use as instruções para definir os limites).
  • 4. Delegue também o trabalho de integração Deixe os subagentes cuidarem de testes, commits e pushes, para que menos trabalho aconteça na conversa principal, longa e cara.
  • 5. Alivie a verificação Rode os testes de interface só das ferramentas recém-criadas, e a suíte completa uma vez antes do merge. Tire capturas de tela uma vez por ferramenta na largura de desktop e uma vez na largura de celular.
  • 6. Pare na hora o trabalho desnecessário Um subagente interrompido no meio não deixa nenhum resultado, e o que ele consumiu não é reembolsado.

Como regra prática, rode de 2 a 3 em paralelo. Segundo a avaliação da própria sessão na nuvem, reduzir o paralelismo só alonga o tempo, sem mudar muito o custo total. Mais importante do que o número de tarefas em paralelo é manter cada conversa curta e cada instrução específica.

Com base na documentação oficial, é assim que penso a escolha entre /compact e uma nova sessão. O /compact relê a conversa inteira para gerar um resumo, mas, enquanto o cache ainda está ativo, boa parte dessa releitura vem do cache, então não sai tão caro quanto o tamanho da conversa faria pensar ("Prompt caching"). Depois de um longo período parado, quando o cache já expirou, tudo é relido sem cache, o que custa caro. Já uma nova sessão não custa nada, mas não leva junto o que veio antes ("Manage costs effectively"). Os resumos podem deixar detalhes de fora, então é mais seguro registrar antes em um documento tudo o que você quer manter. Observe que nas sessões na nuvem o /compact funciona, mas o /clear não; você começa uma nova sessão pela barra lateral ("Claude Code on the web").

Este é o tipo de mensagem que colo no início da sessão seguinte (com o nome do projeto omitido).

Retome de onde parou.
Leia CLAUDE.md → docs/HANDOFF.md → docs/TODO.md e siga as regras.
Assunto desta sessão: XX
Rode os subagentes com model: sonnet, no máximo 2-3 em paralelo.
Pare e reporte quando atingir um orçamento de US$ XX. Reporte em português do Brasil.

Para o resumo de contexto nas sessões na nuvem, a própria nuvem define a variável de ambiente CLAUDE_AUTOCOMPACT_PCT_OVERRIDE, então adicionar essa variável ao seu ambiente não tem efeito. Para que o resumo entre em ação mais cedo, use CLAUDE_CODE_AUTO_COMPACT_WINDOW ou /autocompact, como orienta a documentação oficial.

6. Checklist antes de começar

  • Conta do GitHub A conta conectada ao claude.ai é a que você quer usar?
  • Escopo do App Você instalou só nos repositórios necessários, com "Only select repositories"?
  • Histórico Há segredos que você commitou no passado ainda guardados no histórico do repositório?
  • Ambiente Você criou um novo para este projeto? Está mantendo os segredos fora das variáveis de ambiente dele?
  • Produção Você evitou criar qualquer caminho da nuvem ou do GitHub até a produção (a produção é que faz pull)?
  • Regras Você colocou as regras que reutiliza no CLAUDE.md do repositório?
  • Modo de permissão Você escolheu Auto para deixá-lo rodar, ou Accept edits para conferir cada passo?

Resumo

Usar as sessões na nuvem protegendo a produção se resume a três pontos: a nuvem mexe em um único repositório do GitHub, a produção faz pull dele com uma chave somente leitura e quem executa o deploy é uma pessoa. Dá para começar sem o GitHub, mas o repositório é enviado com o histórico de todas as branches e, no Windows, as alterações não commitadas em arquivos rastreados são enviadas seja qual for o nome.

Onde eu realmente travei: uma conta do GitHub diferente estava conectada, o escopo do App, um ambiente antigo esquecido, arquivos locais invisíveis e o "Accept edits" parando em cada comando. O checklist acima evita todos esses problemas.

Quanto ao custo, uma única instrução executada de forma autônoma consumiu US$ 226 do crédito por tempo limitado antes de eu mandar parar no meio. O custo não depende de quantas vezes você conversa com ele, e sim do número de chamadas e do tamanho do contexto. Na divisão, a maior parte veio da releitura da conversa e dos subagentes rodando no mesmo modelo da conversa principal. Coloque os subagentes no Sonnet, mantenha as conversas curtas com /compact ou uma nova sessão e escreva um ponto de parada nas instruções.

Perguntas frequentes

P. Dá para experimentar as sessões na nuvem sem o GitHub?

R. Sim. O claude --cloud "task description" empacota e envia o seu repositório local. Ele precisa ter menos de 100 MB e pelo menos um commit. O histórico de todas as branches é enviado, e a documentação oficial não descreve nenhuma forma de mandar os resultados direto de volta para um repositório fora do GitHub.

P. Aparecem na lista repositórios de organizações em que não instalei o App. Algo está vazando?

R. Não, se forem repositórios públicos. Quando você conecta pelo GitHub App, as sessões na nuvem podem usar todos os repositórios públicos, por isso eles aparecem como opção. Os repositórios privados só podem ser usados onde o App está instalado.

P. Posso colocar uma chave de API em uma variável de ambiente?

R. Não recomendo. A documentação oficial avisa que quem usa um ambiente consegue ler as variáveis de ambiente dele e desaconselha colocar segredos ali. No Pro e no Max, você pode registrá-la em "API credentials", cujo valor a sessão não consegue ler.

P. Escolhi "Accept edits", mas ele para em cada comando.

R. É o comportamento esperado. Na nuvem, as edições são permitidas em todos os modos, então o modo padrão aparece com o nome "Accept edits". Para que os comandos rodem sem aprovação, escolha Auto (só aparece quando a sua organização permite e o modelo oferece suporte).

P. Por que o crédito cai tanto se eu nem estou conversando com ele?

R. Porque o custo não é determinado por quantas vezes você fala, e sim por quantas vezes o Claude chama o modelo e por quanto contexto ele lê a cada vez. Quando roda de forma autônoma, cada leitura de arquivo, cada escrita de arquivo e cada execução de teste gera uma chamada, e o contexto não para de crescer. No meu caso, uma instrução consumiu US$ 226 antes de eu parar no meio (seção 5).

P. O crédito por tempo limitado também pode ser usado assim?

R. Sim. O crédito do Pro e do Max (Pro US$ 100, Max US$ 250) é aplicado automaticamente ao uso das sessões na nuvem e, enquanto durar, esse uso não conta nos limites de uso do seu plano. Dá para resgatá-lo até 7 de outubro, no horário do Pacífico dos EUA, e ele expira no fim de 4 de novembro (16h59 de 5 de novembro, no horário do Japão). Não pode ser usado em Projects, Routines, Remote Control etc. Para mais detalhes, veja o artigo oficial de suporte e "O que são as sessões na nuvem do Claude Code?"

Fontes

Todas as especificações oficiais foram conferidas com o texto original em 4 de outubro de 2026. O registro da configuração vem de uma única execução em um único projeto meu, e o que as telas mostram pode mudar conforme a versão e com o tempo.