Approvazioni

Approvare le richieste di permesso di Claude Code (e Codex) dal telefono

Il motivo più comune per cui un agente smette di andare avanti è una richiesta di permesso che nessuno ha visto. Ci sono tre modi per rispondere dal telefono: le notifiche push di Claude Code, un hook ntfy fai-da-te o un'app con un'inbox. Ecco come funziona ciascuno con Claude Code, cosa cambia con Codex e gli altri agenti, e quanto ti costa ciascuno in termini di sicurezza.

Approvare le richieste di permesso di Claude Code (e Codex) dal telefono

In breve

Con un piano Pro, Max, Team o Enterprise, avvia Remote Control e in /config attiva Push when actions required. L'app Claude ti avvisa e rispondi alla richiesta nell'app. Come alternativa gratuita e self-hosted, hook open source come claude-remote-approver inviano ogni PermissionRequest a ntfy con pulsanti Approva/Nega. Codex ha lo stesso hook PermissionRequest. App come Maude mostrano le richieste di più agenti in un'unica inbox, con notifiche push che includono Consenti/Nega.

Quando Claude Code vuole eseguire un comando o modificare un file che non hai pre-approvato, si ferma e chiede. Se sei al terminale, ci vuole un secondo. Se non ci sei, la sessione aspetta, e può significare un'ora di attesa per un solo tasto. Ogni sistema di approvazione remota porta la richiesta sul telefono e la tua risposta all'agente. Si differenziano per come viene intercettata la richiesta, dove passa e chi può rispondere.

Come funzionano le approvazioni remote

I meccanismi sono due, e ogni strumento usa uno dei due.

  • Il protocollo remoto dell'agente stesso. Il Remote Control di Claude Code inoltra la vera finestra di permesso all'app Claude. Il Remote Control di Antigravity e l'app-server di Codex funzionano allo stesso modo. Niente in mezzo decide al posto tuo: rispondi alla richiesta dell'agente stesso.
  • Gli hook. Claude Code esegue un programma che configuri tu in punti precisi. Un hook PermissionRequest scatta quando sta per comparire una finestra di permesso, e può rispondere al posto tuo stampando una decisione come {"behavior": "allow"} o "deny". Un hook PreToolUse scatta prima di ogni chiamata a uno strumento e può restituire allow, deny, ask o defer. Un hook che invia una push e aspetta il tuo tocco: è così che funziona ogni strumento fai-da-te di approvazione da telefono. I dettagli sono nel riferimento sugli hook.

Il push nativo di Claude Code

La strada di Anthropic passa da Remote Control:

  1. Avvia una sessione con claude remote-control (modalità server) o claude --remote-control, oppure digita /remote-control in una sessione in corso.
  2. Accedi all'app Claude sul telefono con lo stesso account e consenti le notifiche.
  3. Nel terminale, esegui /config e attiva Push when actions required, che copre richieste di permesso e domande. Push when Claude decides copre gli aggiornamenti proattivi come «test completati».

La documentazione segnala alcune cose in cui ti imbatterai:

  • Piani e autenticazione. Remote Control è disponibile su Pro, Max, Team ed Enterprise, e le chiavi API non sono supportate. Su Team ed Enterprise deve attivarlo un Owner.
  • Le richieste non scadono. Richieste di permesso e domande restano aperte finché non rispondi.
  • Le push si sospendono mentre sei al terminale. Claude Code salta le push mentre stai scrivendo nel terminale collegato o lo hai in primo piano. CLAUDE_CLIENT_PRESENCE_FILE estende questo comportamento a tutto il tempo in cui sei davanti alla macchina.
  • Il processo deve restare vivo. Il processo claude deve continuare a girare, quindi su un server avvialo dentro tmux.
  • Alcune modalità non sono disponibili dall'app. Secondo la documentazione mobile, dall'app non puoi selezionare Bypass permissions, né Auto per una sessione Remote Control.

Se hai un piano Claude e usi solo Claude Code, parti da qui. È incluso nel tuo piano e mantenuto da Anthropic.

Fai-da-te con gli hook ntfy

ntfy è un servizio di push open source. Pubblichi su un topic con una semplice richiesta HTTP, e l'app ntfy sul telefono te lo mostra. Diversi progetti open source lo abbinano a un hook PermissionRequest. L'hook pubblica la chiamata allo strumento in sospeso sul tuo topic con pulsanti di azione, aspetta il tuo tocco su un secondo topic e restituisce la decisione a Claude Code. A ciascuno il suo merito:

ProgettoHookSe non rispondiNote
claude-remote-approver (yuuichieguchi)PermissionRequestTorna alla richiesta nel terminale dopo 120 s (300 s per le revisioni dei piani)npm install -g claude-remote-approver; genera un topic casuale a 128 bit; Approve / Always Approve / Deny
claude-push (coa00)PermissionRequestTorna al terminale dopo 90 s (configurabile)Script di installazione in shell; Allow / Deny
claude-code-phone-notifications (ssarnecki)PermissionRequest, PreToolUse, StopAspetta circa 9 minuti, poi torna al terminaleAspetta 30 s prima di inviare la push nel caso tu sia alla scrivania; invia anche le domande AskUserQuestion (senza pulsanti)
hookline (tsyche)PreToolUse per Claude; PermissionRequest per Codex15 minuti di default, con una finestra più lunga per le risposte tardiveCopre anche Codex, Grok e OpenCode; supporta un ntfy self-hosted con credenziali

Tutti e quattro hanno licenza MIT. I timeout sono i loro valori predefiniti documentati. Se ti basta una notifica, senza rispondere da remoto, è sufficiente l'hook Notification di Claude Code. Il matcher permission_prompt scatta quando compare una finestra di permesso:

{
  "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" }
        ]
      }
    ]
  }
}

Mettilo in ~/.claude/settings.json sulla macchina che esegue Claude Code. Per rispondere dovrai comunque raggiungere un terminale. I progetti qui sopra aggiungono la strada per la risposta.

L'inbox di Maude

Maude segue il primo approccio. Il suo daemon sul server parla con il protocollo di ciascun agente, quindi una richiesta di permesso arriva all'app come la vera richiesta, non come un'ipotesi ricostruita da un hook. Le richieste di ogni sessione su ogni server finiscono in un'unica inbox, accanto a errori e lavoro finito. Puoi rispondere in linea lì, o direttamente dalla notifica push, che ha Consenti e Nega. Una richiesta aspetta finché non rispondi; la sessione non va in timeout per proseguire senza di te. Funziona per Claude Code, Codex, OpenCode e Grok Build. Antigravity è l'eccezione: agy in headless non può fermarsi prima di eseguire uno strumento, quindi Maude mostra l'azione negata a posteriori e la riprova se la consenti. Maude è un'app a pagamento, e ogni agente ha bisogno del proprio account. Non è l'unica app con inbox e push: Happier, tra le altre, ha entrambe.

Codex e gli altri agenti

  • Codex ha anch'esso degli hook, attivi di default. Un hook PermissionRequest può rispondere con "behavior": "allow" o "deny", e PreToolUse può negare. Si trovano in ~/.codex/hooks.json o in [hooks] dentro config.toml. È ciò che usa hookline per Codex. La vecchia impostazione notify di Codex esegue un programma quando un turno finisce. Secondo alcuni resoconti di terze parti non scatta per le richieste di approvazione, quindi per le approvazioni usa gli hook. Per la strada ufficiale di Codex da telefono e i suoi limiti su Linux, vedi Codex CLI su un VPS.
  • Antigravity risponde alle richieste dalla dashboard di Remote Control quando lo esegui in modo interattivo o come daemon. agy in headless nega invece di chiedere. Vedi Antigravity CLI su un server.
  • OpenCode e Grok Build sono coperti dal supporto per plugin e hook di hookline, oppure dalle app multi-agente.

La sicurezza delle approvazioni remote

Un'approvazione dal telefono è forte quanto l'anello più debole tra la richiesta e il tuo tocco.

  • Su ntfy.sh il topic è la password. La documentazione di ntfy lo dice esplicitamente: senza registrazione, chiunque conosca il nome di un topic può leggerlo e pubblicarci. Su un server pubblico, un topic indovinato significa che qualcun altro può approvare i comandi del tuo agente. Usa un topic lungo e casuale, oppure ospita ntfy in proprio con autenticazione.
  • Leggi il comando, non il titolo. Una push sulla schermata di blocco mostra un riepilogo. Un rm -rf dentro una lunga riga Bash sfugge facilmente su uno schermo da 6 pollici. Usa «consenti sempre» per gli strumenti in sola lettura, non per Bash(*).
  • Conosci il tuo fallback. Gli hook fai-da-te qui sopra tornano alla richiesta nel terminale quando scadono, quindi una richiesta senza risposta blocca invece di approvare in automatico. Scrivi il tuo hook con la stessa regola. La documentazione di Claude Code avverte che un hook PreToolUse scaduto non blocca la chiamata allo strumento, che prosegue nel normale flusso dei permessi, quindi non contare su un hook bloccato come barriera.
  • Proteggi il canale. Il traffico delle approvazioni rivela cosa sta facendo il tuo agente. Il Remote Control di Anthropic passa dai server di Anthropic, e il relay di Maude vede solo traffico cifrato end-to-end. Con un hook scegli tu dove passa. L'impostazione Require trusted devices di Anthropic limita i dispositivi che possono usare Remote Control.
  • Le approvazioni sono una rete di sicurezza, non una sandbox. Eseguire l'agente con un utente non root su una macchina che potresti ricostruire conta più di qualsiasi interfaccia di approvazione. Vedi eseguire agenti con tutti i permessi, in sicurezza.

Rispondi da Maude

Se i tuoi agenti girano su un server e vuoi un unico posto da cui rispondere a tutti, prova Maude con Claude Code o Codex. Aggiungi il server dall'app, accedi con il tuo piano e le richieste di permesso arrivano come notifiche push con Consenti e Nega. L'inbox raccoglie tutto ciò che aspetta te.

Domande frequenti

Claude Code può inviare notifiche push?
Sì, tramite Remote Control. Collega la sessione all'app Claude, poi attiva Push when actions required (e facoltativamente Push when Claude decides) in /config. Serve un piano Pro, Max, Team o Enterprise; gli accessi con chiave API non sono supportati.
Posso consentire o negare dalla schermata di blocco?
Con gli hook basati su ntfy sì: aggiungono alla notifica pulsanti di azione Approva/Nega. La documentazione di Anthropic descrive le push per le richieste di permesso ma non pulsanti di risposta nella notifica stessa, quindi aspettati di rispondere nell'app Claude. Le push di permesso di Maude hanno le azioni Consenti e Nega.
Cosa succede se non rispondo?
In Claude Code stesso le richieste di permesso restano aperte finché non rispondi, quindi la sessione semplicemente aspetta. Gli hook ntfy fai-da-te scadono dopo la finestra configurata e tornano alla normale richiesta nel terminale. Verifica che ogni hook che scrivi, in caso di errore, blocchi: un hook PreToolUse scaduto non blocca la chiamata allo strumento.
Funziona con Codex?
Sì. Codex supporta un hook PermissionRequest che può consentire o negare, e progetti come hookline lo usano per inoltrare le approvazioni di Codex a ntfy. Secondo resoconti di terze parti l'impostazione notify di Codex copre solo i turni completati, quindi per le approvazioni usa gli hook.
È sicuro approvare comandi dal telefono?
È sicuro quanto il canale e la tua attenzione. Usa un topic ntfy impossibile da indovinare o autenticato, leggi il comando completo prima di approvare, evita regole generiche «consenti sempre» per i comandi shell, ed esegui l'agente con un utente non root su una macchina che potresti ricostruire.

Cosa è cambiato

  • — Prima pubblicazione. Comportamento di Remote Control e degli hook verificato sulla documentazione di Anthropic e OpenAI; dettagli e valori predefiniti dei repository dal README di ciascun progetto in questa data.

Non perdere più nessuna richiesta di permesso

Consenti o nega dalla notifica, per ogni agente su ogni server. iOS e Android.

Download Maude on the App Store Get Maude on Google Play