> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nomo.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# Using Codex

> Sessions works with Codex, but not identically to Claude Code. What you can and can't do from your phone, and why.

Codex sessions show up in the same list, on the same island, over the same
pairing. But Codex and Claude Code expose different things to a plugin, so a few
options are missing on the Codex side.

Nomo's rule throughout is that it never offers a button the Mac can't honour. So
rather than a control that silently fails, you get either a different control or
an honest "do this at your Mac."

<Note>
  There is no separate Codex pairing. Both agents read the same config on that
  computer — you [pair the machine](/setup/pairing) once. On the wire, the only
  difference is a label saying which agent it was.
</Note>

## What works the same

* Sessions, states, folders, and the Dynamic Island.
* Permission prompts for shell commands, patches, and MCP tools — **Allow** and
  **Deny** from the island or the app.
* **Deny with note…**, to say why or what to do instead.
* Reading plans.

## No "Always allow"

Claude Code lets you allow a tool for the rest of the session. Codex rejects the
whole decision when Nomo attaches that kind of rule to it, so the option isn't
shown — a **Deny** that got thrown away would be far worse than a missing
button.

Allow still works normally. You'll just be asked again next time.

## Plans are read-only

Codex's "implement this plan?" prompt lives inside its own terminal UI. It never
reaches a plugin, which means there's nothing for Nomo to hold and nothing for
your tap to resolve.

So Nomo shows you the plan — the whole thing, refreshed each time you open it,
since Codex writes it out as it goes — and then says `Choose an option in your
Mac terminal`. If your phone can reach the Mac over your local network, **Open
on Mac** brings that terminal window to the front for you.

<Frame caption="The read-only plan reader. Everything is there to read; the footer is honest about where the decision lives.">
  <div className="device-frame">
    <img src="https://mintcdn.com/nomo-ba73b2e6/tvqjCmRnpqBaYpOW/images/view-plan-drawer.png?fit=max&auto=format&n=tvqjCmRnpqBaYpOW&q=85&s=8bb91265128066d756acac01e3cd0f35" alt="A plan rendered full-screen on the phone, with a footer reading Choose an option in your Mac terminal" width="1206" height="2622" data-path="images/view-plan-drawer.png" />
  </div>
</Frame>

## Questions in the CLI and the desktop app

Answering a Codex question from your phone needs the Codex task and Nomo's
watchdog to share one app-server process.

<Tabs>
  <Tab title="Codex CLI" icon="terminal">
    Start the shared app-server **before** you start Codex:

    ```bash theme={null}
    codex app-server daemon start
    ```

    Then confirm:

    ```bash theme={null}
    $nomo-status
    ```

    `Codex Plan answers: bridge available` means you're set — questions reach
    your phone with their options, and you tap one.

    `Codex Plan answers: status-only` means nothing is listening. Start the
    daemon, then start Codex. Order matters: a session that opened first won't
    pick the daemon up.
  </Tab>

  <Tab title="Codex desktop app" icon="window">
    **Questions from desktop-app sessions can't be answered on your phone.**

    The daemon above listens on a shared socket that anything can attach to. The
    desktop app doesn't use it — it spawns a private app-server per task, with
    no socket to join. There's no flag or setting that changes that, so
    `$nomo-status` will keep saying `status-only` no matter what you start
    beforehand.

    Everything else works normally: sessions appear, permission prompts for
    commands and patches are answerable from the phone, and plans are readable.
    Questions show up too — you just read them on the phone and answer them in
    the app.
  </Tab>
</Tabs>

Either way the session still reaches your phone. Without the bridge you'll see
`Need help` and `Answer on Mac` — the question is there to read, there's just no
picker to tap, and you answer it in Codex.

## Hooks have to be trusted

Codex ships its own safety gate: plugin hooks are installed but **inert until
you trust them**. Run `/hooks` and trust the seven Nomo entries, as described in
[Installation](/setup/install).

The part that catches people: upgrading to the version that added phone-held
Codex approvals introduced a **new** hook, so Codex re-opens the review for it.
Until you trust it, Codex approvals quietly fall back to the terminal and
nothing reports an error. If your phone stopped getting Codex prompts after an
update, run `/hooks` first.

`$nomo-status` reports hook trust, so it's how you check the step actually took.

## Prompts that never reach you

When a Codex turn is running under automatic review or full access, the hook
hands control straight back to Codex before Nomo sends anything. That's correct
— you told Codex not to ask — but it means the prompt won't appear on your phone
either.

Codex also has no equivalent of Claude Code's notification hook, so you'll get
slightly fewer "it wants you" nudges from Codex sessions than from Claude Code
ones.

## Version floor

Codex **0.142 or later**. Earlier versions have no plugin system for Nomo to
install into.
