Docs · Claude Desktop
Bring your claude.ai data over
Desktop keeps your conversations on this machine, so your claude.ai history does not come with you. Three steps: an extension makes a file, Desktop imports it, and one command handles the scheduled tasks. Set Desktop up first at Set up Claude Desktop.
Why you need an extension
Try Desktop's own Sign in to claude.ai button first. If your admin has turned on data export, it works and you can skip this page.
Most Team plans do not have that setting, so the button fails. Claude AI Export makes the same file from your own account instead. It runs in your browser and saves to Downloads. Because it can only talk to claude.ai, your conversations stay on your machine.
Add Claude AI Export to Chrome
Open source, no runtime dependencies, reproducible from source: the code is on GitHub.
1. Make the archive
Click the extension's icon. It opens claude.ai for you and waits if you need to sign in.
Choose “Everything” if you are moving accounts. The default is the last 30 days. If your history is older than that, you get a file that looks fine but is nearly empty: 600 KB instead of 25 MB. The page tells you how many of your chats it found. Check that number before you import.
A big history takes a few minutes. You can close the tab; it keeps running.
When it finishes, claude-export.zip is in your Downloads folder.
2. Import it
This part is Desktop's own importer. Open Settings → Import & export.
Press Import… and work through the three steps.
1. Chats. Press Choose file… and pick your
claude-export.zip.
2. Cowork & Code. Skip this unless you had an earlier Claude app on this machine.
3. Review. It shows a count. Check it matches the export, then press Import.
Your chats appear in the sidebar and projects become Spaces. The first time you write in an imported chat it asks Resume imported session? Say Trust and resume. It asks once per chat.
Importing twice is safe, but it will not update anything. You never get duplicates, and you never get a fresher copy of a chat that is already there: those are skipped. Run it again and you pick up new chats only. To replace a bad import, delete it first.
3. Scheduled tasks
Your scheduled tasks are in the file, but the importer ignores them. It only reads chats, projects and attachments. This is not something the export can fix.
Desktop keeps its tasks as files on your Mac, so one command writes them:
curl -fsSL https://raw.githubusercontent.com/selan-ai/claude-ai-export/main/scripts/import.sh | bash
It finds your newest export, writes the tasks, then opens Claude Desktop with the file already selected. You do not need to install anything. It backs up anything it changes and prints the command to undo it.
Afterwards the tasks are under Scheduled in the sidebar.
Times are stored differently. claude.ai keeps task times in UTC; Desktop runs them in your local time. A task set for 08:00 in Vilnius is stored as 05:00, so copying it over unchanged would wake you at five. The script converts each one and prints what it changed.
What comes across
| What | Where it lands |
|---|---|
| Chats | The sidebar, with their full history, including branches from edited or regenerated messages. |
| Projects | Spaces, with their instructions and documents. |
| Chat ↔ project | Kept. A chat that was in a project lands in the matching Space. |
| Attachments | Restored with the message they belonged to. |
| Scheduled tasks | Written by the command in step 3. |
| Memory | Does not come across: claude.ai cannot export it. |
If it did not work
No Import & export in Settings. Desktop is signed in to claude.ai instead of your company's gateway. Start at Set up Claude Desktop.
Far fewer chats than expected. Check the date range you picked. Choose “Everything” and export again.
Attachments are missing. Open skipped.json inside the
file. Anything that could not be downloaded is listed there, with the reason.
The importer shows zero. The problem is the export, not Desktop. Export again and check the counts before importing.
A task runs at the wrong time. See the note above. The script prints every time it converts, so its output shows what it set.