Give sessions a stable short id shown across desktop + CLI, and let claude --resume accept an id prefix

Open 💬 0 comments Opened Jul 15, 2026 by ttfoley

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

Problem

Sessions have no stable, human-usable identifier that is consistent across surfaces. The
desktop app (Home and Code/Dispatch) shows an auto-generated friendly name; the CLI
identifies sessions by full uuid, a summary line, or an interactive picker. These do not
match each other. A session I dispatch from the desktop app shows a display name that
appears nowhere in claude --resume and matches no on-disk filename, so there is no reliable
way to correlate "this session in the app" with "this session in the terminal."

This is painful in the common case where multiple sessions run from the same working
directory: claude -c (most-recent) is ambiguous, and claude --resume only offers
uuids/summaries I have to eyeball against content and timestamps. The one label the app gives
me — the dispatch name — is useless for this because it doesn't cross the surface boundary.

Repro

Dispatch a code session to a device from the desktop app (it runs on the laptop and, in my
case, writes to ~/.claude/projects/<dir>/<uuid>.jsonl and is resumable from the CLI).
Note the friendly name shown in the app (e.g. daily-7-15).
On the laptop, run cd <project> && claude --resume.
The picker shows summaries/uuids — none of them is daily-7-15. There is no way to pick
that session by the name the app gave it.

Related

#44063 — Resume Any Claude Session in the CLI (adjacent; the cross-surface resume half)
#44607 — No way to access session ID from within a running session (closed; the id-exposure
half)
#37713 — Dispatch sessions isolated from Projects (contested; FWIW my dispatched session
was resumable via the shared ~/.claude/projects store)
#56172 — Desktop history blank when missing cliSessionId (the id-correlation plumbing)

Proposed Solution

Proposal

Derive a stable short id from the session uuid (git short-hash style) and display it in
every surface — desktop Home, desktop Code/Dispatch, and the CLI — alongside the
friendly name, not instead of it (e.g. daily-7-15 · a3f9c2).
Teach claude --resume to accept an unambiguous id prefix, so claude --resume a3f9c2
resumes the matching session directly, no picker.
Handle prefix collisions the way git already does: extend the prefix until unambiguous
within the project.

Why this approach

The short id needs no cross-surface synchronization — it's derived from data every
surface already has (the uuid / transcript filename), so it is identical everywhere by
construction. The current auto-generated display names are the opposite: they require sync,
don't have it, and therefore don't line up. The usual "don't expose ids in a UI" objection is
backwards here — the "clean" alternative (one canonical name synced across surfaces) requires
exactly the sync that doesn't exist today, so the short id is the robust option given how
these surfaces are currently stitched together.

Related

#44063 — Resume Any Claude Session in the CLI (adjacent; the cross-surface resume half)
#44607 — No way to access session ID from within a running session (closed; the id-exposure
half)
#37713 — Dispatch sessions isolated from Projects (contested; FWIW my dispatched session
was resumable via the shared ~/.claude/projects store)
#56172 — Desktop history blank when missing cliSessionId (the id-correlation plumbing)

Alternative Solutions

_No response_

Priority

Critical - Blocking my work

Feature Category

CLI commands and flags

Use Case Example

_No response_

Additional Context

_No response_

View original on GitHub ↗