TL;DR To close the laptop mid-change, open the session menu in Desktop, pick Open in > Cloud and read the dialog: it lists the uncommitted changes and unpushed commits that come along. In the terminal, run
/remote-controland then/teleport> Continue this session in the cloud, but push first: the cloud starts from your branch's last push.
A local Claude Code session can now carry on in the cloud, and the two ways to send it don't take the same thing. Desktop's Open in > Cloud moves the project as you left it, uncommitted changes and unpushed commits included. The terminal's /teleport, since v2.1.314, also sends sessions to the cloud, but the cloud session starts from what your remote has: whatever you haven't pushed stays on your machine.
The official page for cloud sessions still says "From the CLI, session handoff is one-way", and Google's AI overview for this search repeats it. In the v2.1.314 binary, /teleport is now described as "Send this session to the cloud, or resume one from claude.ai".
The two paths, side by side
| Desktop: Open in > Cloud | Terminal: /teleport |
|
|---|---|---|
| Uncommitted changes | Come along when the dialog says so | Stay on your machine |
| Unpushed commits | Come along when the dialog says so | Stay on your machine |
| Where the cloud starts | Your project as you left it | Your branch as it was last pushed |
| Conversation | Carried over as a summary | The same session you already see on claude.ai |
| Prerequisite | A local session (not SSH, not WSL) | /remote-control connected |
| What it warns you about | Whether files move and whether the local session is archived | What stays behind, item by item |
The difference that bites is in the first two rows. Trust Desktop's promise from the terminal and you open the cloud session with your last two hours of work missing.
From Desktop
1. Open the session menu
The caret next to the session title, or the session's row in the sidebar. Choose Open in > Cloud.
2. Read the dialog before confirming
The Move this session to the cloud dialog lists what comes along. In the one Anthropic showed on October 17 it was 4 uncommitted changes and 2 unpushed commits. The docs add that it also states whether your files move at all and whether the local session gets archived once the cloud one is ready. If it says the files don't move, commit and push before you confirm.
3. Continue in cloud
The session reappears in the sidebar under Working, with a cloud icon. From there it keeps going with the laptop closed, and you follow it from claude.ai or your phone.
What doesn't come across whole is the conversation: it arrives as a summary. If you were relying on an exact detail from two hours ago, restate it in your first message.
From the terminal
1. Push what you want in the cloud
git push -u origin HEAD
This is the step that matters. The cloud session clones your branch from GitHub; it doesn't read your checkout.
2. Connect the session to Remote Control
/remote-control
Without it, the Continue this session in the cloud option shows up disabled with Not connected · /remote-control. Remote Control is what turns your local session into one claude.ai already knows, and it's that session that moves.
3. Send it
/teleport
It opens a two-option menu: Continue this session in the cloud and Resume a session from cloud. The second is the old /teleport, the one that pulls a cloud session down into your terminal. The alias /tp works the same.
If you have something unpushed, before moving it asks you this (text from the v2.1.314 binary, branch and counts illustrative):
Continue this session in the cloud?
Some changes won't come with you. The cloud session starts from feat/login as it was last pushed.
Staying on this computer: 2 unpushed commits and uncommitted changes.
Cancel
❯ Continue in the cloud
Cancel gets you out to push without losing anything. Continue in the cloud goes ahead and leaves those changes on your disk, untouched.
The cases that change the outcome
- The branch was never pushed. The warning changes:
feat/login isn't on the remote yet. The cloud session starts from the default branch, main, instead.andStaying on this computer: your work on feat/login.The cloud session doesn't even start on your branch. - You're mid rebase, merge, cherry-pick, revert or bisect. It shows up in the list as
a rebase in progress, and it stays local as well. - It can't read your git state (submodules, for example). It warns you that it starts from the branch as it was last pushed, or from the default branch if it isn't on the remote.
- Your Remote Control link. Once moved it prints
Session now in the cloud:with the URL. If Remote Control can, it opens a new one so you keep steering from here or from your phone; if not, it tells you/remote-control is no longer activeand you start it again.
The way back
Going the other direction is still the same /teleport, option Resume a session from cloud, and it has its own rules: clean working tree, same repository and branch pushed. They're in teleport, the command that looks like Remote Control. If what you want is to launch a new cloud task from the terminal instead of moving the current one, that's claude --cloud, which I cover in cloud sessions.
Official docs: Use Claude Code in the cloud and Continue in another surface
Requirements
- Pro, Max or Team plan, or Enterprise with cloud sessions; claude.ai sign-in, not an API key
- Repository on GitHub with access from your cloud environment
- Terminal: Claude Code v2.1.314 or later and
/remote-controlavailable in your organization