openai/codex · error · anyhow::Error

duplicate codex turn start for {codex_turn_id}

Error message

duplicate codex turn start for {codex_turn_id}

What it means

Error "duplicate codex turn start for {codex_turn_id}" thrown in openai/codex.

Source

Thrown at codex-rs/rollout-trace/src/reducer/thread.rs:135

        thread.execution.status = match status {
            RolloutStatus::Running => ExecutionStatus::Running,
            RolloutStatus::Completed => ExecutionStatus::Completed,
            RolloutStatus::Failed => ExecutionStatus::Failed,
            RolloutStatus::Aborted => ExecutionStatus::Aborted,
        };
        Ok(())
    }

    /// Starts a Codex turn inside an existing thread.
    pub(super) fn start_codex_turn(
        &mut self,
        seq: RawEventSeq,
        wall_time_unix_ms: i64,
        codex_turn_id: CodexTurnId,
        thread_id: String,
    ) -> Result<()> {
        if self.rollout.codex_turns.contains_key(&codex_turn_id) {
            bail!("duplicate codex turn start for {codex_turn_id}");
        }

        self.thread_mut(&thread_id)?;

        self.rollout.codex_turns.insert(
            codex_turn_id.clone(),
            CodexTurn {
                codex_turn_id,
                thread_id,
                execution: ExecutionWindow {
                    started_at_unix_ms: wall_time_unix_ms,
                    started_seq: seq,
                    ended_at_unix_ms: None,
                    ended_seq: None,
                    status: ExecutionStatus::Running,
                },
                input_item_ids: Vec::new(),
            },

View on GitHub (pinned to 339751715c)

When it happens

Trigger: Thrown at codex-rs/rollout-trace/src/reducer/thread.rs:135 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of openai/codex@339751715c (2026-08-25). Data as JSON: /api/errors/b48a4055e308d599. Report an issue: GitHub.