Claude Code Remote Control: Ship Code From Your Phone
How I use Claude Code remote control with the iOS app to ship code from anywhere — no SSH tunneling, no exposed ports, just a Max subscription.
I’m writing this from my couch using Claude Code remote control, a built-in feature that lets me run my terminal session from the Claude iOS app on my phone. Claude Code is running on my Mac in the other room, connected to a worktree of my portfolio site. I’m dictating instructions, watching file diffs scroll by, approving tool calls with a tap, and shipping code to production — all without touching my keyboard.
This isn’t a demo. This is how I actually work now.
How Claude Code Remote Control Works
Claude Code has a built-in feature called remote control. You type /remote-control in a running session on your Mac, and it starts listening. Then you open the Claude iOS app (or any Claude client on your Max subscription), and your phone becomes the input device for that terminal session. You talk to Claude on your phone, it executes on your machine.
That’s it. No SSH tunneling. No port forwarding. No third-party remote access tools. No new subscriptions. If you already have Claude Code running and a Max subscription, you have everything you need.
Under the hood, everything routes through Anthropic’s infrastructure. Your phone sends messages to Claude, Claude sends tool calls to your local Claude Code session. Your machine never exposes a port. Nothing is listening on your network.
Why Not Just Use OpenClaw or Similar Tools?
There are tools like OpenClaw that give you full remote access to Claude Code through a web interface. They work. But they also mean running a web server on your machine that’s accessible over the network, potentially the internet if you’re not careful with your firewall.
Big attack surface. You’re exposing a process that has shell access to your entire machine behind a web UI. If you’re running it on a home network behind NAT with no port forwarding, the risk is low. But “low risk” and “no risk” aren’t the same thing, and I’d rather not think about it.
Remote control sidesteps all of that. Your machine doesn’t listen for connections. The Claude Code process connects outbound to Anthropic’s API, same as it always does. The iOS app connects to the same API. Anthropic brokers the messages. Your machine’s network posture doesn’t change at all.
For someone who just wants to keep iterating on ideas from the couch or the car without exposing new services, this is the simpler path for a mobile Claude Code workflow.
The Claude Code Mobile Workflow in Action
Here’s a real session from today. I’m building out the truck subsite for my portfolio, and I want to add JSON-LD structured data to every page.
- I have Claude Code running in a terminal on my Mac, already in the right worktree
- I type
/remote-control. It prints a message saying it’s waiting for connections - I open the Claude iOS app on my phone
- I say: “Add Vehicle schema JSON-LD to the truck build page with my 2024 Tacoma TRD Off-Road details”
Claude Code on my Mac starts working. I see it reading files, proposing edits, running the build. On my phone, I see the same conversation: the diffs, the tool calls, the results. I approve or reject each step with a tap.
Honestly, it’s more fluid than I expected. A few things I’ve learned about making it work well:
- Dictation beats typing. iOS dictation is surprisingly accurate for technical terms. I say “add JSON-LD schema to the services page” and it nails it. For code-specific stuff like file paths or variable names, I switch to typing, but that’s maybe 10% of the time.
- Context files do the heavy lifting. Because Claude Code reads the
CLAUDE.mdfile automatically, I don’t need to re-explain the project structure, tech stack, or deployment process. I just say what I want and it already knows the rest. - Approve fast, review later. I approve most diffs with a quick glance on my phone. If something looks off, I reject it and give a one-sentence correction. The real code review happens later at my desk — the phone session is for momentum, not perfection.
Worktrees Make This Safe
Git worktrees are what make this safe. Instead of running Claude Code against my main working copy, I spawn worktrees, isolated checkouts of the repo that share the same .git directory but have their own working trees.
In practice, I can have Claude Code churning through changes in a worktree while my main checkout stays clean. If something goes sideways, I delete the worktree. No damage to my working copy, no stashed changes to remember, no merge conflicts with my own in-progress work.
It also means I can run multiple Claude Code sessions in parallel, one per worktree, without them stepping on each other. Each session has its own branch, its own file state, its own build output.
Worktrees aren’t free of friction, though. One gotcha I ran into: changes to shared files like CLAUDE.md or custom skills in .claude/commands/ don’t propagate across worktrees automatically. Each worktree is its own checkout, so if I update a skill definition or add a new context file in the main working copy, the agent running in a worktree won’t see it until I commit and pull. I’ve had sessions where an agent kept using an outdated skill because the worktree had stale files. The fix is to commit your shared config changes to the branch before spawning the worktree — or just remember that worktree agents are working with a snapshot, not a live view.
The Limitations
None of this is perfect. The main limitation: you can’t spawn new Claude Code sessions from your phone.
Here’s the catch: remote control connects your phone to an existing Claude Code session. If that session finishes or you need to start a new one, you need to walk over to your Mac (or SSH in) to launch it. You also can’t open a second terminal tab and start another session from your phone. It’s one session, one connection.
For quick iterations on an active task, this doesn’t matter. I start Claude Code before I leave my desk, and I can keep feeding it instructions for hours from my phone. But if I finish one task and want to start a completely different one, I either need to reuse the existing session (which works fine) or get back to my keyboard.
There’s also a latency factor — voice dictation adds a beat of delay compared to typing directly into a terminal, and reviewing diffs on a phone screen means more scrolling than you’d get on a 27-inch monitor. Neither is a dealbreaker, but they add up over a long session. So I save the complex refactoring for my desk. The phone is for targeted tasks: add this schema, write this blog post, fix this one CSS bug.
The Fix: Tailscale (To Be Continued)
Tailscale is the obvious solve. Install it on your Mac, install it on your phone, and you have a private encrypted tunnel between them. No port forwarding, no exposed services, no configuration beyond “sign in.”
With Tailscale, you could SSH into your Mac from your phone, start a new Claude Code session in tmux, and then /remote-control into it from the iOS app. Full lifecycle management from anywhere.
I haven’t set this up yet, but it’s the natural next step. Tailscale’s security model is solid: WireGuard under the hood, identity-based access, no listening ports on the public internet. It adds a layer without meaningfully increasing your attack surface.
But that’s a post for another day. For now, the simple Claude Code remote control workflow handles 90% of what I need.
Why This Matters
I’m a one-person shop. I shoot video, edit in DaVinci Resolve, build my own website, run my own storefronts for video clips and photos. Every hour I spend at my desk is an hour I’m not shooting, scouting locations, or spending time with my family.
Being able to pull out my phone and say “add breadcrumb schema to the services page” or “write a blog post about the dashcam shoot and optimize it for SEO” — and have it actually happen, with full project context, against my real codebase — that’s not a gimmick. That’s how a solo operator stays productive without being chained to a desk.
And the bar for “good enough to ship” keeps dropping. Voice dictation is good enough. Claude Code is good enough. The iOS app is good enough. None of them are perfect, but stacked together, they let me ship production code from my phone while my kid’s at practice.
And honestly? That’s the whole point.
If you’re using Claude Code and have your own mobile workflow, or you’re figuring out how AI coding tools fit into a solo creative business, I’d like to hear about it. Get in touch or find me on Instagram.