Your AirPods read the permission prompt out loud. You nod, and it runsfrom the next room, or a timezone away.

The honest alternative

That’s the real competition — not another dashboard. Either you sit watching for a prompt that might be twenty minutes out, or you pass --dangerously-skip-permissions and read the diff afterwards.

One of those costs you the afternoon. The other one costs you exactly once.

Nod

How it actually works

Four hops, none of them clever. Install once, register the hook, and the loop closes on its own from then on.

  1. 01

    The gate

    Your agent reaches a command it needs permission for. A PreToolUse hook catches it before anything runs.

    hook/noddr-hook.mjs
  2. 02

    The ping

    The hook broadcasts to your phone over Supabase Realtime. Your Mac, a cloud box, a machine you haven't touched in a week — the agent's location stops mattering.

    channel = "noddr-<install-uuid>"
  3. 03

    The voice

    Your phone speaks the request into your AirPods. Nothing to unlock, nothing to look at, no window to find.

    on-device voice, or Google TTS
  4. 04

    The nod

    The AirPods' own motion sensors read your head. Nod returns allow, shake returns deny — and after a shake you can say what you'd rather it did.

    permissionDecision: allow | deny

Head-shake

Where a nod stops

A hardcoded list never reaches your phone at all. No setting turns it off, because a gesture you can make by accident should not be able to authorize these.

  • rm -rfIrreversible deletion→ terminal
  • git push --forceRewrites shared history→ terminal
  • sudoEscalates out of the sandbox→ terminal

And when anything else goes wrong, it fails the boring way.

You don't answer in time
Timeout → the dial drains to amber and it lands in your terminal.
The backend can't be reached
No verdict is invented. It lands in your terminal.
The command is on the screen-only list
The phone is never even asked. It lands in your terminal.

The nod report