Goedkeuringen

Toestemmingsverzoeken van Claude Code (en Codex) goedkeuren vanaf je telefoon

De gebruikelijke reden dat een agent geen voortgang meer boekt, is een toestemmingsverzoek dat niemand heeft gezien. Er zijn drie manieren om er een vanuit je broekzak te beantwoorden: de eigen pushmeldingen van Claude Code, een zelfgebouwde ntfy-hook, of een app met een inbox. Zo werkt elk voor Claude Code, dit verandert er voor Codex en andere agents, en dit kost elk je aan beveiliging.

Toestemmingsverzoeken van Claude Code (en Codex) goedkeuren vanaf je telefoon

Kort antwoord

Met een Pro-, Max-, Team- of Enterprise-abonnement start je Remote Control en zet je in /config Push when actions required aan. De Claude-app stuurt je dan een melding, en je beantwoordt het verzoek in de app. Als gratis, zelfgehost alternatief sturen open-source hooks zoals claude-remote-approver elk PermissionRequest naar ntfy, met knoppen om goed te keuren of te weigeren. Codex heeft dezelfde PermissionRequest-hook. Apps zoals Maude tonen verzoeken van meerdere agents in één inbox, met pushmeldingen die Sta toe/Weiger bevatten.

Wil Claude Code een commando uitvoeren of een bestand bewerken dat je niet vooraf hebt goedgekeurd, dan stopt het en vraagt het. Zit je achter de terminal, dan kost dat een seconde. Zo niet, dan wacht de sessie, wat kan betekenen dat er een uur op één toetsaanslag wordt gewacht. Elke opzet voor goedkeuring op afstand brengt het verzoek naar je telefoon en je antwoord terug naar de agent. Ze verschillen in hoe het verzoek wordt onderschept, welke weg het aflegt en wie het kan beantwoorden.

Hoe goedkeuring op afstand werkt

Er zijn twee mechanismen, en elke tool gebruikt er een van.

  • Het eigen protocol van de agent voor op afstand. Remote Control van Claude Code stuurt het echte toestemmingsdialoog door naar de Claude-app. Remote Control van Antigravity en de app-server van Codex werken op dezelfde manier. Niets ertussen beslist iets: je beantwoordt het eigen verzoek van de agent.
  • Hooks. Claude Code draait op vaste momenten een programma dat jij configureert. Een PermissionRequest-hook gaat af wanneer er een toestemmingsdialoog op het punt staat te verschijnen, en kan voor jou antwoorden door een beslissing te printen zoals {"behavior": "allow"} of "deny". Een PreToolUse-hook gaat af vóór elke toolaanroep en kan allow, deny, ask of defer teruggeven. Een hook die een push stuurt en op je tik wacht, is hoe elke zelfgebouwde goedkeuringstool voor de telefoon werkt. De details staan in de referentie voor hooks.

Native push in Claude Code

De eigen route van Anthropic loopt via Remote Control:

  1. Start een sessie met claude remote-control (servermodus) of claude --remote-control, of typ /remote-control in een lopende sessie.
  2. Log op je telefoon met hetzelfde account in bij de Claude-app en sta meldingen toe.
  3. Voer in de terminal /config uit en zet Push when actions required aan, wat toestemmingsverzoeken en vragen dekt. Push when Claude decides dekt proactieve updates zoals “tests klaar”.

De documentatie noemt een paar dingen waar je tegenaan loopt:

  • Abonnementen en authenticatie. Remote Control zit in Pro, Max, Team en Enterprise, en API-sleutels worden niet ondersteund. Bij Team en Enterprise moet een Owner het aanzetten.
  • Verzoeken verlopen niet. Toestemmingsverzoeken en vragen blijven open tot je ze beantwoordt.
  • Push pauzeert als je achter de terminal zit. Claude Code slaat push over terwijl je typt in de verbonden terminal of die in focus hebt. CLAUDE_CLIENT_PRESENCE_FILE breidt dat uit naar elk moment dat je achter de machine zit.
  • Het proces moet blijven leven. Het claude-proces moet blijven draaien, dus start het op een server binnen tmux.
  • Sommige modi zijn vanuit de app taboe. Volgens de mobiele documentatie kun je in de app geen Bypass permissions kiezen, en ook geen Auto voor een Remote Control-sessie.

Heb je een Claude-abonnement en gebruik je alleen Claude Code, begin dan hier. Het is gratis bij je abonnement en wordt onderhouden door Anthropic.

Zelf bouwen met ntfy-hooks

ntfy is een open-source pushdienst. Je publiceert naar een topic met een gewoon HTTP-verzoek, en de ntfy-app op je telefoon toont het. Verschillende open-sourceprojecten combineren het met een PermissionRequest-hook. De hook post de wachtende toolaanroep met actieknoppen naar je topic, wacht op een tweede topic op je tik, en print de beslissing terug naar Claude Code. Eer wie eer toekomt:

ProjectHookAls je niet antwoordtOpmerkingen
claude-remote-approver (yuuichieguchi)PermissionRequestValt na 120 s (300 s voor planreviews) terug op het verzoek in de terminalnpm install -g claude-remote-approver; genereert een willekeurig 128-bit-topic; Approve / Always Approve / Deny
claude-push (coa00)PermissionRequestValt na 90 s (instelbaar) terug op de terminalInstallatiescript voor de shell; Allow / Deny
claude-code-phone-notifications (ssarnecki)PermissionRequest, PreToolUse, StopWacht ongeveer 9 minuten en valt dan terug op de terminalWacht 30 s voor de push voor het geval je achter je bureau zit; pusht ook AskUserQuestion-verzoeken (zonder knoppen)
hookline (tsyche)PreToolUse voor Claude; PermissionRequest voor CodexStandaard 15 minuten, met een langer venster voor late antwoordenDekt ook Codex, Grok en OpenCode; ondersteunt een zelfgehoste ntfy met inloggegevens

Alle vier hebben een MIT-licentie. De timeouts zijn hun gedocumenteerde standaardwaarden. Wil je alleen een seintje, zonder op afstand te antwoorden, dan volstaat de Notification-hook van Claude Code. De matcher permission_prompt gaat af wanneer er een dialoog verschijnt:

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

Zet dat in ~/.claude/settings.json op de machine waarop Claude Code draait. Om te antwoorden moet je nog steeds naar een terminal. De projecten hierboven voegen de weg terug voor het antwoord toe.

De inbox van Maude

Maude kiest de eerste aanpak. De daemon op je server praat het eigen protocol van elke agent, dus een toestemmingsverzoek bereikt de app als het echte verzoek in plaats van als gok van een hook. Verzoeken uit elke sessie op elke server komen in één inbox terecht, naast fouten en afgerond werk. Je kunt daar inline antwoorden, of direct vanuit de pushmelding, die Sta toe en Weiger bevat. Een verzoek wacht tot je antwoordt; de sessie verloopt niet en gaat niet zonder jou verder. Het werkt voor Claude Code, Codex, OpenCode en Grok Build. Antigravity is de uitzondering: headless kan agy niet pauzeren voordat een tool draait, dus Maude toont de geweigerde actie achteraf en probeert hem opnieuw als je hem toestaat. Maude is een betaalde app, en elke agent heeft een eigen account nodig. Het is niet de enige app met een inbox en push: onder meer Happier heeft ze allebei.

Codex en andere agents

  • Codex heeft ook hooks, standaard ingeschakeld. Een PermissionRequest-hook kan antwoorden met "behavior": "allow" of "deny", en PreToolUse kan weigeren. Ze staan in ~/.codex/hooks.json of onder [hooks] in config.toml. Dat gebruikt hookline voor Codex. De oudere instelling notify van Codex draait een programma als een beurt klaar is. Beschrijvingen van derden melden dat die niet afgaat bij goedkeuringsverzoeken, dus gebruik hooks voor goedkeuringen. Voor de officiële telefoonroute van Codex en de beperkingen op Linux, zie Codex CLI op een VPS.
  • Antigravity beantwoordt verzoeken vanuit het Remote Control-dashboard als je het interactief of als daemon draait. Headless weigert agy in plaats van te vragen. Zie Antigravity CLI op een server.
  • OpenCode en Grok Build worden gedekt door de plugin- en hookondersteuning van hookline, of door multi-agentapps.

Beveiliging van goedkeuring op afstand

Een goedkeuring vanaf je telefoon is zo sterk als de zwakste schakel tussen het verzoek en je tik.

  • Op ntfy.sh is het topic het wachtwoord. De documentatie van ntfy zegt het direct: zonder registratie kan iedereen die een topicnaam kent het lezen en erin publiceren. Op een publieke server betekent een geraden topic dat iemand anders de commando's van je agent kan goedkeuren. Gebruik een lang, willekeurig topic, of host ntfy zelf met authenticatie.
  • Lees het commando, niet de titel. Een push op het vergrendelscherm toont een samenvatting. Een rm -rf in een lange Bash-regel mis je makkelijk op een scherm van 6 inch. Gebruik “altijd toestaan” voor alleen-lezen-tools, niet voor Bash(*).
  • Ken je terugvaloptie. De zelfgebouwde hooks hierboven vallen na hun timeout terug op het verzoek in de terminal, dus een onbeantwoord verzoek blokkeert in plaats van automatisch goed te keuren. Schrijf je eigen hook met dezelfde regel. De documentatie van Claude Code waarschuwt dat een verlopen PreToolUse-hook de toolaanroep niet blokkeert, die dan gewoon de normale toestemmingsflow doorloopt, dus reken niet op een vastgelopen hook als slot.
  • Beveilig het kanaal. Goedkeuringsverkeer verraadt wat je agent doet. Remote Control van Anthropic gaat via de servers van Anthropic, en de relay van Maude ziet alleen end-to-end versleuteld verkeer. Met een hook kies je zelf waar het heen gaat. De instelling Require trusted devices van Anthropic beperkt welke apparaten Remote Control mogen gebruiken.
  • Goedkeuringen zijn een vangnet, geen sandbox. De agent draaien als gebruiker zonder root op een machine die je kunt herbouwen, doet er meer toe dan welke goedkeurings-UI ook. Zie agents veilig met volledige toestemmingen draaien.

Beantwoord ze vanuit Maude

Draaien je agents op een server en wil je één plek om ze allemaal te beantwoorden, probeer dan Maude met Claude Code of Codex. Voeg de server toe vanuit de app, log in met je eigen abonnement, en toestemmingsverzoeken komen binnen als pushmeldingen met Sta toe en Weiger. De inbox verzamelt alles wat op je wacht.

Veelgestelde vragen

Kan Claude Code pushmeldingen sturen?
Ja, via Remote Control. Verbind de sessie met de Claude-app en zet in /config Push when actions required aan (en optioneel Push when Claude decides). Het vereist een Pro-, Max-, Team- of Enterprise-abonnement; logins met een API-sleutel worden niet ondersteund.
Kan ik vanaf het vergrendelscherm toestaan of weigeren?
Met de hooks op basis van ntfy wel: die hangen knoppen om goed te keuren of te weigeren aan de melding. De documentatie van Anthropic beschrijft push voor toestemmingsverzoeken, maar geen antwoordknoppen in de melding zelf, dus reken erop dat je in de Claude-app antwoordt. De toestemmingspushes van Maude hebben de acties Sta toe en Weiger.
Wat gebeurt er als ik niet antwoord?
In Claude Code zelf blijven toestemmingsverzoeken open tot ze beantwoord zijn, dus de sessie wacht gewoon. De zelfgebouwde ntfy-hooks verlopen na hun ingestelde venster en vallen terug op het normale verzoek in de terminal. Controleer bij elke hook die je schrijft dat hij bij twijfel blokkeert: een verlopen PreToolUse-hook blokkeert de toolaanroep niet.
Werkt dit voor Codex?
Ja. Codex ondersteunt een PermissionRequest-hook die kan toestaan of weigeren, en projecten zoals hookline gebruiken die om goedkeuringen van Codex naar ntfy te sturen. De instelling notify van Codex dekt volgens berichten van derden alleen afgeronde beurten, dus gebruik hooks voor goedkeuringen.
Is het veilig om commando's vanaf mijn telefoon goed te keuren?
Zo veilig als het kanaal en je aandacht. Gebruik een onraadbaar of geauthenticeerd ntfy-topic, lees het volledige commando voordat je goedkeurt, vermijd algemene “altijd toestaan”-regels voor shellcommando's, en draai de agent als gebruiker zonder root op een machine die je kunt herbouwen.

Wat is er veranderd

  • — Eerste publicatie. Gedrag van Remote Control en hooks gecontroleerd aan de hand van de documentatie van Anthropic en OpenAI; repodetails en standaardwaarden op deze datum uit de README van elk project.

Mis geen toestemmingsverzoeken meer

Sta toe of Weiger vanuit de melding, voor elke agent op elke server. iOS en Android.

Download Maude on the App Store Get Maude on Google Play