Documentation

Approve Codex requests from your iPhone

Connect Codex interactive sessions to Ntfyx, review and trust the hooks, then answer supported shell and file-change requests with Allow or Deny.

Updated

What this integration does

#

Ntfyx forwards supported Codex permission requests to your paired iPhone or authorized Web Inbox. The running Codex invocation receives a verified Allow or Deny. This is a local CLI integration; it does not add Ntfyx to ChatGPT’s cloud app directory or move your Codex session to the phone.

Before you start

#

Install the current Ntfyx CLI (0.1.2) on macOS or Linux and use a compatible Ntfyx iPhone build (iOS 18.4 or later). The iPhone app is awaiting App Store review; installing the CLI alone does not give you a connected phone. Free includes one active Topic. Several sources can use that Topic; adding a source does not require another paid Topic.

  1. Display the fresh pairing QR on your computer. Keep the QR private.
  2. In the iPhone app, open Connect Topic, scan the QR, and create or choose a named Topic. Authorize this computer.
  3. Use Work as the local CLI alias in these examples, or replace Work with your configured alias.
Terminal
curl -fsSL https://ntfyx.me/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
ntfyx version --json
ntfyx connect
ntfyx topics

Preview and install the integration

#

Run setup on the same computer and user account as your Codex session. It adds PermissionRequest and Stop hooks to hooks.json and registers the local Ntfyx MCP server. Review the dry run first. If you already installed the Ntfyx agent plugin, use that installation instead of adding duplicate hooks.

Terminal
codex --version
ntfyx setup codex --dry-run
ntfyx setup codex

Review the hooks in Codex

#

Open an interactive Codex session. Type /hooks, inspect the two Ntfyx hooks and trust them yourself if they match your intended setup. The CLI cannot grant this trust for you. Keep your existing sandbox, approval policy and deny rules.

  1. Confirm the paired connection with ntfyx send before testing a permission request.
  2. Use a harmless task you intend to run. If Codex asks permission for Bash or apply_patch, review that exact request on the phone.
  3. Choose Deny first and confirm the proposed action was blocked. Try Allow on a fresh harmless request only if you want it executed.
Terminal
codex

Understand when no phone request appears

#

The hook is designed for interactive terminal sessions. codex exec disables approvals and does not trigger this permission hook in the verified version. The app-server approval path has not been verified. A host update must match the supported payload format before Ntfyx can answer.

SymptomCheck
No hook runsOpen /hooks and review trust; check setup or plugin installation.
No permission requestConfirm interactive mode and whether local policy actually asks.
Return to terminalCheck host version, Linux x64 support, tool kind and context size.
Request timed outAnswer locally; an ended invocation is not revived by a late phone answer.
Signed DenyThe action must remain blocked; do not silently retry it as Allow.

What was verified

#

On 30 September 2026, real Codex 0.158.0 interactive TUI sessions on Linux x64 passed Bash and apply_patch Allow / Deny cases with the compiled Ntfyx CLI and an encrypted local relay. The receiver was programmatic, not a physical iPhone. This verifies those host decisions, not all Codex versions, macOS approval, APNs delivery or an independent security audit.

Unsupported inputs return control to the local host.

Also need usage or reset-credit reminders?

#

Usage alerts are a separate opt-in task. They read local Codex status and send a notification when limits or reset credits change; they never redeem credits or approve tools.