Files
codex/docs/config.md
bbrown-oai 31b233c7c6 codex-otel: add configurable trace metadata (#21556)
Add Codex config for static trace span attributes and structured W3C
tracestate field upserts. The config flows through OtelSettings so
callers can attach trace metadata without touching every span call site.

Apply span attributes with an SDK span processor so every exported
trace span carries the configured metadata. Model tracestate as nested
member fields so configured keys can be upserted while unrelated
propagated state in the same member is preserved.

Validate configured tracestate before installing provider-global state,
including header-unsafe values the SDK does not reject by itself. This
keeps Codex from propagating malformed trace context from config.

Update the config schema, public docs, and OTLP loopback coverage for
config parsing, span export, propagation, and invalid-header rejection.
2026-05-07 16:06:57 -07:00

1.8 KiB

Configuration

For basic configuration instructions, see this documentation.

For advanced configuration instructions, see this documentation.

For a full configuration reference, see this documentation.

Commit attribution

Codex can add a git trailer to generated commit messages so commits make Codex's involvement explicit. This behavior is gated by the codex_git_commit feature flag; the top-level commit_attribution setting is only used when that feature is enabled.

Add the following to ~/.codex/config.toml:

commit_attribution = "Codex <noreply@openai.com>"

[features]
codex_git_commit = true

When enabled, Codex appends a Co-authored-by: trailer using the configured attribution value. If commit_attribution is omitted, Codex uses Codex <noreply@openai.com>. Set commit_attribution = "" to disable the trailer while leaving the feature flag enabled.

OpenTelemetry Trace Metadata

Codex can add static OpenTelemetry span attributes to exported trace spans and static W3C tracestate fields to propagated trace context:

[otel.span_attributes]
"example.trace_attr" = "enabled"

[otel.tracestate.example]
alpha = "one"
beta = "two"

Nested otel.tracestate tables are encoded as semicolon-separated key:value fields inside the named tracestate member. If propagated trace context already has the named member, Codex upserts configured fields and preserves other fields in that member. This config shape does not support setting opaque tracestate member values. Invalid trace metadata entries are ignored during config load and reported as startup warnings.