Codex
The Codex integration combines native OpenTelemetry with the local rollout transcripts that Codex writes for each thread. Native metrics and events describe aggregate operation across Codex surfaces. Transcripts provide the thread, conversation, configuration, work-item, token, and child-agent detail.
What it collects
- Native metrics — threads, turns, tokens, responsiveness, tools, MCP, automated reviews, skills, app connectors, startup phases, compactions, and transport or local-state failures.
- Native log events — prompts, model transport, tool decisions and results, startup activity, and errors.
- Transcripts — user and assistant messages, reasoning summaries, tool exchanges, turn context, token snapshots, command and file activity, MCP work items, extensions, compactions, and parent-child thread metadata.
- Session index — optional thread titles.
The managed integration does not enable a trace exporter. Codex does not currently emit a cost measure, so the dashboards report tokens without estimating spend.
What Noemata changes
Enabling the integration replaces the [otel] table and its subtables in CODEX_HOME/config.toml, preserving unrelated Codex configuration. CODEX_HOME defaults to ~/.codex. The managed section points native logs and metrics at Noemata’s collector and sets log_user_prompt = true.
The collector tails new JSONL records from CODEX_HOME/sessions/**/rollout-*.jsonl and CODEX_HOME/session_index.jsonl. It starts at the end of existing files, accepts complete records up to 4 MiB, and waits for a newline before parsing.
External edits must be enabled because config.toml normally sits outside the project. Setup records this choice under integrations.external_edits.
What you still have to do
- Restart Codex after enabling the integration. Existing processes keep their previous OpenTelemetry configuration.
- Start a new thread or append to an existing thread after the collector starts. Existing transcript contents are not backfilled.
- Keep individual tool outputs below the 4 MiB JSONL-record limit when complete transcript coverage matters.
Content and identity
Codex rollout transcripts can contain prompts, responses, reasoning summaries, instructions, source code, file changes, commands, tool arguments, and tool results. Native prompt events also contain prompt bodies because the managed configuration enables them. The Codex integration has no content-redaction setting. Use a trusted collector and storage destination.
The conversation view and thread message counts include visible user and assistant messages. They exclude developer messages and separate user-role transcript records whose content kinds contain only injected plugin recommendations, AGENTS.md instructions, or environment context. The excluded records remain queryable through the response_items semantic table.
Turn configuration derives network access from the complete sandbox policy. An explicit network_access value wins. When that field is absent, read-only and workspace-write mean disabled, danger-full-access means enabled, and an unknown policy type remains unknown.
Codex transcripts contain no account identity. During reconciliation, Noemata reads available non-secret claims from CODEX_HOME/auth.json and adds user.id, user.account_id, user.email, and default organization.id to transcript records. It discards tokens and API keys. The extracted identity remains in the generated, gitignored collector configuration and updates on the next reconciliation after an account change.
Dashboards
The @codex frame pack provides:
- overview, usage, work, extensibility, and reliability sections;
- thread inventory with parent-child structure;
- per-thread conversation, activity, usage, configuration, and reliability views;
- tool inventory and tool detail;
- MCP-server inventory and server detail;
- skill inventory and skill detail.
Native metrics currently lack a reliable thread identifier. Aggregate views group them by model, surface, tool, MCP server, skill, reviewer, and related dimensions. Per-thread views use the transcript stream.
Settings
Codex has no integration-specific Noemata settings beyond enabling it. The shared integrations.external_edits setting controls whether reconciliation may update CODEX_HOME/config.toml.