Skip to content

Codex follow-up request is accepted in one turn but tool work is emitted in an unaccepted successor turn #2634

Description

@uje-m

title: 'Codex follow-up request is accepted in one turn but tool work is emitted in an unaccepted successor turn'
severity: 'major'
target: 'get-bb/bb'

Summary

On a fresh Codex-provider thread, a later turn/start request can be persisted as accepted and completed in turn A, while the provider's actual reasoning/tool call is emitted in a newly started turn B that has no turn/input/accepted event. Any consumer that correctly binds effects to the accepted turn must reject the otherwise-valid tool call.

Reproduction

  1. Start a fresh Codex thread with a registered native BB agent tool.
  2. Complete one ordinary tool-calling turn successfully.
  3. Send a second turn/start request that explicitly calls the same tool.
  4. Inspect the append-only thread events.

Observed

  • client/turn/requested for request R targets a new turn.
  • turn A starts and records turn/input/accepted for R.
  • turn A immediately records turn/completed with no work items.
  • turn B starts at the same timestamp without turn/input/accepted.
  • the requested tool call starts/completes in turn B.

This reproduced on multiple fresh threads. The first tool-calling turn did not split.

Expected

The provider work caused by request R must remain in the turn that records R's input acceptance, or the successor turn must carry an explicit durable correlation to R that effect consumers can validate. A completed/unaccepted successor must not inherit the request implicitly.

Safety impact

This is not a presentation-only mismatch. Exactly-bound tool consumers must fail closed, so valid user-requested tool work becomes unusable. Weakening consumers to accept a tool call from an unrelated/unaccepted turn would create a cross-turn authority bug.

Notes

No private plugin, policy, repository, thread identifier, nonce, or product-specific workflow is required to reproduce this event-order defect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    confirmed-reproBug reproduced independently; see linked reportprovider-codexBuilt-in plugin: provider-codexprovidersCross-provider bridges, models, loginthreadsTurns, timeline, messaging, forks

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions