openclaw - ✅(Solved) Fix [Bug]: Web UI "Show Checkpoints" in session list shows empty despite checkpoint files existing on disk [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#68864Fetched 2026-04-19 15:06:45
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Participants
Timeline (top)
labeled ×2cross-referenced ×1referenced ×1

In the Web UI session list, the Compaction column has a "Show Checkpoints" button for each session. Clicking it opens an empty list/modal with no checkpoints displayed, even though multiple checkpoint .jsonl files exist on disk for those sessions.

<img width="1575" height="830" alt="Image" src="https://github.com/user-attachments/assets/e20c83a1-a35f-4d82-95f4-19ff78a12ebc" />

Root Cause

Possible root cause: Gateway startup does not re-index checkpoint files for inactive/historical sessions. The checkpoint-to-session mapping may only be populated when a compaction event fires during an active session, and is not persisted or rebuilt from the filesystem on restart.

Fix Action

Fixed

PR fix notes

PR #68883: fix: discover checkpoint files from disk when store array is empty (#68864)

Description (problem / solution / changelog)

Problem

Web UI 'Show Checkpoints' shows empty list despite checkpoint .jsonl files existing on disk. The compactionCheckpoints array in the session store can be empty/missing even when checkpoint files exist.

Fix

Added discoverCheckpointFilesFromDisk() fallback that scans the session directory for .checkpoint.*.jsonl files and builds synthetic checkpoint entries from filename parsing and filesystem metadata.

The listing endpoint now falls back to disk discovery when the store array is empty.

Changes

  • src/gateway/session-compaction-checkpoints.ts: +60 lines (discoverCheckpointFilesFromDisk)
  • src/gateway/server-methods/sessions.ts: +37/-4 (fallback in list + get handlers)

Fixes #68864

Changed files

  • src/gateway/server-methods/sessions.ts (modified, +37/-4)
  • src/gateway/session-compaction-checkpoints.test.ts (modified, +42/-0)
  • src/gateway/session-compaction-checkpoints.ts (modified, +60/-0)

Code Example

### Evidence

Checkpoint files are present and non-empty on the filesystem:


# Session 55ba12f0 — 10 checkpoints (890KB to 4.1MB each)
55ba12f0-...-cd7b95340384.checkpoint.14f758d4-....jsonl  (1.5MB)
55ba12f0-...-cd7b95340384.checkpoint.30fd2227-....jsonl  (3.8MB)
55ba12f0-...-cd7b95340384.checkpoint.330fbb19-....jsonl  (1.1MB)
... (10 total)

# Session c2a92ba0 — 5 checkpoints
c2a92ba0-...-b9ebb8b793c1.checkpoint.117e0a03-....jsonl  (1.7MB)
c2a92ba0-...-b9ebb8b793c1.checkpoint.25a5f32d-....jsonl  (1.2MB)
... (5 total)

# Session 1480186e — 4 checkpoints
1480186e-...-8b1b4e843d19.checkpoint.b0ace945-....jsonl  (2.0MB)
... (4 total)


All files follow the naming convention `{sessionId}.checkpoint.{checkpointId}.jsonl` and contain valid data.
----

After a gateway restart today (due to config changes), the currently active session (1480186e) now correctly shows its checkpoints in the Web UI. However, all other historical sessions still show empty checkpoint lists.

This suggests the checkpoint index is only built/refreshed for sessions that are active at the time of gateway restart, but historical session checkpoint indexes are not reconstructed.

Evidence:

Session 1480186e (active during restart):Shows checkpoints in UI
Session 55ba12f0 (10 checkpoint files on disk):Empty in UI
Session c2a92ba0 (5 checkpoint files on disk):Empty in UI
Session dec7ece9 (3 checkpoint files on disk):Empty in UI
Total: 23 checkpoint .jsonl files exist on disk across 5 sessions, but only 1 session's checkpoints are visible in the UI

Possible root cause: Gateway startup does not re-index checkpoint files for inactive/historical sessions. The checkpoint-to-session mapping may only be populated when a compaction event fires during an active session, and is not persisted or rebuilt from the filesystem on restart.
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

Summary

In the Web UI session list, the Compaction column has a "Show Checkpoints" button for each session. Clicking it opens an empty list/modal with no checkpoints displayed, even though multiple checkpoint .jsonl files exist on disk for those sessions.

<img width="1575" height="830" alt="Image" src="https://github.com/user-attachments/assets/e20c83a1-a35f-4d82-95f4-19ff78a12ebc" />

Steps to reproduce

Steps to Reproduce

  1. Open the OpenClaw Web UI → Sessions list
  2. Look at the "Compaction" column
  3. Click "Show Checkpoints" on any session that has been compacted
  4. The checkpoint list/modal appears empty

Expected behavior

Expected Behavior

The checkpoint list should display all available checkpoints for the session, allowing the user to inspect or restore them.

Actual behavior

Actual Behavior

The list is empty for all sessions, despite checkpoint files clearly existing on disk.

OpenClaw version

2026.4.15 (041266a)

Operating system

Ubuntu 24.04.4 LTS (Noble Numbat), kernel 6.17.0-1007-aws, x86_64

Install method

npm global

Model

amazon-bedrock/global.anthropic.claude-opus-4-6-v1

Provider / routing chain

Amazon Bedrock → Anthropic Claude (cross-region inference, global.anthropic.* prefix, region: ap-southeast-1)

Additional provider/model setup details

Additional Context

  • The compaction itself works correctly — checkpoint files are being created with proper content
  • The issue appears to be purely a Web UI display/API problem (the UI either isn't querying checkpoints correctly, or the API endpoint isn't returning them)
  • Affects all sessions, not just a specific one

Environment

  • Node.js: v22.22.2
  • Browser: 147.0.7727.101 stable (arm64)
  • Deployment: Self-hosted VPS

Logs, screenshots, and evidence

### Evidence

Checkpoint files are present and non-empty on the filesystem:


# Session 55ba12f0 — 10 checkpoints (890KB to 4.1MB each)
55ba12f0-...-cd7b95340384.checkpoint.14f758d4-....jsonl  (1.5MB)
55ba12f0-...-cd7b95340384.checkpoint.30fd2227-....jsonl  (3.8MB)
55ba12f0-...-cd7b95340384.checkpoint.330fbb19-....jsonl  (1.1MB)
... (10 total)

# Session c2a92ba0 — 5 checkpoints
c2a92ba0-...-b9ebb8b793c1.checkpoint.117e0a03-....jsonl  (1.7MB)
c2a92ba0-...-b9ebb8b793c1.checkpoint.25a5f32d-....jsonl  (1.2MB)
... (5 total)

# Session 1480186e — 4 checkpoints
1480186e-...-8b1b4e843d19.checkpoint.b0ace945-....jsonl  (2.0MB)
... (4 total)


All files follow the naming convention `{sessionId}.checkpoint.{checkpointId}.jsonl` and contain valid data.
----

After a gateway restart today (due to config changes), the currently active session (1480186e) now correctly shows its checkpoints in the Web UI. However, all other historical sessions still show empty checkpoint lists.

This suggests the checkpoint index is only built/refreshed for sessions that are active at the time of gateway restart, but historical session checkpoint indexes are not reconstructed.

Evidence:

• Session 1480186e (active during restart): ✅ Shows checkpoints in UI
• Session 55ba12f0 (10 checkpoint files on disk): ❌ Empty in UI
• Session c2a92ba0 (5 checkpoint files on disk): ❌ Empty in UI
• Session dec7ece9 (3 checkpoint files on disk): ❌ Empty in UI
• Total: 23 checkpoint .jsonl files exist on disk across 5 sessions, but only 1 session's checkpoints are visible in the UI

Possible root cause: Gateway startup does not re-index checkpoint files for inactive/historical sessions. The checkpoint-to-session mapping may only be populated when a compaction event fires during an active session, and is not persisted or rebuilt from the filesystem on restart.

Impact and severity

No response

Additional information

No response

extent analysis

TL;DR

The issue can be resolved by re-indexing checkpoint files for inactive/historical sessions, possibly by implementing a mechanism to rebuild the checkpoint index from the filesystem on gateway restart.

Guidance

  • Verify that the checkpoint files are correctly named and formatted, following the {sessionId}.checkpoint.{checkpointId}.jsonl convention, to ensure they can be properly indexed.
  • Investigate the gateway's startup process to determine why the checkpoint index is only built for active sessions and not for historical sessions.
  • Consider implementing a mechanism to rebuild the checkpoint index from the filesystem on gateway restart, to ensure that all sessions' checkpoints are correctly displayed in the Web UI.
  • Test the proposed solution by restarting the gateway and verifying that all sessions' checkpoints are correctly displayed in the Web UI.

Example

No code example is provided as the issue does not specify the exact implementation details of the gateway or the Web UI.

Notes

The provided information suggests that the issue is related to the gateway's startup process and the way it handles checkpoint indexing. However, without more detailed information about the gateway's implementation, it is difficult to provide a more specific solution.

Recommendation

Apply a workaround to re-index checkpoint files for inactive/historical sessions, such as implementing a script to rebuild the checkpoint index from the filesystem on gateway restart, until a more permanent solution can be implemented.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix [Bug]: Web UI "Show Checkpoints" in session list shows empty despite checkpoint files existing on disk [1 pull requests, 1 participants]