Requirements
Thecodex CLI must be installed. No separate token is needed in Continuum — Codex manages its own auth state and Continuum reads the local session files.
Plan mode
Codex plan mode maps to read-only sandboxing: Continuum spawns Codex with-s read-only. When you approve a plan, the daemon respawns Codex in workspace-write mode. Codex does not emit an ExitPlanMode event, so Continuum injects a synthetic planText so the Plan card renders the Approve button correctly.
The approve-plan respawn uses cursor-agent or claude harness conventions depending on which agent is active. For Codex, the respawn uses the Codex workspace-write flags.
Reasoning effort
Pass reasoning effort to Codex via-c model_reasoning_effort="...". The effort dial in the session header maps to low, medium, high, xhigh, and max.
Usage analytics
Token events are parsed from~/.codex/sessions/**/*.jsonl. Codex JSONL uses cumulative token counts; the parser converts these to per-event deltas before aggregation. Events are deduplicated and priced with the LiteLLM snapshot.
Live rate-limit state is read directly from session files. No API token is needed in Continuum for Codex quota gauges.
Respawn lineage
Approve-plan kills the plan-mode Codex process and spawns a fresh rollout with a new JSONL file and a new Codex session ID. Continuum’sSessionFileResolver tracks this lineage:
resolve(session:)returns the cached JSONL URL if still valid, or scans~/.codex/sessions/for the newest rollout in the session’s activity window (createdAt … lastEventAt + 5min).record(sessionId:rolloutURL:)caches explicit spawns.invalidate(sessionId:)is called by the approve-plan handler to force a rescan for the next rollout.
Sub-agent filtering
Codex can spawn multiple sub-agent worker threads for a single user turn. Continuum readspayload.thread_source and payload.agent_role from each rollout and skips rollouts tagged as subagent in the sidebar. Parent rollouts still appear as normal Recent rows.
Chat rendering
Continuum parses Codex’sresponse_item payload shapes — message, function_call, function_call_output, and reasoning — into the same ChatMessage model used for Claude sessions. Codex’s auto-injected <environment_context> user turns and role: developer system wrappers are filtered out. Tool-run summaries use Codex’s native names (cmd, brief, apply_patch variants).