Codex

View as Markdown

Drop the Dial skill into your Codex config so the agent learns how to drive the dial CLI on demand. Once installed, Codex can send messages, place calls, and wait for events without you re-explaining the surface.

Install

Pick one of two paths. Option 1 drops the Dial CLI skill into Codex, so the agent drives the dial CLI on demand. Option 2 wires Dial’s MCP server into Codex natively, so the agent calls Dial’s tools directly.

First, get the dial CLI on your PATH:

$curl -fsSL https://getdial.ai/install | bash

Then drop the Codex-specific Dial skill into your config:

$dial onboard --code <code> --agent codex

onboard finishes verification first, then copies the Dial skill into Codex’s standard config directory. Re-run the command anytime (after a CLI upgrade, for example) to overwrite the skill in place — the verification step is a no-op once you’re onboarded.

A single markdown skill describing the dial CLI — its commands, flags, and conventions, mirroring the CLI reference — gets copied in. Codex loads the skill when a Dial-related task comes up; nothing else is touched.

Option 2 — MCP server

Register Dial’s MCP server with Codex and the agent calls Dial’s tools directly — no dial CLI shell-out. The local (stdio) server runs via npx, reuses your saved CLI key, and needs no global install.

$# Local stdio server (reuses your saved CLI key)
$codex mcp add dial -- npx -y @getdial/cli mcp

codex mcp add only handles stdio servers; for the remote Streamable HTTP server (browser OAuth, no local CLI), add a url table to ~/.codex/config.toml instead:

config.toml
1# ~/.codex/config.toml
2[mcp_servers.dial]
3url = "https://getdial.ai/mcp"

See the MCP page for the full tool list and the remote OAuth flow, and Codex’s own MCP docs for server-management details.

Use it

Both paths work the same way — just ask in plain language:

Send an SMS to +14155550123 with the body “running late, ETA 10 min”.

Codex figures out the rest. With the MCP server it calls Dial’s tools directly; with the CLI skill it picks the right dial command and runs it. See Using Dial from an agent for more examples.

Inbound event handling (Suggestion)

You can also wake Codex automatically when a Dial event arrives by wiring a CLI command target: for each inbound event, the listen daemon spawns a handler that delivers a fresh prompt to Codex’s non-interactive mode.

First install the listen daemon:

$dial listen install

1. Write a handler

$#!/usr/bin/env bash
$# /usr/local/bin/handle-dial-event-codex
$event="$1"
$
$type=$(jq -r '.type' <<<"$event")
$from=$(jq -r '.from // ""' <<<"$event")
$body=$(jq -r '.body // ""' <<<"$event")
$
$prompt=$(cat <<EOF
>A Dial event just arrived. Decide what to do and act on it.
>
> type: $type
> from: $from
> body: $body
>
>raw event JSON:
>$event
>EOF
>)
$
$# Detach a fresh Codex run and return right away.
$nohup codex exec "$prompt" </dev/null >>~/.dial/codex.log 2>&1 &
$disown
$exit 0

Swap codex exec for whatever your install uses to start a one-shot agent run (the Codex CLI’s non-interactive subcommand depending on version).

2. Register

$chmod +x /usr/local/bin/handle-dial-event-codex
$dial local-target add cmd /usr/local/bin/handle-dial-event-codex

The nohup … & disown pattern keeps Codex running after the handler exits, so a multi-minute agent run never collides with the daemon’s per-attempt --timeout. See CLI command target for the full reference, delivery semantics, and the once-retry behavior.