Setup guide

Start on your Mac, continue anywhere

Your Mac stays on and holds all the work. Your laptop and phone are windows onto it. Most of this is one setting; the rest is making sure the Mac is still awake, online, and running when you come back to it.

Setup an hour or two Needs an always-on Mac Updated August 2026
The always-on Mac holds every session; laptop and phone reach it A desktop Mac on the left is labelled as the always-on machine where sessions live. Activity flows continuously from it out to a laptop and a phone on the right. ALWAYS ON Your desktop Mac the app, your files, every session Laptop the same sessions, anywhere Phone the Claude app
One machine does the work. The laptop and phone just look at it.
Reach

Solved by the setting

Any device can see and drive a running session. Nothing to install, no VPN, no file sync, no scripts.

Persistence

Solved by the Mac staying up

A session lives only while its process is running and the Mac is awake and online. Quit the app, or lose the network for about ten minutes, and it ends.

Before you start

What you need in hand

01

Set up the primary Mac

This machine does everything. It runs the app, holds your files, and keeps every session alive. The other two devices need almost nothing by comparison.

Get Claude Code running

Download the Claude desktop app from claude.ai/download, install it, and sign in. Then open the block below and follow it before continuing: it starts your first session and checks the machine.

Required: the first session, and the machine check

Open the Code tab and start a session in the Local environment, pointed at a real project folder such as ~/Projects/test, and accept the trust prompt when it appears. Claude Code comes with the app, so nothing else is needed for this step; step 02 adds one terminal command. Use Local, not Cloud, SSH, or Remote Control: those run somewhere else, and every setting below would be applied to the wrong machine. Pick a real project folder rather than your home folder, because trust is not saved for the home folder and Remote Control will not start in a folder you have not trusted.

Paste into Claude Code
This is a brand new Mac. Check whether the Xcode command line tools and git are installed, and install them if they are missing. If you hit a password prompt or a dialog you cannot dismiss, stop and tell me exactly what to click, because those are mine to do. Then confirm you can read and write a file in this folder.

Turn on Remote Control

One prompt sets it, below. Restart Claude Code afterwards, then prove it worked before going further: start a session on the Mac and open claude.ai/code in a browser. The session should be listed, with a computer icon and a green dot.

The prompt, and why valid JSON is not proof
Paste into Claude Code
Add "remoteControlAtStartup": true at the top level of my ~/.claude/settings.json. Read the file first and preserve everything already in it, then confirm the result is valid JSON and show me what you changed.

Valid JSON is not proof. A plan, an organization policy, a sign-in problem, or an untrusted folder will each leave the session local-only, and nothing on the Mac will tell you. If it is not listed, work through the troubleshooting section at the end of this page.

Keep it awake

Three changes, by hand, with your administrator password.

Prevent sleep, survive power loss, relaunch Claude
  1. Energy. Prevent automatic sleeping when the display is off, and wake for network access. Then set it to come back after a power cut: depending on your macOS version that is a switch called Start up automatically after a power failure, or a menu called Start up when power is connected where you choose After power failure or Always.
  2. Terminal. Run sudo pmset -a sleep 0 disksleep 0 womp 1 autorestart 1 and enter your password.
  3. General › Login Items & Extensions. Add Claude so the app relaunches after a restart.

Choose a security mode

Coming back by itself after a reboot costs you disk encryption. Decide deliberately, and know you can change your mind later.

The two modes, and what each costs

Secure default

Leave FileVault on and automatic login off. Everything on this page still works. The cost is that after any reboot the Mac sits at the login screen, unreachable, until someone types the password in person.

Pick this if the Mac lives anywhere you would not leave an unlocked laptop, or if your employer requires encryption.

Unattended appliance

Turn FileVault off in Privacy & Security, then set Users & Groups › Automatically log in as to your account. The Mac returns to a working desktop on its own after a power cut or an overnight update.

Only when the machine is physically secure, such as a locked office. Its disk is readable by anyone who walks away with it.

Either way, remember what is on that disk: ~/.claude stores your session transcripts in plain text, and those can contain file contents, command output, and anything a tool happened to print. An unencrypted always-on Mac is holding all of it.

If the automatic-login menu is greyed out even with FileVault off, your Mac is managed by your employer or your account signs in with an Apple Account password. Neither can be worked around here.

After a reboot

Claude reopens its own sessions on its own. Give it a moment after login, then check claude.ai/code: the sessions you care about should be listed, each with a green dot. A claude rc server from step 02 is the exception: it does not restart itself, so open Terminal in its folder and run it again. Do that within about four hours and the sessions it was serving come back where they left off; wait longer and you are starting fresh ones.

If a session has no green dot

A session listed without a dot is loaded but not registered, so your phone can see it and not drive it. Open it on the Mac and it reconnects. The same thing happens after a network outage longer than about ten minutes, which ends a session even on a machine that never slept.

Memory: 16GB minimum, 24GB better.

02

Set up the laptop

Install the Claude desktop app and sign in with the same account. That on its own is enough: the Mac’s sessions appear in the sidebar grouped by folder, and they are fully interactive, so you are typing into a session executing on the other machine.

Optional: expose the laptop’s own sessions too

The same setting works here as well. It does nothing for the Mac’s sessions; it exposes sessions hosted on the laptop, which is only useful if you sometimes start something here and want to reach it from your phone.

Optional, on the laptop
Add "remoteControlAtStartup": true at the top level of my ~/.claude/settings.json. Read the file first and preserve everything already in it, then confirm the result is valid JSON and show me what you changed.

Starting new work from here

A session you start here with the Local environment runs on the laptop, with the laptop’s files and skills, and ends when you shut down. Fine for one sitting. If the work needs the Mac’s files or skills, or you want it tomorrow from your phone, it has to start on the Mac, through a Remote Control environment.

The five steps: CLI once, each folder once, the server after every reboot
  1. On the Mac, install the terminal command. The desktop app does not put claude on your PATH, so in Terminal run curl -fsSL https://claude.ai/install.sh | bash, then open a new Terminal window and confirm claude --version answers.
  2. Trust the folder. Still in Terminal, go to the project folder you want — cd ~/Projects/test — run claude, sign in with the same account if it asks, accept the trust prompt, and quit. Once per folder you will register.
  3. Start the server. In that folder run claude rc, answer y, and leave the window open. It registers the folder as an environment and immediately opens one starter session of its own, which is expected.
  4. On the laptop: New Session › Remote Control, then pick the entry named after the Mac’s folder.
  5. Verify where you landed. Ask the new session to run hostname and pwd. It should answer with the Mac’s name and the registered folder. If it answers with the laptop’s, you picked Local by mistake.

The server hosts its sessions itself: if the claude rc window closes, or the Mac reboots, those sessions stop, and it does not come back on its own — run claude rc again in the same folder. Do that within about four hours and it picks its sessions back up where they stopped; after that you get fresh ones. If one session crashes while the server stays up, message it from any device and the server revives it. Its sessions also all share the one folder, so keep one server per project and do not point two sessions at the same files at once.

When you cannot tell which machine a session is on, and the sidebar will not tell you because it groups both by folder name, ask the session to run hostname.

There is no moving a session afterwards: work kept in a repository can be pushed and pulled across, but the conversation stays on the machine that started it.

If you use skills or plugins

You probably do not need them here. A Mac session opened from the laptop still executes on the Mac, so the files, tools, MCP servers, and skills in play are all the Mac’s. If you do want skills on both machines, never by syncing: share them with git or plugins.

How to share skills safely

Skills live in ~/.claude/skills, inside the one folder this page tells you never to sync, and that is exactly where people get caught. The laptop’s own skills only matter for sessions the laptop itself hosts.

For anything you did not write yourself, install it as a plugin from a marketplace on each machine. settings.json records which are enabled, so matching the two machines is a small edit.

For skills you wrote, keep them in a git repo and link them in. Run this once on each machine:

Paste into Claude Code on each machine
I keep my own Claude skills in a git repo. Clone it to ~/Development/my-skills, then symlink each skill folder from inside that repo into ~/.claude/skills/. Skip any name that already exists there so nothing local gets clobbered. Do not copy the files, and do not put the repo itself inside ~/.claude. Tell me what you linked and what you skipped, and ask me for the repo URL if I have not given it to you.

The real files stay outside ~/.claude and only the links live inside it. That is what keeps the never-sync rule true by construction instead of by memory. After that, git pull in the repo updates both machines at once; a brand-new skill needs its link made once.

03

Set up the phone

Almost nothing to do here, because the phone runs no sessions of its own.

  1. Install the Claude app from the App Store or Play Store.
  2. Sign in with the same account you use on the Mac.
  3. Open your Code sessions. Everything running on the Mac is listed and can be driven from the phone.
Starting a new session from the phone: on the Mac, or in the cloud

While a claude rc server from step 02 is running, the Mac appears as a device card at the top of the Code tab. Tap it, pick one of its folders, and the new session starts on the Mac, with the Mac’s files and skills, exactly as if you had started it from the laptop. No card means no server is running — the card is the server, so this works only while that Terminal window is open on the Mac.

Without the card, New Session asks you to connect GitHub and install the Claude Code app into your repositories, then runs in the cloud from a fresh clone on its own claude/session-… branch. That works fine, and the session appears on your laptop too, so you can carry on there. Just know it is not touching your Mac: anything uncommitted, or outside that repository, will not be there.

The phone is for steering rather than building: read what happened, answer a question, approve a direction, then pick it back up at a real keyboard.

04

Keep your history longer

The Mac keeps the files it needs to reopen a past session for 30 days, then deletes them. Raise that early: expired files are swept the next time Claude Code launches. And weigh it first — a year of history is a year of plaintext on that disk, against the security mode you chose in step 01.

The prompt, and what it does not cover
Paste into Claude Code on the Mac
Set "cleanupPeriodDays": 365 at the top level of my ~/.claude/settings.json so the local session files on this Mac are kept for a year instead of 30 days. Read the file first, preserve everything already in it, and confirm the result is valid JSON.

This covers the resume files on this Mac only. While Remote Control is connected, the transcript is also stored on Anthropic’s servers to keep your devices in sync, and that copy follows Anthropic’s retention policy, not this setting: on Pro and Max it is kept for 30 days, or five years if you have the model-improvement sharing setting on. So this is not a guarantee that a year-old session will still open from your phone — and turning it up does not shorten what Anthropic keeps.

05

Optional: reach the Mac’s files from the laptop

Sessions do not need this. It is for the times you want the files themselves from the laptop, or a dev server running on the Mac. Tailscale puts both machines on a private network with no ports opened to the internet.

Both Macs, by hand, with administrator approvals

On both machines, because every step needs an approval only you can give:

  1. Download Tailscale for macOS from tailscale.com/download and install it.
  2. Open it. macOS will ask you to allow a system extension, but the alert only sends you to System Settings; it does not contain the switch. Choose Open System Settings, find the network extensions list under General › Login Items & Extensions, and enable the Tailscale entry there. Then choose Allow for the VPN configuration when that appears. Both need your administrator password.
  3. Sign in from the Tailscale icon in the menu bar. Use the same Tailscale account on both machines.
  4. In the Tailscale admin console, turn on MagicDNS so machines get names instead of IP addresses, and disable key expiry for the Mac so it never quietly drops off.

Then, on the Mac only, turn on System Settings › General › Sharing › File Sharing and add just the folders you actually need. Turn on Screen Sharing in the same place if you ever want to see the Mac’s own screen from the laptop. The default is easy to leave wider than you meant. To find the Mac’s name on the network:

Paste into Claude Code on the Mac
Find the Tailscale command line tool on this Mac. It is usually inside the app bundle rather than on my PATH, so give me the full path if it isn't found directly. Then run its status command and tell me this machine's name on the tailnet.

Now connect from the laptop. In Finder choose Go › Connect to Server, enter smb:// followed by that name, and when Finder asks how to connect choose Registered User. The name and password it wants are the Mac’s own macOS account, not your Claude or Tailscale login. Then pick the folder or volume you want.

A dev server bound to 127.0.0.1 will not answer over Tailscale. Bind it to the Mac’s Tailscale address and reach it at http://<mac-name>:<port>. Binding to 0.0.0.0 also works, but that exposes it to every network the Mac is on, not just the tailnet. Tailscale also has iPhone and Android apps, but the phone does not need to be on the network. It reaches your sessions through Claude, not through the Mac.


Before you rely on it

Four things that will bite you

A closed laptop takes its sessions with it

Close the lid and anything hosted there is unreachable until it wakes; shut down and it is gone. Anything you want to pick up from another device should be started on the Mac.

Never sync the config folder

Keep ~/.claude out of Syncthing, Dropbox, and iCloud. Its session logs are append-only and its registry is keyed by process ID, so two machines writing produces conflicts and nonsense. That includes the skills folder inside it: share skills with git or plugins instead.

A restart stops sessions without losing them

An overnight OS update ends anything mid-run. The conversations survive and reopen from the sidebar where they left off, but they are not reachable from your other devices again until you do reopen them.

Nothing tells you it broke

The usual failure is discovering the Mac is unreachable at the worst moment. A daily reachability check turns that into something you fixed on Tuesday.

If it will not connect

Settings that quietly block Remote Control

On your machine

Seven environment and sign-in states each leave a session local-only, silently.

The checklist
  • ANTHROPIC_API_KEY is set. Remote Control needs a claude.ai login, not an API key. Unset it, then sign out and back in from the Claude menu in the desktop app.
  • You signed in with a long-lived token from claude setup-token or CLAUDE_CODE_OAUTH_TOKEN. Those can only make model requests. Sign out and back in properly.
  • ANTHROPIC_BASE_URL points anywhere other than api.anthropic.com, such as a gateway or proxy. Unset it.
  • You are on Bedrock, Vertex, or Foundry. Not supported. Check CLAUDE_CODE_USE_BEDROCK and CLAUDE_CODE_USE_VERTEX.
  • DISABLE_TELEMETRY, DO_NOT_TRACK, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, or DISABLE_GROWTHBOOK is set. Each one disables the check that decides whether Remote Control is available to you.
  • Any of the above can be hiding in the env block of a settings.json file, not just your shell.
  • You never accepted the trust prompt in that folder, or you started the session in your home folder, where trust is not saved. Open a real project folder and accept the prompt.

Commands like claude auth login only exist if you also installed the terminal CLI — step 02 has you do that. The desktop app does not put a claude command on your PATH. Anthropic’s own reference is at code.claude.com/docs/en/remote-control.

On Team or Enterprise

None of this applies on Pro or Max. There is no organization console on those plans, so the admin link below will tell you that you do not have access to organization settings. That is expected, and nothing needs enabling.

The organization checklist
  • Remote Control is off for the whole organization by default. An Owner turns it on at claude.ai/admin-settings/claude-code.
  • That toggle is greyed out when the organization has a data retention or compliance setting that is incompatible. It cannot be changed in the admin panel; contact Anthropic support.
  • IT can disable it per-device with disableRemoteControl in managed settings, separately from the organization toggle. The error names the setting.
  • Signing in through an enterprise Claude apps gateway blocks it too, because the session never talks to api.anthropic.com directly.
  • Trusted Devices may be on. Each browser, phone, and desktop app has to enrol once, and sign-ins older than 18 hours need a Face ID, Touch ID, Windows Hello, or passkey confirmation.
  • A personal workspace on the same email address will not show your organization’s sessions. Check which workspace each device is in.
The settingOne line, on the Mac
Minimum RAM16GB, 24GB better
By handInstalls and approvals
The ruleStart it on the Mac

Anything shown as a prompt can be pasted straight into Claude Code, which will make the change for you. Everything else needs an administrator password, a System Settings toggle, or an approval dialog that no tool can click on your behalf.