BOTBUS / BLOG

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.

Short answer

A session you start from your phone with BotBus 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:

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:

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

Downloads for all three are on the download section.

Limits and caveats

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.

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.

← All posts