← ClaudeAtlas

claude-desktop-sessionslisted

Use when Claude Code sessions started in the terminal CLI don't appear in the Claude Desktop app's Code tab, when you want to hand a running CLI session to Desktop (and reach it from the phone via Remote Control), or when asked to "import/migrate my CLI sessions into the desktop app". Registers existing sessions in Desktop's sidebar by writing its per-session registry files, which point at the transcript store both apps already share — no transcript is copied or modified. Lists candidates numbered so you can import a chosen subset.
jajupmochi/agent-harness · ★ 1 · AI & Automation · score 77
Install: claude install-skill jajupmochi/agent-harness
# claude-desktop-sessions Surface terminal-CLI Claude Code sessions in the **Claude Desktop** app's **Code** tab, and hand a running session off to Desktop (which also makes it reachable from the phone through Remote Control). ## Why the sessions are missing (the root cause) Desktop and the CLI keep **separate session lists** but **share one transcript store**. The official docs say it plainly: coming from the CLI, "each maintains separate session history" while sharing configuration and `CLAUDE.md`. So a session you started in the terminal is never listed by Desktop, even though Desktop can read its transcript. Two facts, both verified against Desktop 1.24012.0 (bundled Claude Code 2.1.215) on Linux: 1. **Shared transcript store.** Both write `~/.claude/projects/<encoded-cwd>/<cliSessionId>.jsonl`. Desktop's bundle joins `claudeConfigDir` (default `~/.claude`) with `projects` and names files `${cliSessionId}.jsonl` — identical to the CLI. So the transcript never needs to move. 2. **Separate sidebar registry.** Desktop's Code sidebar is driven by one small JSON file per session at `~/.config/Claude/claude-code-sessions/<accountId>/<workspaceId>/local_<uuid>.json`. That file is the only thing the CLI does not create — this skill creates it. The obvious built-in path, the in-session `/desktop` command, is **compiled off in current builds**: its gate function returns a hard `false`, so the command is hidden for everyone regardless of account. Writing the regist