Aprovações
Como aprovar pedidos de permissão do Claude Code (e do Codex) pelo celular
O motivo mais comum para um agente parar de avançar é um pedido de permissão que ninguém viu. Há três formas de responder a um sem tirar o celular do bolso: as notificações push do próprio Claude Code, um hook caseiro com ntfy ou um app com caixa de entrada. Veja como cada uma funciona com o Claude Code, o que muda para o Codex e outros agentes, e quanto cada uma custa em segurança.
Resposta rápida
Com um plano Pro, Max, Team ou Enterprise, inicie o Remote Control e, em /config, ative Push when actions required. O app do Claude passa a te notificar, e você responde ao pedido no app. Como alternativa gratuita e auto-hospedada, hooks de código aberto como o claude-remote-approver enviam cada PermissionRequest para o ntfy com botões Aprovar/Negar. O Codex tem o mesmo hook PermissionRequest. Apps como o Maude mostram os pedidos de vários agentes numa única caixa de entrada, com notificações push que trazem Permitir/Negar.
Quando o Claude Code quer executar um comando ou editar um arquivo que você não aprovou antes, ele para e pergunta. Se você está no terminal, isso leva um segundo. Se não está, a sessão fica esperando, e isso pode significar uma hora parada por causa de uma tecla. Toda configuração de aprovação remota leva o pedido até o seu celular e a sua resposta de volta ao agente. Elas diferem em como o pedido é interceptado, por onde ele passa e quem pode respondê-lo.
Como funcionam as aprovações remotas
Existem dois mecanismos, e toda ferramenta usa um deles.
- O protocolo remoto do próprio agente. O Remote Control do Claude Code encaminha o diálogo de permissão real para o app do Claude. O Remote Control do Antigravity e o app-server do Codex funcionam do mesmo jeito. Nada no meio decide coisa alguma: você responde ao próprio pedido do agente.
- Hooks. O Claude Code executa um programa que você configura em pontos fixos. Um hook
PermissionRequestdispara quando um diálogo de permissão está prestes a aparecer, e pode responder por você imprimindo uma decisão como{"behavior": "allow"}ou"deny". Um hookPreToolUsedispara antes de cada chamada de ferramenta e pode retornarallow,deny,askoudefer. Um hook que envia um push e espera o seu toque é como funciona toda ferramenta caseira de aprovação pelo celular. Os detalhes estão na referência de hooks.
Push nativo no Claude Code
O caminho oficial da Anthropic passa pelo Remote Control:
- Inicie uma sessão com
claude remote-control(modo servidor) ouclaude --remote-control, ou digite/remote-controlnuma sessão em andamento. - Entre no app do Claude no celular com a mesma conta e permita notificações.
- No terminal, rode
/confige ative Push when actions required, que cobre pedidos de permissão e perguntas. Push when Claude decides cobre atualizações proativas, como "testes concluídos".
A documentação aponta algumas coisas com que você vai esbarrar:
- Planos e autenticação. O Remote Control está disponível nos planos Pro, Max, Team e Enterprise, e chaves de API não são suportadas. No Team e no Enterprise, um Owner precisa ativá-lo.
- Os pedidos não expiram. Pedidos de permissão e perguntas ficam abertos até você responder.
- O push pausa enquanto você está no terminal. O Claude Code não envia push enquanto você está digitando ou com o foco no terminal conectado.
CLAUDE_CLIENT_PRESENCE_FILEestende isso para sempre que você estiver na máquina. - O processo precisa continuar vivo. O processo
claudetem que continuar rodando, então, num servidor, inicie-o dentro do tmux. - Alguns modos não podem ser escolhidos pelo app. Segundo a documentação mobile, não dá para selecionar Bypass permissions pelo app, nem Auto numa sessão de Remote Control.
Se você tem um plano Claude e só usa o Claude Code, comece por aqui. É grátis com o seu plano e mantido pela Anthropic.
Faça você mesmo com hooks ntfy
O ntfy é um serviço de push de código aberto. Você publica num tópico com uma simples requisição HTTP, e o app do ntfy no celular mostra a mensagem. Vários projetos de código aberto o combinam com um hook PermissionRequest. O hook publica a chamada de ferramenta pendente no seu tópico com botões de ação, espera o seu toque num segundo tópico e devolve a decisão ao Claude Code. Crédito a quem merece:
| Projeto | Hook | Se você não responder | Observações |
|---|---|---|---|
| claude-remote-approver (yuuichieguchi) | PermissionRequest | Volta para o prompt do terminal após 120 s (300 s para revisões de plano) | npm install -g claude-remote-approver; gera um tópico aleatório de 128 bits; Approve / Always Approve / Deny |
| claude-push (coa00) | PermissionRequest | Volta para o terminal após 90 s (configurável) | Script de instalação em shell; Allow / Deny |
| claude-code-phone-notifications (ssarnecki) | PermissionRequest, PreToolUse, Stop | Espera cerca de 9 minutos e depois volta para o terminal | Espera 30 s antes de enviar o push, caso você esteja na mesa; também envia os prompts AskUserQuestion (sem botões) |
| hookline (tsyche) | PreToolUse para o Claude; PermissionRequest para o Codex | 15 minutos por padrão, com uma janela maior para respostas atrasadas | Também cobre Codex, Grok e OpenCode; suporta um ntfy auto-hospedado com credenciais |
Os quatro têm licença MIT. Os tempos limite são os padrões documentados de cada um. Se você só quer um aviso, sem responder remotamente, o hook Notification do Claude Code basta. O matcher permission_prompt dispara quando um diálogo aparece:
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [
{ "type": "command",
"command": "curl -s -d 'Claude Code is waiting for approval' https://ntfy.sh/your-long-random-topic" }
]
}
]
}
}
Coloque isso em ~/.claude/settings.json na máquina que roda o Claude Code. Você ainda vai precisar chegar a um terminal para responder. Os projetos acima acrescentam o caminho da resposta.
A caixa de entrada do Maude
O Maude segue a primeira abordagem. O daemon dele no seu servidor fala com o protocolo de cada agente, então um pedido de permissão chega ao app como o pedido real, e não como um palpite de hook. Os pedidos de todas as sessões em todos os servidores caem numa única caixa de entrada, ao lado dos erros e do trabalho concluído. Você pode responder ali mesmo, ou direto pela notificação push, que traz Permitir e Negar. Um pedido espera até você responder; a sessão não expira nem segue sem você. Funciona com Claude Code, Codex, OpenCode e Grok Build. O Antigravity é a exceção: o agy headless não consegue pausar antes de uma ferramenta rodar, então o Maude mostra a ação negada depois e a repete se você permitir. O Maude é um app pago, e cada agente precisa da sua própria conta. Ele não é o único app com caixa de entrada e push: o Happier, entre outros, tem os dois.
Codex e outros agentes
- O Codex também tem hooks, ativados por padrão. Um hook
PermissionRequestpode responder com"behavior": "allow"ou"deny", e oPreToolUsepode negar. Eles ficam em~/.codex/hooks.jsonou em[hooks]noconfig.toml. É isso que o hookline usa para o Codex. A configuração mais antiganotifydo Codex executa um programa quando uma rodada termina. Textos de terceiros relatam que ela não dispara para pedidos de aprovação, então use hooks para as aprovações. Para o caminho oficial do Codex pelo app no celular e os limites dele no Linux, veja Codex CLI numa VPS. - O Antigravity responde aos pedidos pelo painel do Remote Control quando você o roda de forma interativa ou como daemon. O
agyheadless nega em vez de perguntar. Veja Antigravity CLI num servidor. - OpenCode e Grok Build são cobertos pelo suporte a plugins e hooks do hookline, ou por apps multiagente.
Segurança das aprovações remotas
Uma aprovação pelo celular é tão forte quanto o elo mais fraco entre o pedido e o seu toque.
- No ntfy.sh, o tópico é a senha. A documentação do ntfy diz isso com todas as letras: sem cadastro, qualquer pessoa que saiba o nome de um tópico pode ler e publicar nele. Num servidor público, um tópico adivinhado significa que outra pessoa pode aprovar os comandos do seu agente. Use um tópico longo e aleatório, ou hospede o ntfy você mesmo com autenticação.
- Leia o comando, não o título. Um push na tela de bloqueio mostra um resumo. Um
rm -rfno meio de uma linha Bash comprida passa fácil despercebido numa tela de 6 polegadas. Use "sempre permitir" para ferramentas somente leitura, não paraBash(*). - Conheça o seu fallback. Os hooks caseiros acima voltam para o prompt do terminal quando expiram, então um pedido sem resposta fica bloqueado em vez de ser aprovado automaticamente. Se escrever o seu próprio hook, siga a mesma regra. A documentação do Claude Code avisa que um hook
PreToolUseque expira não bloqueia a chamada da ferramenta, que segue pelo fluxo normal de permissões, então não conte com um hook travado como barreira. - Proteja o canal. O tráfego de aprovações revela o que o seu agente está fazendo. O Remote Control da Anthropic passa pelos servidores da Anthropic, e o relay do Maude só vê tráfego com criptografia de ponta a ponta. Com um hook, você escolhe para onde ele vai. A configuração Require trusted devices da Anthropic limita quais dispositivos podem usar o Remote Control.
- Aprovações são uma rede de segurança, não um sandbox. Rodar o agente com um usuário não root numa máquina que você possa reconstruir importa mais do que qualquer interface de aprovação. Veja como rodar agentes com permissões totais com segurança.
Responda pelo Maude
Se os seus agentes rodam num servidor e você quer um só lugar para responder a todos, experimente o Maude com o Claude Code ou o Codex. Adicione o servidor pelo app, entre com o seu próprio plano, e os pedidos de permissão chegam como notificações push com Permitir e Negar. A caixa de entrada reúne tudo o que está esperando por você.
Perguntas frequentes
O Claude Code envia notificações push?
/config. É preciso um plano Pro, Max, Team ou Enterprise; logins com chave de API não são suportados.Dá para Permitir ou Negar pela tela de bloqueio?
O que acontece se eu não responder?
PreToolUse que expira não bloqueia a chamada da ferramenta.Isso funciona com o Codex?
PermissionRequest que pode permitir ou negar, e projetos como o hookline o usam para encaminhar as aprovações do Codex ao ntfy. Segundo relatos de terceiros, a configuração notify do Codex só cobre rodadas concluídas, então use hooks para as aprovações.É seguro aprovar comandos pelo celular?
O que mudou
- — Primeira publicação. Comportamento do Remote Control e dos hooks conferido na documentação da Anthropic e da OpenAI; detalhes e padrões de cada repositório tirados do README de cada projeto nesta data.