Conversations
Conversation bindings let codex (exec) and claude steps share context across multiple invocations — primarily useful inside loops where each iteration should build on previous context.
Binding syntax
Section titled “Binding syntax”- id: work type: codex with: action: exec prompt: Continue refining. conversation: name: worker # required: any non-blank string scope: loop # optional: iteration | loop | workflowScopes
Section titled “Scopes”| Scope | Behavior | Valid where |
|---|---|---|
iteration | Fresh context each iteration | Inside loops only (default) |
loop | Shared across all iterations | Inside loops only |
workflow | Shared across entire run | Anywhere (default outside loops) |
Steps with the same name in the same scope share a single conversation session.
Constraints
Section titled “Constraints”- Requires
persist: true(the default) codexreview does not support conversationsconversationandoutput_schemacannot be used together when the conversation will be resumed (e.g.,scope: loopinside a loop, or when another step shares the same name)- Resumed codex exec turns reject
output_schemaandadd_dirs
Example: loop with shared context
Section titled “Example: loop with shared context”- id: refine type: loop max: 3 until: ${{ steps.eval.result.quality >= 8 }} steps: - id: work type: codex with: action: exec prompt: | Iteration ${{ run.iteration }}. Refine the implementation. conversation: name: worker scope: loop # Codex remembers previous iterations
- id: eval type: claude with: action: prompt prompt: Rate quality (1-10). output_schema: type: object required: [quality] additionalProperties: false properties: quality: type: integer