Validations
Valider les demandes d'autorisation de Claude Code (et Codex) depuis votre téléphone
Si un agent n'avance plus, c'est en général à cause d'une demande d'autorisation que personne n'a vue. Il existe trois façons d'y répondre depuis votre poche : les notifications push de Claude Code, un hook ntfy fait maison, ou une app avec une boîte de réception. Voici comment chacune fonctionne pour Claude Code, ce qui change pour Codex et les autres agents, et ce que chacune vous coûte en sécurité.
En bref
Avec un forfait Pro, Max, Team ou Enterprise, lancez Remote Control et, dans /config, activez Push when actions required. L'app Claude vous prévient alors, et vous répondez à la demande dans l'app. Pour une alternative gratuite et auto-hébergée, des hooks open source comme claude-remote-approver envoient chaque PermissionRequest vers ntfy avec des boutons Approuver/Refuser. Codex a le même hook PermissionRequest. Des apps comme Maude affichent les demandes de plusieurs agents dans une seule boîte de réception, avec des notifications push qui portent Autoriser/Refuser.
Quand Claude Code veut exécuter une commande ou modifier un fichier que vous n'avez pas pré-autorisé, il s'arrête et demande. Si vous êtes devant le terminal, cela prend une seconde. Sinon, la session attend, ce qui peut représenter une heure d'attente pour une seule touche. Chaque dispositif de validation à distance amène la demande jusqu'à votre téléphone et renvoie votre réponse à l'agent. Ils diffèrent par la façon dont la demande est interceptée, par le chemin qu'elle emprunte et par qui peut y répondre.
Comment fonctionnent les validations à distance
Il existe deux mécanismes, et chaque outil utilise l'un d'eux.
- Le protocole distant propre à l'agent. Le Remote Control de Claude Code transmet le vrai dialogue d'autorisation à l'app Claude. Le Remote Control d'Antigravity et l'app-server de Codex fonctionnent de la même façon. Rien au milieu ne décide quoi que ce soit : vous répondez à la demande de l'agent lui-même.
- Les hooks. Claude Code lance un programme que vous configurez à des moments précis. Un hook
PermissionRequestse déclenche quand un dialogue d'autorisation est sur le point d'apparaître, et peut répondre à votre place en affichant une décision comme{"behavior": "allow"}ou"deny". Un hookPreToolUsese déclenche avant chaque appel d'outil et peut renvoyerallow,deny,askoudefer. Un hook qui envoie un push et attend votre tap : c'est ainsi que fonctionnent tous les outils maison de validation sur téléphone. Les détails sont dans la référence des hooks.
Le push natif de Claude Code
La voie d'Anthropic passe par Remote Control :
- Lancez une session avec
claude remote-control(mode serveur) ouclaude --remote-control, ou tapez/remote-controldans une session en cours. - Connectez-vous à l'app Claude sur votre téléphone avec le même compte, et autorisez les notifications.
- Dans le terminal, lancez
/configet activez Push when actions required, qui couvre les demandes d'autorisation et les questions. Push when Claude decides couvre les nouvelles proactives comme « tests terminés ».
La documentation signale quelques points que vous rencontrerez :
- Forfaits et authentification. Remote Control est disponible sur Pro, Max, Team et Enterprise, et les clés API ne sont pas prises en charge. Sur Team et Enterprise, un Owner doit l'activer.
- Les demandes n'expirent pas. Les demandes d'autorisation et les questions restent ouvertes jusqu'à ce que vous y répondiez.
- Le push se met en pause quand vous êtes au terminal. Claude Code n'envoie pas de push pendant que vous tapez dans le terminal connecté ou qu'il a le focus.
CLAUDE_CLIENT_PRESENCE_FILEétend cela à tout moment où vous êtes devant la machine. - Le processus doit rester en vie. Le processus
claudedoit continuer de tourner : sur un serveur, lancez-le dans tmux. - Certains modes sont inaccessibles depuis l'app. D'après la documentation mobile, vous ne pouvez pas sélectionner Bypass permissions depuis l'app, ni Auto pour une session Remote Control.
Si vous avez un forfait Claude et n'utilisez que Claude Code, commencez par là. C'est inclus dans votre forfait et maintenu par Anthropic.
Le fait maison avec des hooks ntfy
ntfy est un service de push open source. Vous publiez sur un topic avec une simple requête HTTP, et l'app ntfy de votre téléphone l'affiche. Plusieurs projets open source l'associent à un hook PermissionRequest. Le hook publie l'appel d'outil en attente sur votre topic avec des boutons d'action, attend votre tap sur un second topic, puis renvoie la décision à Claude Code. Rendons à César ce qui est à César :
| Projet | Hook | Sans réponse de votre part | Remarques |
|---|---|---|---|
| claude-remote-approver (yuuichieguchi) | PermissionRequest | Revient à la demande dans le terminal après 120 s (300 s pour les revues de plan) | npm install -g claude-remote-approver ; génère un topic aléatoire de 128 bits ; Approve / Always Approve / Deny |
| claude-push (coa00) | PermissionRequest | Revient au terminal après 90 s (configurable) | Script d'installation shell ; Allow / Deny |
| claude-code-phone-notifications (ssarnecki) | PermissionRequest, PreToolUse, Stop | Attend environ 9 minutes, puis revient au terminal | Attend 30 s avant d'envoyer le push au cas où vous seriez au bureau ; envoie aussi les questions AskUserQuestion (sans boutons) |
| hookline (tsyche) | PreToolUse pour Claude ; PermissionRequest pour Codex | 15 minutes par défaut, avec une fenêtre plus longue pour les réponses tardives | Couvre aussi Codex, Grok et OpenCode ; prend en charge un ntfy auto-hébergé avec identifiants |
Les quatre sont sous licence MIT. Les délais sont leurs valeurs par défaut documentées. Si vous voulez juste être prévenu, sans répondre à distance, le hook Notification de Claude Code suffit. Le matcher permission_prompt se déclenche quand un dialogue apparaît :
{
"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" }
]
}
]
}
}
Placez cela dans ~/.claude/settings.json sur la machine qui fait tourner Claude Code. Vous devrez quand même rejoindre un terminal pour répondre. Les projets ci-dessus ajoutent le chemin de la réponse.
La boîte de réception de Maude
Maude suit la première approche. Son daemon sur votre serveur dialogue avec le protocole propre à chaque agent, donc une demande d'autorisation arrive dans l'app telle quelle, pas sous forme d'interprétation par un hook. Les demandes de toutes les sessions sur tous les serveurs arrivent dans une seule boîte de réception, à côté des erreurs et du travail terminé. Vous pouvez y répondre sur place, ou directement depuis la notification push, qui porte Autoriser et Refuser. Une demande attend votre réponse ; la session n'expire pas pour continuer sans vous. Cela fonctionne pour Claude Code, Codex, OpenCode et Grok Build. Antigravity fait exception : agy en headless ne peut pas s'arrêter avant d'exécuter un outil, donc Maude affiche l'action refusée après coup et la relance si vous l'autorisez. Maude est une app payante, et chaque agent a besoin de son propre compte. Ce n'est pas la seule app avec boîte de réception et push : Happier, entre autres, a les deux.
Codex et les autres agents
- Codex a aussi des hooks, activés par défaut. Un hook
PermissionRequestpeut répondre avec"behavior": "allow"ou"deny", etPreToolUsepeut refuser. Ils se trouvent dans~/.codex/hooks.jsonou dans[hooks]deconfig.toml. C'est ce qu'utilise hookline pour Codex. L'ancien réglagenotifyde Codex lance un programme à la fin d'un tour. Selon des articles tiers, il ne se déclenche pas pour les demandes de validation : utilisez donc les hooks pour les validations. Pour la voie officielle de Codex sur téléphone et ses limites sous Linux, voyez Codex CLI sur un VPS. - Antigravity répond aux demandes depuis son tableau de bord Remote Control quand vous le lancez en interactif ou en daemon.
agyen headless refuse au lieu de demander. Voir Antigravity CLI sur un serveur. - OpenCode et Grok Build sont couverts par la prise en charge des plugins et hooks de hookline, ou par les apps multi-agents.
La sécurité des validations à distance
Une validation depuis votre téléphone vaut ce que vaut le maillon le plus faible entre la demande et votre tap.
- Sur ntfy.sh, le topic est le mot de passe. La documentation de ntfy le dit clairement : sans inscription, quiconque connaît le nom d'un topic peut le lire et y publier. Sur un serveur public, un topic deviné signifie que quelqu'un d'autre peut valider les commandes de votre agent. Utilisez un topic long et aléatoire, ou auto-hébergez ntfy avec authentification.
- Lisez la commande, pas le titre. Un push sur l'écran verrouillé affiche un résumé. Un
rm -rfau milieu d'une longue ligne Bash passe facilement inaperçu sur un écran de 6 pouces. Réservez « toujours autoriser » aux outils en lecture seule, pas àBash(*). - Connaissez votre solution de repli. Les hooks maison ci-dessus reviennent à la demande dans le terminal quand ils expirent, donc une demande sans réponse bloque au lieu d'être approuvée automatiquement. Écrivez votre propre hook avec la même règle. La documentation de Claude Code avertit qu'un hook
PreToolUsequi expire ne bloque pas l'appel d'outil, qui suit alors le circuit d'autorisation normal : ne comptez pas sur un hook bloqué pour faire barrage. - Verrouillez le canal. Le trafic des validations révèle ce que fait votre agent. Le Remote Control d'Anthropic passe par les serveurs d'Anthropic, et le relais de Maude ne voit que du trafic chiffré de bout en bout. Avec un hook, c'est vous qui choisissez où il va. Le réglage Require trusted devices d'Anthropic limite les appareils qui peuvent utiliser Remote Control.
- Les validations sont un filet de sécurité, pas une sandbox. Faire tourner l'agent avec un utilisateur non root sur une machine que vous pourriez reconstruire compte plus que n'importe quelle interface de validation. Voir faire tourner des agents avec toutes les autorisations, en sécurité.
Y répondre depuis Maude
Si vos agents tournent sur un serveur et que vous voulez un seul endroit pour leur répondre à tous, essayez Maude avec Claude Code ou Codex. Ajoutez le serveur depuis l'app, connectez-vous avec votre propre forfait, et les demandes d'autorisation arrivent en notifications push avec Autoriser et Refuser. La boîte de réception rassemble tout ce qui vous attend.
Questions fréquentes
Claude Code peut-il envoyer des notifications push ?
/config. Il faut un forfait Pro, Max, Team ou Enterprise ; les connexions par clé API ne sont pas prises en charge.Puis-je autoriser ou refuser depuis l'écran verrouillé ?
Que se passe-t-il si je ne réponds pas ?
PreToolUse qui expire ne bloque pas l'appel d'outil.Est-ce que ça marche pour Codex ?
PermissionRequest qui peut autoriser ou refuser, et des projets comme hookline s'en servent pour acheminer les validations de Codex vers ntfy. Selon des sources tierces, le réglage notify de Codex ne couvre que les tours terminés : utilisez les hooks pour les validations.Est-il sûr de valider des commandes depuis mon téléphone ?
Ce qui a changé
- — Première publication. Comportement de Remote Control et des hooks vérifié dans la documentation d'Anthropic et d'OpenAI ; détails et valeurs par défaut des dépôts tirés du README de chaque projet à cette date.