There's a moment when you're deep into an agentic coding session and you have to leave your desk (time to catch my train!). Normally that means the session just sits there, waiting, until you're back at your keyboard. Both Claude Code and GitHub Copilot CLI recently shipped a feature that fixes exactly this: you keep the session running locally, but you can check in, approve tool calls, and keep steering it from your phone or any browser.
Let's look at how each one works.
Claude Code: /remote-control
In Claude Code, you enable this with a slash command inside a running session:
/remote-control
or the short form:
/rc
You can also start a session already remote-enabled:
claude --remote-control
or run a dedicated server process that can host multiple concurrent sessions:
claude remote-control
Whichever way you start it, Claude Code prints a session URL (and lets you press spacebar to show a QR code) that connects to claude.ai/code or the Claude app. From there you get a live view of the terminal: connection status, tool activity, and the ability to send messages back in.
Remark: the architecture is worth understanding. Your local Claude Code process makes an outbound HTTPS connection to the Anthropic API and polls it for instructions — it never opens an inbound port. Your phone doesn't execute anything or touch your files directly; it just renders the conversation and sends prompts. Execution, file access, and MCP servers all stay on your machine.
A few practical details:
- The local process has to keep running. Close the terminal or quit VS Code, and the session ends.
- If your machine loses network for more than roughly 10 minutes, the session times out and you'll need to run
claude remote-controlagain. - Some commands, like
/pluginor/resume, are local-only — they won't work from a remote client. - Server mode has a nice trick:
claude remote-control --spawn worktreegives each on-demand session its own git worktree, so parallel sessions don't fight over the same files. You switch between them in the Claude app like chat threads, with push notifications when one finishes or needs a decision.
GitHub Copilot CLI: /remote
Copilot CLI has the same idea, just named differently. Inside a running session:
/remote on
Or start the session already remote-enabled:
copilot --remote
Or make it the default for every interactive session by adding this to ~/.copilot/settings.json:
{
"remoteSessions": true
}
(Override that per session with --no-remote.)
Once enabled, Copilot CLI prints a link to the session on GitHub.com.
Sign in with the same account that started the session and you get a live, steerable view, not just read-only output.
You can also find it without the link: GitHub.com → Copilot icon → "Agent sessions," or the Agents tab of the repo you started the session in.
Remark: don't confuse this with regular session syncing. Copilot CLI sessions sync to your GitHub account by default and show up as view-only on GitHub.com and GitHub Mobile but you can't steer those. Only sessions with remote control explicitly enabled are steerable.
I asked a question on the Github website:
And the agent starts to work on it locally:
On mobile, it's the same experience via GitHub Mobile: tap the Copilot button, find your session under "Agent sessions." For quick access, run /remote in the session to redisplay the details, then press Ctrl+E to toggle a QR code.
One thing Copilot CLI has that I like: /keep-alive. Your laptop going to sleep kills the session just like it would with Claude Code, so you can tell it explicitly to stay awake:
/keep-alive on # never sleep while the session is active
/keep-alive busy # only stay awake while Copilot is actively working
/keep-alive 8h # stay awake for a fixed duration
And if you resume a session later with copilot --continue or copilot --resume, remote control is automatically re-enabled. You don't need to pass --remote again.
Side by side
Both tools solve the same problem the same way: execution stays local, only the conversation travels.
- Enable inline:
/remote-control(or/rc) in Claude Code,/remote onin Copilot CLI. - Enable at launch:
--remote-controlvs.--remote. - Always-on default: a settings toggle in Claude Code's
/config, or"remoteSessions": truein Copilot CLI'ssettings.json. - Remote client:
claude.ai/codeor the Claude app for Claude Code; GitHub.com or GitHub Mobile for Copilot CLI. - Awake-keeping: Claude Code relies on you keeping a terminal session alive; Copilot CLI gives you a built-in
/keep-alivecommand with fine-grained durations. - Parallel sessions: Claude Code's server mode with git worktrees per session; Copilot CLI doesn't need a dedicated server mode since every session syncs to your GitHub account by default.
Which one you reach for probably just comes down to which tool you're already running. If you're bouncing between both like I do, it's worth knowing that both tools have this functionality built-in.
That's it! Two different agent harnesses, same remote control idea.
More information
- Claude Code Remote Control docs: https://code.claude.com/docs/en/remote-control
- GitHub Copilot CLI - Steering a session from another device: https://docs.github.com/en/copilot/how-tos/copilot-cli/use-copilot-cli/steer-remotely
- GitHub Copilot CLI - About remote control (concepts): https://docs.github.com/en/copilot/concepts/agents/copilot-cli/about-remote-control