- Published on
Migrating from Claude Code CLI to Claude Desktop
- Authors

- Name
- DeepHorus
A developer has released claude-profiles, a CLI and Raycast extension that lets users run multiple isolated Claude Desktop accounts side by side and migrate Claude Code CLI session history between them. Shared on Hacker News as a Show HN, it targets heavy Claude users juggling personal, work, and experimental identities. The CLI supports macOS and Linux; the Raycast extension is macOS-only.
Claude Code CLI stores every transcript on disk in a shared store, but Claude Desktop builds its visible session list from a per-profile index. That mismatch leaves a new profile empty even though all historical transcripts remain available. The tool exists largely to build and move that index safely.
Installation is straightforward: pip install -e . after cloning. Users create a profile with claude-profiles profile add "Personal", then sign in to establish the account/org directory. The workflow includes backup --all, list --profile, import --to personal --limit 5, and undo --last for rollbacks. Every writing command takes a rollback copy and records a run manifest under $XDG_STATE_HOME/claude-profiles/runs/.
Import is deliberately defensive. It never opens a source transcript for writing, records SHA-256 hashes before and after each import, and fails if a file moves. It refuses to import subagent sidechains as sessions, resets per-session permission grants, and verifies that no working-directory field still names the template session's folder. A --remap flag publishes a rewritten copy under a new session ID while keeping the original addressable.
Each profile is a fully separate Claude account with no shared memory, chat history, or context. This makes switching faster but does not merge accounts. One caveat: Claude Desktop disables local pairing when the userData path is not the default, so tool-launched profiles lose that feature; the default profile is unaffected.
Early response on Hacker News has centered on the careful safety design and forensic tooling. The repository includes tools/ scripts that document undocumented formats; re-running them after a Claude Desktop update reveals whether a finding still holds. Commenters also appreciated the MIT license and the Raycast integration.
The index schema is undocumented and changes between app versions, so the author advises re-running the forensic scripts after any update before trusting a large migration. The project is MIT-licensed, inviting community contributions.
The tool reflects a broader trend of power users building their own infrastructure around AI assistants, treating chat history as portable data rather than vendor lock-in. As desktop AI apps mature, such tools may become essential for privacy, experimentation, and multi-account workflows.