How to Run Claude Code With Siri: Hands-Free Voice Control From Your iPhone

    A step-by-step guide to running Claude Code with Siri: one install command, one click to add the shortcut and three iPhone settings, then "Hey Siri, Jarvis" works from your iPhone, AirPods or CarPlay. Plus how the shortcut works and how to fix common problems.

    Published
    Reading time
    6 min read
    How to run Claude Code with Siri
    On this page

    TL;DR: You can run Claude Code with Siri: say "Hey Siri, Jarvis", ask a question about your code or your day, and hear Claude Code's answer, with no screen and no typing. This step-by-step guide uses carcode, an open-source tool that creates the Siri Shortcut for you and connects it to Claude Code on your Mac. Setup takes about five minutes: one install command, one click to add the shortcut, and three iPhone settings. At the end there's a breakdown of how the shortcut works, if you'd rather understand it or build your own.

    How to run Claude Code with Siri
    How to run Claude Code with Siri

    What You'll Have at the End

    text
    You     Hey Siri, Jarvis
    Jarvis  Hello Boss, I'm ready for work.
    You     Any pull requests waiting on me?
    Jarvis  Two. The metering one has green CI and one approval.
    You     Bye.

    It works anywhere Siri does: your iPhone, AirPods, and Apple CarPlay in the car. "Jarvis" is just the default name; you can call it anything.

    Who this is for: developers who already use Claude Code in the terminal and want to reach it by voice. You don't need to know anything about Siri Shortcuts.

    Prerequisites

    • A Mac that stays on. Claude Code runs there, with your repos and logins. A desktop Mac, or a laptop that's plugged in with sleep turned off, both work.
    • Claude Code, installed and logged in. If you haven't yet: curl -fsSL https://claude.ai/install.sh | bash, then run claude once to sign in.
    • An iPhone signed in to the same iCloud account as the Mac, so the shortcut syncs.
    • Node.js for the one-line installer. No Node? There's a curl installer in Step 1.

    There's no API key to set up. carcode uses the Claude Code login you already have.

    Step 1: Install carcode

    On your Mac, run:

    bash
    npx carcode-cli

    The installer:

    1. 01Checks your Mac and offers to install uv and cloudflared with Homebrew if they're missing.
    2. 02Asks which folder holds your repos (for example ~/code), what to call the assistant and what it should call you.
    3. 03Starts two background services: the carcode server, and a secure tunnel so your phone can reach your Mac over mobile data.
    4. 04Builds a signed Siri Shortcut with your private access token, and opens it in the Shortcuts app.

    Without Node, use the shell installer instead:

    bash
    curl -fsSL https://raw.githubusercontent.com/Harsh-Rastogi-03/carcode/main/install.sh | bash

    You can also hand the job to Claude Code itself. Paste this into a Claude Code session and it runs the installer and checks the result:

    text
    Install carcode for me: https://github.com/Harsh-Rastogi-03/carcode
    Follow the steps in its AGENTS.md.

    Step 2: Check It Works Before Touching Your Phone

    bash
    npx carcode-cli doctor

    doctor checks every piece (Claude Code, the server, the tunnel, the shortcut) and prints the fix for anything that's wrong. Then send a real message:

    bash
    npx carcode-cli say "what can you do?"

    Or have a whole spoken conversation in the terminal, with the Mac's voice reading the answers:

    bash
    npx carcode-cli talk

    If talk works, Siri will too: it's the same server.

    Step 3: Add the Shortcut

    In the Shortcuts window the installer opened, click Add Shortcut. iCloud syncs it to your iPhone in about a minute. Open the Shortcuts app on your iPhone to check it's there.

    Tip: if you ever have two shortcuts with the same name, delete the older one. Siri may run the wrong one.

    Step 4: Three iPhone Settings That Matter

    These three settings make the biggest difference to how it feels:

    SettingWhereWhy
    Allow Siri When LockedSettings → SiriSo it works with the phone in a mount or in your pocket
    Siri Responses: Prefer Spoken ResponsesSettings → SiriOtherwise a phone on silent shows the answer instead of saying it
    Siri Pause Time: LongestSettings → Accessibility → SiriDictation stops at the first pause; this gives you more time to finish a sentence

    carcode also handles cut-off sentences on its own. If you trail off ("Check the latest message from..."), it replies "Go on" and joins the two halves before sending them to Claude Code.

    Step 5: Say It

    "Hey Siri, Jarvis."

    You'll hear the greeting, then it listens. Ask something, hear the answer, and it listens again, until you say "bye".

    A few words it understands on its own:

    SayWhat happens
    "Status"What it's working on, or "Nothing running"
    "Cancel"Stops the current job
    "New session"Starts a fresh Claude Code conversation
    "Bye" / "That's all"Ends the shortcut

    For a list of things worth asking, see 25 Things to Ask Claude Code on Your Commute.

    Make It Yours

    Settings live in .env in the carcode folder (npx carcode-cli where prints it). After changing the name, greeting or language, rebuild the shortcut with npx carcode-cli shortcut.

    SettingDefaultExample
    CARCODE_NAMEJarvisFriday: you'd say "Hey Siri, Friday"
    CARCODE_USER_TITLEBossYour name
    CARCODE_GREETINGHello Boss, I am ready for work.Anything short
    CARCODE_LANGUAGEen-USen-GB, en-IN, en-AU for better dictation

    Pick a name Siri won't confuse with a contact, an app or a built-in command. A short, distinctive word works best.

    You can also teach it about your world in prompts/context.local.md: your GitHub username, which repo "the app" means, who your teammates are. Then "message Alex" or "check the app repo" work the first time.

    How the Shortcut Works

    If you want to understand it, or build your own, here's what carcode generates. It's a loop of standard Shortcuts actions:

    #ActionDetail
    1Speak TextThe greeting
    2Repeat (up to 30 times)One turn of the conversation each time
    3Dictate TextStops listening after a pause
    4Get Contents of URLPOST to your Mac with a JSON body: what you said, plus an X-Carcode-Token header
    5Speak TextThe speak field of the reply
    6If end is setStop the shortcut (you said "bye")
    7If pending is setAsk again (up to 6 times) until a slow answer is ready, speaking each update

    The server on your Mac does the rest: it keeps one Claude Code session warm so answers take seconds, answers within 8 seconds every time (Siri gives up on slow requests), and says "One moment" while longer jobs finish. The engineering behind that is in Building a Voice Interface for Claude Code.

    Troubleshooting

    Start with npx carcode-cli doctor. It covers most problems.

    SymptomFix
    Siri runs it but you hear nothingPrefer Spoken Responses, and turn the media volume up
    "... is unreachable", or the shortcut errorsThe Mac is asleep or offline, or the tunnel restarted. Run doctor, then npx carcode-cli shortcut if the address changed
    It cuts you off mid-sentenceSiri Pause Time → Longest. carcode also says "Go on" and joins the halves
    Siri says it can't find the shortcutWait a minute for iCloud, and check the name matches what you're saying
    Answers about GitHub are wrongIf you have several gh accounts, set CARCODE_GH_USER

    The address changes after a reboot? The free tunnel gets a new URL when it restarts. For a permanent one, use a named Cloudflare tunnel on your own domain (CARCODE_TUNNEL_NAME and CARCODE_TUNNEL_HOSTNAME in .env), or Tailscale Funnel. The README has the steps.

    Keep It Safe

    • Your token is the key. Anyone with the shortcut file or data/token can talk to Claude Code on your Mac. Don't share either. To rotate it: rm data/token && ./carcode restart && ./carcode shortcut.
    • It asks before acting for you. Messages, emails, merges, approvals and deletions are read back and need a spoken "confirm".
    • Code changes go to draft PRs on a carcode/... branch, never straight to main.
    • Its tools are allowlisted: files, git, gh, package managers and your connectors. Other shell commands are denied.

    Further Reading


    Harsh Rastogi is an AI Product Engineer building generative-AI products and multi-agent systems. He writes about AI systems, developer tooling and production engineering at harshrastogi.tech.

    Frequently asked questions

    Can Siri run Claude Code?

    Yes, with a Siri Shortcut that sends what you say to Claude Code on your Mac and speaks the reply. carcode builds and signs that shortcut for you, so "Hey Siri, Jarvis" starts a voice conversation with Claude Code.

    Do I need an Anthropic API key to use Claude Code with Siri?

    No. carcode uses the Claude Code login you already have on your Mac, so there's no separate API key.

    Why does Siri cut me off mid-sentence?

    iOS dictation stops at the first pause. Set Settings, Accessibility, Siri, Siri Pause Time to Longest. carcode also notices unfinished sentences, says "Go on" and joins the two halves.

    Why can't I hear Claude Code's answers?

    Set Settings, Siri, Siri Responses to Prefer Spoken Responses. Otherwise a phone on silent shows the answer on screen instead of speaking it.

    • Claude Code
    • Siri Shortcuts
    • Tutorial
    • Voice AI
    • iPhone

    Written by Harsh Rastogi, AI Product Engineer and Business AI Head at Modelia. More on AI products, agents and production engineering on LinkedIn.

    Share

    LinkedInX
    Portrait of Harsh Rastogi, AI Product Engineer

    Harsh Rastogi

    AI Product Engineer and Business AI Head at Modelia

    I build AI products and agents from the first sketch to production at Modelia, and I'm a Founding Engineer at SelfAgentic. Before that I built platforms at Asynq and Bharat Electronics Limited. I publish the agent skills I use every day, and you can see what I've shipped in my work.

    Get the next article by email.

    New articles and AI Pulse editions. Nothing else.