Codex

coord login finds Codex on its own, registers Coordigent in ~/.codex/config.toml and adds the hooks that deliver messages to a running Codex agent, in every repo.

Set it up

Log in once per machine, then connect each repo you use Codex in, once, inside it:

coord login
coord connect

Codex is read from its session files only in repos connected on this machine, so its agents in a repo that isn't connected here are not recorded, even when a teammate connected the same repo.

coord login (and coord connect, which does the same) detects Codex when ~/.codex exists or codex is on your PATH, and wires it at user level.

To also write Codex's files into a repo, for a team that commits them, run coord connect --repo-files inside it. That writes them when the repo already has a .codex/ directory, or when you say yes to its one question about the other agent apps on this machine. To name Codex without the question:

coord connect --repo-files --clients codex

Restart any Codex agent that was already running so it picks up the new tools.

What gets written

On this machine

One table in ~/.codex/config.toml:

[mcp_servers.coordigent] command = "/Users/you/.tower/bin/coord-mcp" args = [] env_vars = ["COORDIGENT_TOKEN", "COORDIGENT_SERVER_URL", "COORDIGENT_REPO", "COORDIGENT_CLIENT", "TOWER_TOKEN", "TOWER_SERVER_URL", "TOWER_DIR"] [mcp_servers.coordigent.env]

The edit is textual: only Coordigent's own tables are added, so your other tables, their order and your comments stay. An existing [mcp_servers.coordigent] table is kept, unless its command points at a binary that no longer exists. An old [mcp_servers.tower] table that runs tower-mcp is removed. No token is stored here: coord-mcp reads your login from ~/.tower/config.json.

env_vars is there because Codex filters the environment it passes to an MCP server. It lets through only Coordigent's own settings.

~/.codex/hooks.json gets the same two hooks as a repo's .codex/hooks.json, below. Hooks you added yourself are kept.

In the repo, with --repo-files

  • .codex/config.toml: the same coordigent server, found through $HOME so the file is identical on every teammate's machine, with the repo named in COORDIGENT_REPO.
  • AGENTS.md: the coordination rules, with a line saying Codex lists the tools with underscores (coordigent_status) and either spelling works, between <!-- coordigent:start --> and <!-- coordigent:end --> markers. The rest of the file is yours.
  • .codex/hooks.json: two hooks. SessionStart hands a new agent a pending handoff, and UserPromptSubmit delivers waiting messages and conflict warnings at the start of every turn. Hooks you added yourself are kept.

coord connect --repo-files also writes Claude Code's repo files; see Claude Code.

Codex reads a repo's .codex/config.toml only once you trust the project in Codex.

Only for Codex

coord install codex writes Codex's repo files without the rest of coord connect. Add --user to write ~/.codex/config.toml and ~/.codex/AGENTS.md instead. Both print the matching codex mcp add coordigent command.

coord install codex --user

Update

coord update

This downloads the current coord and coord-mcp and restarts the daemon. Restart Codex to load the new coord-mcp.

Check it

coord doctor
codex mcp get coordigent

coord doctor lists codex with a ✓ and the config file it found, and a Hooks: line naming the events whose hooks are installed (SessionStart, UserPromptSubmit), or none. A ✗ line names the command that fixes it. Inside Codex, ask the agent to call coordigent_status: its own row is marked (you).

What works and what degrades

Codex supports MCP resources and none of the optional features: no prompts, sampling, elicitation, roots or server notifications. Coordigent does not need them.

  • Files in use and conflicts. The daemon reads the session log Codex writes, so Codex agents show what they edit, as Claude Code agents do. Codex's hooks start the daemon when it is not running.
  • Messages. The UserPromptSubmit hook delivers messages and conflict warnings at the start of each turn, without a restart. They also arrive as a ⚠ COORD: banner on the next Coordigent tool result, and coordigent_message_inbox reads the rest. An idle Codex chat hears nothing until someone types, so when one has had messages waiting for two minutes, the daemon shows a desktop notification: "Codex 3f2a · widgets: 2 Coordigent messages waiting. Type anything in that chat to deliver them." It shows at most one every 10 minutes per chat, and none for the chat's own messages. {"desktopNotifications": false} in ~/.tower/preferences.json turns these off, along with the other notifications.

Remove

To remove Coordigent from this machine entirely, run coord uninstall (add --dry-run to see the plan first). It keeps anything you edited by hand.

To remove only Codex's setup by hand, delete the [mcp_servers.coordigent] tables from ~/.codex/config.toml and the repo's .codex/config.toml, the Coordigent hooks from ~/.codex/hooks.json and the repo's .codex/hooks.json, and the marked block in AGENTS.md. To stop Coordigent in one repo only, run coord unenroll there.

Next

  • MCP tools lists every coordigent.* tool the agent can call.
  • Messages explains how messages reach an agent.