exec ignores CODEX_INTERNAL_ORIGINATOR_OVERRIDE for OTEL service name
Resolved 💬 1 comment Opened Oct 6, 2025 by andjohnsonj5 Closed Jan 13, 2026
Summary
codex-exec 在启动时调用 set_default_originator("codex_exec") 先占住了全局 originator,因此即使设置了 CODEX_INTERNAL_ORIGINATOR_OVERRIDE 环境变量,OTEL 初始化也只会看到 codex_exec 这个值。
复现步骤
- 在 shell 中导出
CODEX_INTERNAL_ORIGINATOR_OVERRIDE=my_custom_client。 - 运行
codex-exec ...启动一次对话。 - 检查导出的 OTEL trace(或本地
codex_otel日志),service.name始终是codex_exec。
期望行为
OTEL 的 service.name 应该能反映 CODEX_INTERNAL_ORIGINATOR_OVERRIDE 的值,方便区分不同调用方或部署。
实际行为
codex-exec 在 codex-rs/exec/src/lib.rs:51 提前调用 set_default_originator("codex_exec"),导致 OnceLock 被占用;后续 codex-rs/core/src/default_client.rs:40 的 init_originator_from_env 无法读取环境变量。
OTEL 最终在 codex-rs/core/src/otel_init.rs:49 取到的 service_name 仍然是 codex_exec。
额外上下文
也许可以先检查环境变量是否已设置,或者允许环境变量覆写默认值,这样就能按客户端标识区分 OTEL 数据。
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗