- Trace Codex sessions: Install the
trace-codexplugin to trace Codex CLI sessions to Braintrust as session, turn, model call, and tool spans. - MCP server: Configure Codex to access your Braintrust projects, experiments, and logs through the Braintrust MCP server.
Trace Codex sessions
Thetrace-codex plugin traces your Codex CLI sessions to Braintrust. Each session produces a hierarchy of spans:
- Session spans (
codex: <dir>orcodex session): One root span per session, with the working directory, model, source, and permission mode. - Turn spans (
turn: <turn_id>): One span per user turn, with the prompt as input and the agent’s final response as output. - LLM spans (named with the model slug): One span per model call within a turn, with conversation history as input and response output; includes prompt, completion, cached, and reasoning token counts.
- Tool spans (named with the tool name): One span per tool execution, with the tool’s input and output. Tools that request escalated permissions are tagged
permission-request.
Setup
Install Codex
If you haven’t already, install Codex.
Add the trace-codex plugin
Install the The first time you run Codex after installing, it prompts you to trust the plugin’s hooks. Accept the prompt to enable tracing.
trace-codex plugin from the marketplace:Configuration
Each setting can be provided as aconfig.json key or as an environment variable. Environment variables always override config.json.
config.json key | Environment variable | Default | Description |
|---|---|---|---|
traceToBraintrust | TRACE_TO_BRAINTRUST | false | Enable tracing. Tracing is disabled when this is false or unset. |
apiKey | BRAINTRUST_API_KEY | — | Braintrust API key. |
project | BRAINTRUST_PROJECT | "codex" | Project to log traces into. |
apiUrl | BRAINTRUST_API_URL | api.braintrust.dev | Braintrust API URL. For EU organizations, use https://api-eu.braintrust.dev. For self-hosted deployments, use your data plane URL. |
additionalMetadata | BRAINTRUST_ADDITIONAL_METADATA | — | JSON object of extra metadata merged into the root span. Standard keys take precedence on conflict. |
flushOnTurnEnd | BRAINTRUST_FLUSH_ON_TURN_END | false | Block at each turn’s end until all spans are delivered to Braintrust. Recommended for CI runs. |
recordFile | BRAINTRUST_EVENT_SERVER_RECORD_FILE | — | Record every event to this NDJSON file for replay and debugging. |
Using in CI
To tracecodex exec runs in CI, set BRAINTRUST_FLUSH_ON_TURN_END=true so spans are delivered before the job exits, and pass --dangerously-bypass-hook-trust to skip the interactive hook-trust prompt.
Pin the marketplace to a specific release tag in CI for repeatable builds:
codex plugin marketplace add braintrustdata/braintrust-codex-plugin@trace-codex-v0.0.2. See the braintrust-codex-plugin releases for available tags.Resuming sessions
When you resume a Codex session, the trace continues in the same root span. The plugin snapshots session state to disk so later turns attach to the original trace even after the background server has restarted. When resuming, the original session’s tracing settings remain in effect. If the original session hadTRACE_TO_BRAINTRUST=true, the resumed session is also traced regardless of the current environment.
MCP server
The Braintrust MCP server integrates with Codex, giving it access to your Braintrust projects, experiments, and logs.Setup
Install Codex
If you haven’t already, install Codex.
Add the Braintrust MCP server
Edit This configures Codex to read your Braintrust API key from the
~/.codex/config.toml and add the Braintrust MCP server configuration:BRAINTRUST_API_KEY environment variable.Usage
Once configured, Codex can access Braintrust data through the MCP server. You can fetch experiment results, query logs, log data, and more. See MCP documentation for details. Example prompts in Codex:- “Show me my recent Braintrust experiments”
- “Query the last 10 logged requests with errors”
- “What’s the average latency for the summarizer prompt today?”
- “Compare accuracy scores between my GPT-4 and Claude experiments”
Troubleshooting
Traces not appearing in Braintrust
Traces not appearing in Braintrust
- Verify
TRACE_TO_BRAINTRUSTis set totrue. - Verify
BRAINTRUST_API_KEYis set in the shell where you launch Codex. - Confirm the plugin is installed: run
codex plugin listand check thattrace-codexappears. - Check that you trusted the plugin’s hooks when Codex prompted you, or pass
--dangerously-bypass-hook-trustfor non-interactive runs.
BRAINTRUST_API_KEY not found
BRAINTRUST_API_KEY not found
- Verify the variable is set:
echo $BRAINTRUST_API_KEY(macOS/Linux) orecho %BRAINTRUST_API_KEY%(Windows) - Ensure you’ve reloaded your shell after setting the variable
- Check that Codex is launched from a shell where the variable is set
MCP server not appearing
MCP server not appearing
- Verify the TOML configuration syntax is correct
- Check that the file path is exactly
~/.codex/config.toml - Run
/mcpin Codex to see available MCP servers - Try restarting Codex
Authentication fails
Authentication fails
- Verify your API key is correct (no extra spaces)
- Ensure you can log into Braintrust using the account associated with the API key
- Generate a new API key if needed
Connection errors
Connection errors
- Verify the URL is exactly
https://api.braintrust.dev/mcp(no trailing slash) - Check your internet connection
- Corporate networks may need to allowlist
api.braintrust.devand*.braintrust.dev
Next steps
- Run evaluations: Check out the evaluation guide to learn evaluation patterns.
- Explore MCP tools: See the MCP documentation for all available commands.
- Query with SQL: Learn how to query with SQL for complex data analysis.
- Browse the source: The braintrust-codex-plugin repository contains the plugin source code.