TIPS 20 · NOTTE

O Mac que não dorme

A mensagem que deixo ao Claude antes de ir dormir, e como preparo o Mac e as permissões para que trabalhe a noite toda sem fazer estragos.

O que é e porque importa

O Claude Code consegue trabalhar durante horas mesmo quando não estás. Uma noite escrevi-lhe mesmo: «Vou dormir, tens plenos poderes.» Na manhã seguinte, a build estava online.

Mas só funciona se lhe deixares três coisas: um objetivo claro, uma forma de verificar sozinho o próprio trabalho e um limite àquilo em que pode mexer.

Sem objetivo, anda às voltas. Sem verificação, diz-te que está tudo bem. Sem limites, pode fazer estragos. Com os três, de manhã encontras o trabalho e uma lista de decisões para aprovar, não surpresas.

1. A mensagem da noite

Escrevo-a na sessão do Claude Code aberta no projeto, como última mensagem antes de ir para a cama. Copia-a e preenche as partes entre [ ].

A mensagem
Vou dormir. Tens plenos poderes sobre este trabalho, até amanhã de manhã.

OBJETIVO
[Uma só frase, concreta. Ex.: "A nova página de preços, online no site de testes".]
Terminaste quando: [ex. "a página abre no telemóvel e os botões levam ao pagamento de teste"].

COMO VERIFICAS SOZINHO
- Corre os testes depois de cada alteração e não avances se algum falhar.
- Abre a página no browser e tira uma captura de ecrã de cada ecrã terminado.
- Não me digas "feito" sem a prova: o comando que usaste e o resultado.

LIMITES (em que NÃO podes mexer)
- A base de dados real, os dados dos utilizadores, os pagamentos reais.
- Não apagues ficheiros, não publiques na App Store, não mudes as chaves.
- Se para avançares tiveres de fazer uma destas coisas: para e escreve-me.

SE FICARES BLOQUEADO
Tenta dois caminhos diferentes. Se nenhum funcionar, escreve onde paraste e passa à parte seguinte.

AMANHÃ DE MANHÃ
Deixa-me um resumo: o que fizeste, o que decidiste sozinho e porquê, o que precisas de mim.

Como preencher as partes entre [ ]

  • Objetivo: uma só coisa. «Arranja o site» não é um objetivo. «A nova página de preços, online no site de testes» é.
  • «Terminaste quando»: escreve o que verias tu, com os teus olhos, se o trabalho estivesse feito. É a linha que lhe diz quando parar.
  • Os testes têm de já existir e passar antes de ires dormir. Se não tens nenhum, o trabalho desta noite pode ser precisamente escrevê-los.
  • O Claude só consegue tirar as capturas de ecrã se tiver uma forma de abrir o browser, por exemplo ligado ao Chrome. Se não tiver, tira essa linha ou põe uma verificação que ele possa fazer a partir do terminal.

2. Antes de apagar a luz

Se o Mac entra em repouso, o Claude também para. Antes de colar a mensagem, faço quatro coisas:

  1. Guardo tudo com um commit. Assim, de manhã, nas alterações vejo só o trabalho da noite.
  2. Ligo o carregador.
  3. Deixo o portátil aberto. Fechar a tampa põe-no em repouso, mesmo com as definições que o mantêm acordado.
  4. Impeço o repouso. Na app de desktop do Claude há a opção Keep computer awake, em Settings > This computer > System. A partir do terminal, uso um comando que o Mac já tem: caffeinate.

A partir do terminal, abro o Claude Code assim:

A linha
caffeinate -i claude

O caffeinate -i mantém o Mac acordado enquanto o Claude Code estiver aberto. Quando o fechas, o Mac volta a comportar-se como sempre. O ecrã, esse, pode desligar-se, não muda nada.

3. Não o deixes parado à espera de um sim

No modo Manual, o Claude Code pede-te autorização antes da maioria das alterações e dos comandos. De noite, isso quer dizer que à primeira pergunta fica parado até acordares.

Por isso, antes de ir dormir, vejo em que modo estou. No terminal mudas com Shift+Tab e vês o modo escrito por baixo do prompt. De noite uso um destes dois:

  • auto: o Claude trabalha sem te perguntar nada e um segundo modelo verifica as ações antes de correrem, bloqueando as arriscadas (deploys em produção, apagamentos em massa, force push). Também tem em conta os limites escritos na mensagem. Se não o encontrares com Shift+Tab, a tua conta ou o teu modelo não o têm: usa o outro.
  • acceptEdits: aceita sozinho as alterações aos ficheiros e alguns comandos básicos, como criar ou mover pastas. Para os outros comandos perguntaria, por isso vai junto com as regras allow que vês mais abaixo, para o deixar correr pelo menos os testes.

Uma coisa a saber sobre o modo auto: se bloquear uma ação 3 vezes seguidas, ou 20 no total, entra em pausa e o Claude volta a pedir-te autorização. Se de manhã o encontrares parado numa pergunta, vê o que queria fazer: é precisamente uma das decisões que te cabem a ti.

O que salta todas as permissões (bypassPermissions), esse não uso: a documentação diz para o usar só em contentores ou máquinas virtuais isoladas, não no teu Mac.

4. Limites a sério: regras e hooks

Uma regra escrita na mensagem é um pedido; um hook é um muro. A documentação também o diz, por outras palavras: as permissões são aplicadas pelo Claude Code, não pelo modelo. O que escreves na mensagem orienta o que o Claude tenta fazer, mas não muda o que lhe é permitido.

As regras allow e deny

São linhas no ficheiro .claude/settings.json do projeto. Allow: o que o Claude pode fazer sem perguntar. Deny: o que nunca pode fazer, em nenhum modo. Se uma coisa está ao mesmo tempo em allow e em deny, ganha deny. Também as vês e alteras escrevendo /permissions dentro do Claude Code.

De dia, peço ao Claude que as prepare:

O prompt
Acrescenta ao ficheiro .claude/settings.json deste projeto uma regra allow para correr os testes sem me perguntar, e regras deny para: git push, os comandos rm, as alterações ao ficheiro .env. Mostra-me o ficheiro antes de o guardares.

Deve ficar mais ou menos assim (em vez de npm test vai o comando de testes do teu projeto):

O ficheiro
{
  "permissions": {
    "allow": ["Bash(npm test *)"],
    "deny": [
      "Bash(git push *)",
      "Bash(rm *)",
      "Edit(./.env)"
    ]
  }
}

Atenção: uma regra bloqueia o comando escrito dessa forma, não o mesmo programa corrido de outra maneira. Por isso os limites ficam também na mensagem, e é melhor que as chaves reais nem sequer estejam no projeto.

O hook para os comandos perigosos

Um hook é um comando que o Claude Code corre sozinho num momento preciso. O que precisas aqui chama-se PreToolUse: dispara antes de o Claude usar uma ferramenta, por exemplo antes de cada comando no terminal. O script olha para o comando e, se terminar com o código 2, o Claude Code bloqueia-o e passa ao Claude o motivo, para que ele mude de caminho. Também bloqueia comandos que uma regra allow deixaria passar.

Não tens de o escrever tu. Peço-o ao Claude, sempre de dia:

O prompt
Cria um hook PreToolUse para este projeto, em .claude/settings.json, que bloqueie os comandos Bash que contenham: rm -rf, git push --force, [o comando com que publicas a tua app]. O script tem de terminar com o código 2 e escrever o motivo do bloqueio. Depois testa-o: mostra-me que um comando proibido é mesmo travado e que um comando normal passa.

Depois escrevo /hooks no Claude Code e confirmo que aparece na lista, por baixo de PreToolUse.

5. Na manhã seguinte

A primeira coisa que leio é o resumo, sobretudo a parte «o que decidiste sozinho». É aí que estão as coisas para aprovar. Depois corro eu um dos comandos que ele usou como prova: se a mim me sair um resultado diferente, essa prova não vale.

E na mesma sessão pergunto:

O prompt
Mostra-me a lista dos ficheiros que alteraste esta noite. Para cada decisão que tomaste sozinho, diz-me o que acontece se eu a anular.

Os erros mais comuns

  • Deixá-lo no modo Manual: ao primeiro pedido de autorização fica parado até de manhã. Antes de saíres, escolhe o modo e prepara as regras allow.
  • Um objetivo vago, tipo «melhora a app»: trabalha a noite toda e não sabes em quê. Escreve uma só coisa, com a linha «terminaste quando».
  • Fechar a tampa ou deixá-lo a bateria: o Mac entra em repouso ou fica sem bateria a meio da noite. Deixa-o aberto, ligado ao carregador, com o caffeinate ou a opção que o mantém acordado.
  • Confiar só nos limites escritos na mensagem: são um pedido e, numa conversa longa, podem perder-se. Para as coisas que nunca podem acontecer, põe uma regra deny ou um hook.

Checklist

  • Um objetivo numa frase e a linha «terminaste quando»
  • Os testes existem e passam antes de a noite começar
  • Tudo guardado com um commit antes da noite
  • Modo escolhido: auto, ou acceptEdits com as regras allow
  • Regras deny e hook testados de dia
  • Carregador ligado, tampa aberta, Mac que não entra em repouso
  • A mensagem da noite colada, com os teus limites

Perguntas frequentes

Tenho de deixar a sessão aberta durante a noite?

Sim, a sessão trabalha no teu Mac. Se precisas que continue com o computador desligado, o Claude Code tem sessões na cloud, mas é outra configuração.

O modo auto não chega, sem regras nem hooks?

Já bloqueia sozinho muitas ações arriscadas, mas a própria documentação diz que não garante a segurança. E os limites que escreves no chat, ele relê-os da conversa: se a conversa for compactada, podem perder-se. Para as coisas que nunca podem acontecer, regra deny ou hook.

← Todos os guias