[FEATURE] /resume should sort by last conversation activity, not last-touched — and expose a persisted sort preference

Resolved 💬 2 comments Opened Jul 8, 2026 by maximhoffman Closed Jul 12, 2026

[FEATURE] /resume should sort by last conversation activity, not by last-touched — and expose a persisted sort preference

Problem

The /resume picker orders sessions by "last touched," and almost anything touches a session: opening it, a cancelled /resume, a background-agent wakeup, a scheduled tick, a hook firing, a /rename. Any of these updates the session's timestamp and floats it to the top of the list — even though no actual work happened.

The result: the top of the list does not reflect where you last did real work. A session you only glanced at (and immediately cancelled out of) outranks a session with important recent conversation. And when many sessions get touched by background activity, the ordering becomes noise — you can't rely on "most recent first" to mean "most recently worked in."

There is also no way to change the sort order in the CLI.

Evidence

Concrete example from one of my sessions. Its last recorded events are a cancelled resume and a snapshot — no conversation turn at all:

{"type":"system","subtype":"local_command","content":"<command-name>/resume</command-name> ...","timestamp":"2026-07-08T09:59:30.770Z"}
{"type":"system","subtype":"local_command","content":"<local-command-stdout>Resume cancelled</local-command-stdout>","timestamp":"2026-07-08T09:59:30.770Z"}
{"type":"file-history-snapshot", ...}

That 09:59:30 no-op timestamp is what floats the session in the picker — not the time of the last real message. Multiply this across background wakeups and cancelled resumes and the "recency" order stops meaning anything.

Proposed behavior

  1. **Sort by last conversation activity — the timestamp of the last genuine human or assistant turn — not by last file-touch. No-op events (cancelled /resume, background wakeup, scheduled tick, hook, /rename, snapshot writes) must not** re-float a session.
  2. Expose a sort preference that persists across launches: e.g. last-activity (default) / last-opened / alphabetical / pinned-first. (Persistence is itself broken on desktop today — see #48242 — so please wire persistence, not just an ephemeral toggle.)
  3. Nice-to-have: show each row's last-activity time and a one-line snippet of the last real turn, so the list is scannable by content, not just title.

Why it matters

Users pick a session by "where was I actually working," not "what did I last click." When background agents, scheduled loops, and cancelled resumes all bump timestamps, recency-sort actively misleads — the session you want sinks while sessions you never touched float up.

Related

  • #48242 — sidebar sort preference not persisted (desktop). Persistence half of this request.
  • #46810 — manual reordering of sessions (closed). Adjacent, different approach.
  • The /resume "missing session" family (#74744, #65361, #57203) — separate defects, but they compound the same underlying pain: the picker is an unreliable way to get back to a conversation.

Environment

  • Claude Code 2.1.204, macOS (Apple Silicon)

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗