
What Claude for Siri Does
Claude for Siri is an experimental macOS project that makes a signed-in Claude Code account available as a provider in macOS Spotlight and related Siri interfaces. Its menu bar application runs a built-in Swift bridge, receives requests from a sandboxed provider extension, invokes the local Claude Code CLI, and streams text responses into Apple’s native response interface.
Security warning: The project requires macOS 27 with System Integrity Protection and Apple Mobile File Integrity disabled. This substantially lowers macOS security protections. Use a dedicated development Mac rather than a primary or production machine. The application and its scripts do not disable these protections for you.
This is an independent proof of concept, not an official Apple or Anthropic integration. It relies on private, beta-specific APIs and was tested on macOS 27 build 26A428 with Xcode 27 27A266a.
Key Features and Limitations
What currently works
- Provider discovery, consent, and invocation have been demonstrated in Spotlight.
- The Swift bridge can complete live requests through an authenticated Claude Code account.
- Responses stream incrementally into Apple’s native response UI.
- Each request starts a new conversation.
- Writing Tools support is implemented for selected text, although it has not been verified in the native interface.
- The menu bar application includes controls for testing the connection, enabling discovery, and restoring normal discovery behavior.
Important limitations
- The provider handles text only.
- It does not generate images or accept attachments.
- It cannot execute device actions.
- It does not access Siri’s mail, contacts, messages, or semantic index.
- Voice routing remains unverified.
- There is no verified way to make this extension the system-wide default Ask provider.
- Spotlight, Siri’s separate Ask menu, and System Settings may display different provider lists.
Apple’s generic onboarding interface may mention image generation or display a placeholder icon. Those elements do not represent capabilities provided by this project. The reliable routing method is to explicitly choose Ask… → Claude for each Spotlight request.
Prerequisites
Before installing the project, prepare a development Mac with the required software and configuration:
- macOS 27 with SIP and AMFI already disabled.
- Xcode 27, including an accepted license and completed first-launch component installation.
- Homebrew for installing XcodeGen.
- XcodeGen.
- Claude Code, installed and signed in.
- Git and access to a terminal.
Install XcodeGen with Homebrew:
brew install xcodegenAuthenticate Claude Code:
claude auth loginYou can confirm the account state before continuing:
claude auth statusInstall Claude for Siri
1. Clone the repository
git clone https://github.com/mpociot/claude-siri-ai.git
cd claude-siri-ai2. Build and install the application
./scripts/install.shThe installer builds the application, places it at ~/Applications/Claude.app, and opens it. Installation stops if another application already occupies that exact path. Anthropic’s application at /Applications/Claude.app is separate and does not conflict with the user-local installation path.
The build uses the Xcode selected by xcode-select. If the wrong developer directory is active, specify Xcode explicitly:
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer ./scripts/install.sh3. Test the Claude Code connection
Open the installed Claude application and click Test Connection. The application searches common locations for the Claude CLI. If it cannot find the correct executable, use Choose Claude CLI… and select it manually.
4. Enable provider discovery
Click Enable in Spotlight… and authenticate in the macOS administrator dialog. The application temporarily restarts Siri and Spotlight with expanded provider discovery so that macOS can find the custom extension.
This mechanism is temporary. After restarting the Mac or restarting Siri services, you may need to click Enable in Spotlight… again. Use Restore Normal Discovery to remove the temporary process override.
Send Your First Prompt
- Keep the Claude menu bar application running.
- Press ⌘Space to open Spotlight.
- Right-click the Spotlight input field.
- Select Ask… → Claude.
- Enter a text prompt and submit it.
- If macOS displays Apple’s consent interface, complete the Turn On flow.
For example, you can ask:
Explain the difference between async and parallel programming in three short paragraphs.The response should stream into Apple’s native interface. Because every request starts a fresh conversation, do not assume that Claude remembers previous prompts submitted through Spotlight.
Closing the application’s settings window does not stop the bridge; it remains available through the menu bar. Enable Open at login if you want the application to start automatically, but this option is not required.
How the Integration Works
Spotlight / Siri
→ sandboxed ClaudeProvider.appex
→ authenticated HTTP/NDJSON on 127.0.0.1:17839
→ Swift bridge inside Claude.app
→ signed-in Claude Code CLI
→ streamed text
→ native Siri responseThe provider extension is sandboxed and communicates with the host application over IPv4 loopback. The host remains outside the sandbox so that it can launch the Claude Code CLI.
For each request, the CLI runs in a private temporary directory with tools disabled, no MCP servers, safe mode, no Chrome integration, and no persistent conversation. Temporary prompt input is deleted after execution. According to the project documentation, the bridge does not log prompts, responses, or credentials.
The local server authenticates every request and rejects browser Origin headers and ambiguous HTTP framing. It also limits request body size, open connections, concurrent Claude processes, and execution time.
Understanding the local token
The build creates a random bearer token once in .local/bridge.json and bundles it into the host and extension targets. Rebuilding preserves the token. Do not distribute a compiled application bundle containing your local token.
The token helps prevent accidental or browser-based access, but it is not a security boundary against another local process capable of reading the application bundle.
Understanding discovery
Provider discovery uses a temporary, narrowly scoped runtime shim in Apple’s existing Siri and provider processes. It does not modify Apple binaries, launch plists, boot arguments, entitlement checks, or provider consent. You must still approve the provider through Apple’s native consent flow.
Build and Development Commands
Build without installing
./scripts/build.shInstall an existing build
./scripts/install.sh --skip-buildXcodeGen generates the project. Both the host and extension use the private com.apple.developer.model-delegation entitlement and are ad-hoc signed. This setup does not grant a distributable Apple entitlement.
After installation, the application embeds the bridge, discovery script, and compiled discovery shim. The installed application therefore does not require the repository checkout, Xcode, or Python at runtime. Claude Code must remain installed and authenticated. During discovery sessions, do not move the installed application from its current path.
Control discovery from the command line
./scripts/discovery-session.sh start
./scripts/discovery-session.sh stopThe first command starts the temporary discovery session. The second restores normal discovery behavior.
Testing the Project
Run the Swift test suite
swift test --scratch-path .local/swift-buildThe native Swift tests do not require a Claude account. Ten tests cover HTTP authentication and request validation, incremental text delivery, completion and error handling, process timeout and cancellation, and a real localhost round trip through a fake CLI.
Run a live bridge request
./scripts/smoke.shThis command sends one live request through the running application and your authenticated Claude account. The documented successful response is Claude bridge works.
Inspect the extension and application signature
pluginkit -m -A -D -v -i dev.goldengate.Claude.Provider
codesign --verify --deep --strict "$HOME/Applications/Claude.app"The first command checks whether macOS has registered the provider extension. The second verifies the installed application’s code signature.
Troubleshooting
The bridge does not start
Quit duplicate copies of Claude for Siri and check whether another process is using TCP port 17839. Only the intended bridge should listen on this port.
Claude does not appear in the Ask menu
Open the application and run Enable in Spotlight… again. Complete any macOS consent prompt that appears. Discovery may need to be repeated after a reboot or Siri service restart.
The Claude CLI is not detected
Confirm that Claude Code is installed and authenticated with claude auth status. Then use Choose Claude CLI… in the application to select the executable manually.
Spotlight and System Settings disagree
This is a known consequence of the experimental provider-discovery path. Spotlight, Siri’s separate Ask menu, and System Settings can report different provider lists. A provider appearing in one interface does not guarantee that it will appear in all of them.
Claude is not used automatically
This project does not provide a verified default-provider setting. Even if Claude was selected in an earlier conversation, open each new Spotlight request through Ask… → Claude. The application intentionally avoids exposing an unverified Make default control.
Advanced Usage and Safety Tips
- Use a separate development machine because disabling SIP and AMFI weakens core operating-system protections.
- Keep the installed application at
~/Applications/Claude.appwhile a discovery session is active. - Use Restore Normal Discovery or
./scripts/discovery-session.sh stopwhen experimental discovery is no longer needed. - Do not distribute locally built bundles because they contain the bearer token generated for your setup.
- Run the Swift tests before changing bridge authentication, streaming, timeout, or cancellation behavior.
- Use the smoke test to separate bridge or account problems from Spotlight discovery problems.
- Expect independent requests rather than persistent conversations.
- Do not rely on Writing Tools, voice routing, or default-provider behavior without performing separate native tests.
Conclusion
Claude for Siri demonstrates how a sandboxed macOS provider extension, a local authenticated Swift bridge, and Claude Code can stream text responses into Spotlight’s native Ask interface. The project is useful for experimentation and development, but its private APIs, reduced system protections, temporary discovery mechanism, and unverified Siri behaviors make it unsuitable for ordinary production use.
