Coding agents
Trace OpenAI Codex CLI turns
Codex already speaks OpenTelemetry; the installer writes one managed [otel] block and the receiver keeps the turn, not the plumbing.
Set up Codex CLI
The snippet is copied from the SDK README, not paraphrased. Keys shown as tk_live_... are the environment key from Settings › Environments.
pip install syntropylabs-evalkit
evalkit coding install --vendor codex --key tk_live_...
evalkit coding status
evalkit coding doctorCopied from sdk-py/README.md § Coding agents (Claude Code · Codex · Gemini CLI · Cursor · Windsurf · OpenCode)
Install → first trace
- 01
Install the SDK
pip install syntropylabs-evalkit or npm install syntropylabs-evalkit. Installing the SDK also installs the evalkit command.
- 02
Point Codex at your environment
evalkit coding install --vendor codex --key tk_live_... — the key and endpoint are stored once in ~/.config/evalkit/config.env; the key is never printed.
- 03
Start a new agent session
Codex reads its configuration when a session starts, so an already-open session keeps sending nothing. Open a new one and run one prompt.
- 04
Check and open the trace
evalkit coding status shows what was written; evalkit coding doctor posts one synthetic turn and reads it back. The turn appears in Traces as one trace.
What a turn looks like
Sample data in the product’s own table. Hover, focus or tap a claim to see the columns it points at.
Sample run
| Operation | Service | Status | Model | Latency | Tokens | ≈Cost | Score |
|---|---|---|---|---|---|---|---|
| support_agent.turn8f3a1c0d94e2session sess_4b1e | support-api | ok | gpt-4o-mini | 1.84 s | 3,412 | $0.0006 | 92%auto |
| refund_agent.turnc21d7e5a30b8session sess_9a02tool loop | refund-worker | ok | claude-sonnet-4 | 4.31 s | 7,905 | $0.0389 | 68%auto |
| claude-code.turn5be04f7d1a96session sess_f77c | Claude Code | unset | claude-sonnet-4 | 48.20 s | 61,208 | $0.19 | — |
| rag.answere9a2b6c4d015error | docs-bot | error | gpt-4o | 6.02 s | 9,880 | $0.0312 | 41%auto |
| voice.turn17c8d3f2a4e0session sess_20d1 | ivr-agent | ok | gpt-4o-realtime | 0.92 s | 1,104 | $0.0071 | — |
fig. 1 · the traces table this integration fills · sample data
What you see
Taken from the SDK READMEs’ coverage tables. with flag means the signal leaves your machine only when you opt in.
| Signal | Captured | Detail |
|---|---|---|
| One tree per turn | yes | the turn span; Codex’s ~150 internal plumbing spans are dropped by the receiver |
| Tool calls | partial | when Codex emits them |
| Tool output | with flag | with --capture full |
| Prompt and reply | with flag | prompt with --capture full |
| Subagents | no | — |
| Tokens and cost | yes | sse_event tokens, turn_cost |
Limitations
- Tool calls appear only when Codex emits them.
- The per-vendor table lists the prompt under --capture full; it does not list the reply.
- No subagents.
- The installer refuses to run if an [otel] table already exists outside the evalkit-managed markers in config.toml.
Next steps
Trace Codex CLI today
Tracing is free for one project on every plan, coding-agent traces included. Evaluations, datasets and simulation are Pro and up.