Skip to content

Paginated history can reconstruct completed turns as “interrupted” on resume #37577

Open

Description

@pivot526

Summary

After upgrading Codex CLI from 0.146.0 to 0.147.0, previously completed conversations no longer replay correctly with codex resume.

The resumed conversation shows only the beginning of the first turn and then:

Conversation interrupted - tell the model what to do differently. Something went wrong? Hit `/feedback` to report the issue.

However, the underlying rollout JSONL is complete and contains the full turn, including subsequent assistant/tool activity and an explicit task_complete.

This appears to be a bug in paginated history reconstruction rather than missing or corrupted rollout data.

Environment

  • Codex CLI: 0.147.0
  • Previously: 0.146.0
  • OS: Linux
  • Installation: native Codex install script

Reproduction

  1. Have an existing conversation containing one or more normally completed turns.
  2. Upgrade to 0.147.0.
  3. Resume the conversation with:
codex resume
  1. The TUI displays only the beginning of the conversation and then marks it as interrupted.

Evidence

The underlying rollout JSONL remains intact.

For the affected turn, the rollout contains:

task_started
...
assistant/tool activity
...
final assistant output
task_complete

There are also later completed turns in the same rollout.

I queried codex app-server directly using thread/resume with paginated history. The app-server returned the affected historical turn approximately as:

thread status: idle
history mode: paginated

turn status: interrupted
items: 4

This is inconsistent with the canonical rollout, where the same turn continues substantially further and ends with task_complete.

Using excludeTurns: false did not restore the full history; the thread was still returned in paginated mode with the same truncated/interrupted reconstruction.

Troubleshooting attempted

I tried:

  • downgrading to 0.146.0;
  • deleting and rebuilding the Codex SQLite state database;
  • restarting Codex and resuming the same conversation.

The problem remained.

The rollout JSONL itself remained complete.

Suspected failure mode

It appears that paginated history reconstruction is materialising only a partial fragment of a completed turn.

Because the completion boundary is not included in the reconstructed fragment, the turn is subsequently treated as interrupted even though the rollout contains a valid task_complete.

Conceptually:

complete rollout
    ↓
paginated history reconstruction
    ↓
partial historical turn
    ↓
completion boundary not observed
    ↓
turn classified as interrupted
    ↓
TUI displays “Conversation interrupted”

The incorrect interrupted status is already present in the thread/resume app-server response, so the problem does not appear to be limited to TUI rendering.

Expected behaviour

Completed historical turns should be reconstructed as completed and their full conversation history should remain available after resume.

Actual behaviour

A completed historical turn is returned as interrupted with only a small subset of its items, and later history is not displayed.

Data integrity

The underlying rollout data appears to be intact. This looks like a paginated history reconstruction/migration issue rather than conversation data loss.

Activity

  1. added
    bugSomething isn't working
    CLIIssues related to the Codex CLI
    app-serverIssues involving app server protocol or interfaces
    on Aug 8, 2026
  2. 321Fontsize commented on Aug 24, 2026

    @321Fontsize

    Same issue. After I run codex resume <session_id>, I can only see my first message and the error message:

    ■ Conversation interrupted - tell the model what to do differently. Something went wrong? Hit /feedback to report the issue.
    
  3. simla-com commented on Aug 24, 2026

    @simla-com

    Confirmed on Codex Desktop for Windows 11 after a recent app update (desktop package build 26.818.8289.0). This is reproducible across two independent desktop threads and is not rollout-data loss.

    Observed in the Desktop UI / thread/read:

    • only the initial prompt and a partial first assistant item are returned;
    • the turn is reported as interrupted;
    • pagination reports hasMore=false.

    The corresponding canonical rollout JSONL files parse cleanly and contain complete work:

    • affected thread A: 18 user messages, 42 assistant messages, 15 completed turns;
    • affected thread B: 13 user messages, 67 assistant messages, 9 completed turns.

    Both affected threads use history_mode=paginated; a comparable unaffected current Desktop thread uses legacy. The primary local SQLite store passes integrity checks, and its rollout paths/timestamps match the complete JSONL files.

    This therefore appears to affect Desktop/App history reconstruction too, not only CLI resume. No paths, prompts, project names, thread IDs, or credentials are included here. I can provide redacted aggregate diagnostics privately if maintainers need them.

  4. CharlesZHEN commented on Aug 25, 2026

    @CharlesZHEN

    Additional Desktop + Remote SSH reproduction (2026-08-25 UTC).

    Environment:

    • ChatGPT/Codex Desktop connected to a Remote SSH app-server
    • Remote Codex/app-server: 0.146.0-alpha.3.1
    • History mode: paginated

    Observed:

    • Reopening the affected conversation does not hydrate the complete transcript.
    • The app-facing thread read returns only the initial fragment, marks the turn as interrupted, and reports hasMore=false.
    • The canonical rollout parses successfully and contains 60 JSONL records, including two task_complete events and later completed activity.
    • The thread still exists in the state database and its rollout file exists. This is not transcript deletion.

    Expected:

    • Completed historical turns must remain completed.
    • Pagination should expose all persisted turns.
    • If the history projection disagrees with the canonical rollout, Codex should automatically rebuild it instead of returning a truncated interrupted turn.
    • A single hydration failure should not prevent opening or switching conversations.

    Privacy note:
    No thread IDs, titles, prompts, workspace names, project paths, filenames, screenshots, raw transcripts, raw logs, account details, credentials, or personal information are included.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    CLIIssues related to the Codex CLIapp-serverIssues involving app server protocol or interfacesbugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions