[BUG/FEATURE] Partial compaction ('Summarize up to here') is unusable from the desktop app: no UI for it, CLI-created summaries are ignored by the app, and the app's Rewind dialog is restore-only

Status Open
Reported on v2.1.220
Maintainer reply None cached
Activity 0 comments · opened Aug 2, 2026

Environment

  • Claude Code CLI: 2.1.220, Windows 11 Pro (10.0.26200)
  • Claude desktop app: current auto-updated build as of 2026-08-01
  • Model: Opus 5, 1M context window
  • Both clients operating on the same project sessions under ~/.claude/projects/<sanitized-cwd>/<session-id>.jsonl

Use case

Long-running working sessions (~900k tokens). The goal is exactly what /rewind"Summarize up to here" provides in the CLI: compress the old part of the conversation, keep the recent ~450k verbatim, and stay in that zone — instead of a full /compact that replaces everything with a summary. The user works in the desktop app.

What happens (three independent problems, all reproduced 2026-08-01)

1. The desktop app has no summarize option

Esc Esc in the app opens a "Rewind — Restore the conversation to a previous message" dialog: a message list only. Selecting a message immediately restores (truncates) the conversation to that point by spawning a new session file — there is no action submenu, no "Summarize up to here" / "Summarize from here", and no confirmation step. (Screenshot available. In our test, the restore spawned a new 6.6 MB truncated session file from a 12.7 MB original.)

The CLI's rewind menu offers Restore and both Summarize options, per the checkpointing docs. The app exposes only the destructive half.

2. A CLI trim does not persist unless a turn runs afterward

Reproduced twice: perform "Summarize up to here" in the CLI (context drops 891k → 449k on the statusline), then /exit immediately. Nothing is written to the session transcript — no summary entry, no marker; the next resume (CLI or app) reopens at full size. The summarized state only journals once a subsequent turn runs. There is no warning that exiting will discard the trim.

3. Even when persisted, the app ignores the summarize state — and undoes it

With the trim persisted (fresh ~452k usage entry in the .jsonl), the desktop app opens the conversation displaying the trimmed number (453.6k / 45% in the context panel). But the app's first turn reassembles the full untrimmed history — the very next response comes back at ~898k (90%) — and that turn re-anchors the conversation past the summarize state, so afterwards even the CLI reopens at full size. One message typed in the app silently destroys the trim for both clients.

Screenshots of both panel states (453.6k on open → 898.2k after one message) are available.

Impact

  • Desktop-app users have no access to partial compaction at all: their only options are full /compact or unprepared auto-compact.
  • Users who perform the trim in the CLI lose it silently — either by exiting too early (problem 2) or by ever touching the conversation from the app again (problem 3).
  • The app's Esc Esc dialog looks like the CLI's rewind menu but is restore-only and acts immediately, which invites accidental truncation (this happened to us; recovery required the on-disk transcript).

Related issues

  • #48955 — Rewind in Desktop breaks for CLI-origin messages (dual source of truth) — closed, not planned
  • #43755 — Per-prompt rewind/undo in the Desktop app — open
  • #28716 — "Summarize before here" — closed, not planned
  • #47987, #42293 — summarize-option bugs in the CLI rewind menu

Requests, in order of value

  1. Add the Summarize options to the desktop app's Rewind dialog. The dialog and message list already exist; the CLI's action submenu (Restore / Summarize up to here / Summarize from here / cancel) is the missing piece — plus a confirmation step before the destructive restore.
  2. Make context assembly honor persisted summarize state regardless of which client created it (single source of truth for the conversation's compacted form).
  3. Persist the summarize operation immediately when it is performed, not on the next turn — or warn on exit that an unsaved trim will be discarded.

Transcripts (session .jsonl files), byte-level timelines, and screenshots for every claim above are available on request.

View original on GitHub ↗