# Continue a phone-started Claude Code session on your Mac

> Started a Claude Code or Codex session from your phone? Why it is missing on your Mac, and how to resume it in Terminal or the Claude desktop app.

Canonical: https://botbus.io/en/blog/resume-phone-session-on-desktop  
Published: 2026-11-01

## Short answer

A session you start from your phone with [BotBus](https://botbus.io/en/) is an ordinary agent session on your computer, so you can pick it up at your desk. On the Mac, hover over an agent under **Local Agents** in the BotBus menu bar app, find the session under **Started from Phone**, and click **Resume**. BotBus opens Terminal in the session's working directory and runs the agent's own resume command, such as `claude --resume <id>` or `codex resume <id>`. Claude Code sessions can also go to the Claude desktop app instead. The one thing you have to wait for: while the phone's current turn is still running, or waiting on your approval or reply, resuming is disabled, because two processes writing to one session would fork its history.

## Why the session seems to be missing

A common first experience: you kick off a Claude Code task from your phone on the train, sit down at your Mac, open the Claude desktop app, and the session isn't in the sidebar. Typing `claude --resume` in a random directory doesn't obviously show it either.

That comes down to how phone tasks run. When you start a task from your phone, BotBus launches the agent headlessly on your computer: `claude -p` for Claude Code, a long-running `codex app-server` for Codex, `hermes chat -q` for Hermes, and so on. The session is stored in the agent's own data, next to the sessions you start by hand. Nothing gets copied to the phone and back.

Desktop front ends don't always list those headless sessions. The Claude desktop app's sidebar, its `/resume` list, and **Import Claude Code CLI Sessions…** all skip sessions created by `claude -p` (their transcript says `entrypoint: sdk-cli`). The session isn't lost; the desktop app just doesn't pick it up on its own.

So the real question isn't how to move a session from the phone to the computer. It's how to find it on the computer and attach an interactive client to it.

## Doing it by hand

You can do this without BotBus:

- **Claude Code**: `cd` into the project and run `claude --resume` to pick from a list, or `claude --resume <session-id>` if you know the id. Claude Code looks up sessions by the current directory, so the wrong directory means no match.
- **Codex**: `codex resume` lists sessions you can continue; `codex resume <id>` jumps straight in.
- **Other agents**: check their docs, for example `--resume` in Hermes or `--session` in Pi.

The friction is that you need the session id and the right working directory. If the phone started the session in a git worktree, that directory isn't even the project root. BotBus keeps track of which sessions came from your phone, where each one lives, and which command resumes it.

## On a Mac: click Resume in the menu bar

This is the Mac menu bar app:

1. **Open BotBus from the menu bar** and hover over (or click) an agent under **Local Agents**. A detail panel opens beside it, like a submenu.
2. **Look under Started from Phone.** It lists up to the 30 most recent sessions started from your phone, with a count for any beyond that.
3. **Click Resume next to a session.** BotBus opens Terminal, changes into the session's real working directory (including a worktree, if that's where it ran), and runs:
   - Claude Code: `claude --resume <id>`
   - Codex: `codex resume <id>`
   - Hermes: `hermes --resume <id>`
   - Pi: `pi --session <session file>`
   - OpenClaw: `openclaw tui --session <key>`
   - OpenCode: `opencode --session <id>`
4. **Keep going in Terminal.** When the agent exits, the window stays open on a login shell in the project directory, handy for a quick `git diff` or test run.

For Hermes, Pi, OpenClaw and OpenCode, BotBus puts the CLI's own directory first on `PATH` for that one command, so it runs on the same Node or Python the phone tasks use instead of an old Node from nvm. Terminal is opened through a one-off script, so BotBus doesn't need Automation permission.

BotBus remembers which sessions came from your phone across restarts. It started recording that with the version that added this feature, so older phone sessions aren't listed; resume those by hand as above.

## Claude Code sessions: hand off to the Claude desktop app

If you live in the Claude desktop app rather than Terminal, the Mac app has a second route.

BotBus checks which app actually handles `claude://` links. With a recent enough Claude desktop app, **Resume** on a Claude session becomes a menu with **Resume in Terminal** and **Resume in the Claude Desktop App**. Pick the second, and the desktop app imports the session with its full transcript into its sidebar and switches to it. From then on you continue there, and the session stays in its list. If the desktop app is too old, the button opens Terminal as before and suggests updating.

Under the hood this uses the desktop app's resume link, `claude://resume?session=<id>`. BotBus doesn't write into the desktop app's private folders; the app imports the session itself. That link isn't in Claude's documentation, so to be upfront: if the desktop app changes it, only the Terminal route will remain. If the import fails, for example because you're signed out, the desktop app tells you.

## Or let it happen automatically

In the Mac app's Claude Code settings there's **Automatically add sessions started from your phone to the Claude desktop app**, on by default. Once a phone-started Claude session finishes its turn, BotBus hands it to the desktop app.

Each handoff makes the desktop app show its window and switch to that session, so BotBus waits for a moment that won't interrupt you:

- right after you bring the Claude desktop app to the front or launch it, or
- when the computer has been idle for over a minute and no other app is full screen (video, a presentation, full-screen sharing).

Otherwise it posts a **New session from your phone** notification. Click it to hand the session over right away; ignore it and BotBus waits for one of the moments above, then withdraws the notification. BotBus never launches the desktop app for you.

Only sessions started in the last 24 hours, after the setting was turned on, are handed over, so a backlog doesn't land all at once. Each session is handed over once, which means anything you archive in the desktop app stays archived. Sessions you already resumed by hand from the menu are skipped.

Session names come along. When the phone starts a Claude session, BotBus names it after the first prompt (up to 80 characters); the desktop app uses that as the title, and the terminal's `/resume` list shows it too. Older sessions, and new sessions forked during a follow-up, have no name and show as "Untitled".

## Windows and Linux

- **Windows**: in the tray icon's right-click menu, each agent under **Local Agents** is a submenu that lists sessions started from your phone. Click one to resume it with the agent's command in a new console window; running sessions are greyed out. There's no Claude desktop app handoff on Windows.
- **Linux**: there's no equivalent entry yet. Use the agent's own resume command in the session's directory, as in "Doing it by hand".

Downloads for all three are on the [download section](https://botbus.io/en/#download).

## Limits and caveats

- **Not while the turn is busy.** If the phone's turn is still running, or waiting for an approval or an answer, Resume is disabled. BotBus also re-checks at the moment you click (the phone may have just sent a follow-up while the menu was open) and explains if it can't resume. Finish on the phone, or [stop the turn](https://botbus.io/en/blog/stop-ai-agent-remotely), first.
- **One side at a time.** While the agent is running in Terminal, sending a follow-up to the same session from your phone means two processes writing one transcript. Finish on the computer and exit the agent before going back to the phone.
- **Not every agent gets a button.** DeepSeek Harness and other ACP agents have no verified resume command, so there's no button. Phone-started DeepSeek Harness sessions show up in the `dsh web` session list.
- **The Codex desktop app is a separate story.** This post is about resuming Codex in Terminal. To share one session between the Codex desktop app and your phone, quit Codex and relaunch it with **Launch Codex** on the Codex row in the BotBus menu bar. For following up from the phone in general, see [continuing a session from your phone](https://botbus.io/en/blog/continue-agent-session-on-phone).
- **The desktop app route relies on an undocumented link** and could stop working after a desktop app update.
- **Your computer has to be on.** Sessions live on the computer. Content between phone and computer is end-to-end encrypted, but the server still sees device IDs, online status, update times and data sizes; see [end-to-end encryption](https://botbus.io/en/docs/security).

## FAQ

### Can a session started on my phone only be continued on my phone?

No. It lives in the agent's data on your computer, like any session you start there. Resume it at your desk with the agent's resume command, then go back to following up from your phone later, as long as both sides aren't running at once.

### Why doesn't the Claude desktop app show my phone sessions?

Its sidebar, `/resume` list and CLI import all skip sessions created by `claude -p`, which is how phone tasks run. The BotBus Mac app can hand a session over through the resume link, automatically at a quiet moment or manually with **Resume in the Claude Desktop App**.

### Why is Resume greyed out?

The session's current turn is still running, or it's waiting for you to approve or answer on your phone. Once the turn stops, or you stop it from the phone, the button works.

### Which directory does a worktree session resume in?

The worktree. BotBus changes into the session's actual working directory before running the resume command. Worktree sessions are covered in [starting a task from your phone](https://botbus.io/en/blog/start-coding-task-from-phone).

### Why aren't my older phone sessions listed?

BotBus started recording phone-started sessions with the version that added this feature. Older ones are still in the agent's data; find them with `claude --resume` or `codex resume` in the project directory. Install the latest BotBus and new sessions will show up in the list.
