Update · Codex parity

DashClaw now governs Codex

One install command. The same PreToolUse / PostToolUse / Stop hooks. The same Discord approval round-trip. The decision ledger shows Codex actions next to Claude Code actions, with agent_id telling you which agent did what.

The unlock

Codex's hook event schema (PreToolUse, PostToolUse, SessionStart, UserPromptSubmit, Stop, PermissionRequest) is field-compatible with Claude Code's. Same JSON shape on stdin — tool_name, tool_input, tool_use_id. Same exit-code-2 semantics for block. The Python hooks DashClaw already ships for Claude Code run unchanged under Codex.

What was missing was the wiring. Codex stores its config in ~/.codex/config.toml (TOML, not JSON), uses AGENTS.md where Claude uses CLAUDE.md, and ships its own MCP and notify configs. The new dashclaw install codex command handles all of it.

What the installer does

  1. Copies the hooks. The same dashclaw_pretool.py / dashclaw_posttool.py / dashclaw_stop.py scripts plus the vendored dashclaw_agent_intel module go into ~/.codex/hooks/dashclaw/.
  2. Merges config.toml. A managed block — bracketed by # >>> dashclaw start / # <<< dashclaw end — registers the DashClaw MCP server, the three hook events, and sets approval_policy = "on-request" so Codex surfaces DashClaw's require_approval decisions through its normal approval prompt. Your existing config outside the block is preserved verbatim, and a .dashclaw-bak sits next to it on first install.
  3. Drops the protocol into AGENTS.md. The governance protocol — when to call dashclaw_guard, how to handle each of the four decisions, when to call dashclaw_record — gets merged into your project's AGENTS.md. Same managed-block strategy. Anything you wrote stays.

Session analytics

Codex writes session rollouts to ~/.codex/sessions/rollout-<ts>-<uuid>.jsonl. A new dashclaw code ingest-codex subcommand parses them — including reasoning tokens and cached input tokens, which Codex tracks separately from Claude — and writes normalized session JSON to ~/.dashclaw/codex-sessions/ for batch upload.

Server-side codex session ingestion lands in the next release. For now the parser and CLI are ready; sessions accumulate on disk waiting for the server endpoint.

What stays the same

  • · Same /decisions ledger. Codex actions land alongside Claude Code actions with agent_id = "codex".
  • · Same Discord and Telegram approval bridges.
  • · Same dashclaw_wait_for_approval MCP tool — Codex blocks on it the same way Claude Code does.
  • · Same policy packs. No Codex-specific policies to write.
  • · Free for everyone, no tier gating. DashClaw is an open-source project — there is no pricing surface and no Pro plan.

Try it

node /path/to/DashClaw/cli/bin/dashclaw.js install codex \
  --project /path/to/your/project
codex hooks list   # find the three DashClaw hooks
codex hooks trust ~/.codex/config.toml:pre_tool_use:0:0
# (repeat for post_tool_use and stop)

Full step-by-step at /guides/codex. If something breaks, open an issue on GitHub.