
Claude for Siriの機能
Claude for Siriは、サインイン済みのClaude CodeアカウントをmacOS Spotlightおよび関連するSiriインターフェースのプロバイダーとして利用できるようにする、実験的なmacOSプロジェクトです。メニューバーアプリケーションは組み込みのSwiftブリッジを実行し、サンドボックス化されたプロバイダー拡張機能からリクエストを受け取り、ローカルのClaude Code CLIを呼び出して、テキスト応答をAppleのネイティブ応答インターフェースへストリーミングします。
セキュリティ警告:このプロジェクトには、System Integrity ProtectionとApple Mobile File Integrityを無効にしたmacOS 27が必要です。これにより、macOSのセキュリティ保護が大幅に低下します。メイン環境や本番環境のマシンではなく、開発専用のMacを使用してください。アプリケーションとそのスクリプトが、これらの保護機能を自動的に無効にすることはありません。
これは独立した概念実証であり、AppleまたはAnthropicの公式統合ではありません。プライベートなベータ版固有のAPIに依存しており、macOS 27ビルド26A428とXcode 27 27A266aでテストされています。
主な機能と制限事項
現在動作する機能
- Spotlightでのプロバイダー検出、同意、呼び出しが実証されています。
- Swiftブリッジは、認証済みのClaude Codeアカウントを通じてライブリクエストを完了できます。
- 応答はAppleのネイティブ応答UIへ段階的にストリーミングされます。
- 各リクエストは新しい会話として開始されます。
- 選択したテキストに対するWriting Toolsのサポートが実装されていますが、ネイティブインターフェースでは未検証です。
- メニューバーアプリケーションには、接続のテスト、検出の有効化、通常の検出動作の復元を行うコントロールがあります。
重要な制限事項
- プロバイダーが処理できるのはテキストのみです。
- 画像の生成や添付ファイルの受け付けには対応していません。
- デバイス操作を実行することはできません。
- Siriのメール、連絡先、メッセージ、セマンティックインデックスにはアクセスしません。
- 音声ルーティングは未検証です。
- この拡張機能をシステム全体のデフォルトのAskプロバイダーにする検証済みの方法はありません。
- Spotlight、Siri独自のAskメニュー、システム設定では、異なるプロバイダー一覧が表示される場合があります。
Appleの汎用オンボーディングインターフェースには、画像生成に関する説明が表示されたり、プレースホルダーアイコンが表示されたりすることがあります。これらは、このプロジェクトが提供する機能を示すものではありません。確実なルーティング方法は、各SpotlightリクエストでAsk… → Claudeを明示的に選択することです。
前提条件
プロジェクトをインストールする前に、必要なソフトウェアと設定を備えた開発用Macを準備してください。
- SIPとAMFIがすでに無効になっているmacOS 27。
- ライセンスへの同意と初回起動時のコンポーネントインストールが完了したXcode 27。
- XcodeGenのインストールに使用するHomebrew。
- XcodeGen。
- Claude Code(インストールおよびサインイン済み)。
- Gitとターミナルへのアクセス。
HomebrewでXcodeGenをインストールします。
brew install xcodegenClaude Codeを認証します。
claude auth login続行する前に、アカウントの状態を確認できます。
claude auth statusClaude for Siriをインストールする
1. リポジトリをクローンする
git clone https://github.com/mpociot/claude-siri-ai.git
cd claude-siri-ai2. アプリケーションをビルドしてインストールする
./scripts/install.shインストーラーはアプリケーションをビルドし、~/Applications/Claude.appに配置して開きます。同じパスに別のアプリケーションがすでに存在する場合、インストールは停止します。/Applications/Claude.appにあるAnthropicのアプリケーションは別のものであり、ユーザーのローカルインストール先とは競合しません。
ビルドには、xcode-selectで選択されたXcodeが使用されます。正しくないDeveloperディレクトリが有効になっている場合は、Xcodeを明示的に指定してください。
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer ./scripts/install.sh3. Claude Code接続をテストする
インストールしたClaudeアプリケーションを開き、Test Connectionをクリックします。アプリケーションはClaude CLIの一般的な場所を検索します。正しい実行ファイルが見つからない場合は、Choose Claude CLI…を使用して手動で選択してください。
4. プロバイダー検出を有効にする
Enable in Spotlight…をクリックし、macOSの管理者ダイアログで認証します。アプリケーションはSiriとSpotlightを一時的に再起動し、プロバイダー検出を拡張することで、macOSがカスタム拡張機能を見つけられるようにします。
この仕組みは一時的なものです。Macを再起動した後、またはSiriサービスを再起動した後は、再度Enable in Spotlight…をクリックする必要がある場合があります。一時的なプロセス上書きを削除するには、Restore Normal Discoveryを使用してください。
最初のプロンプトを送信する
- Claudeメニューバーアプリケーションを起動したままにします。
- ⌘Spaceを押してSpotlightを開きます。
- Spotlightの入力フィールドを右クリックします。
- Ask… → Claudeを選択します。
- テキストプロンプトを入力して送信します。
- macOSにAppleの同意インターフェースが表示された場合は、Turn Onの手順を完了します。
たとえば、次のように質問できます。
非同期プログラミングと並列プログラミングの違いを、短い3つの段落で説明してください。応答はAppleのネイティブインターフェースにストリーミングされます。各リクエストは新しい会話として開始されるため、Spotlightから以前に送信したプロンプトをClaudeが記憶しているとは限りません。
アプリケーションの設定ウィンドウを閉じてもブリッジは停止せず、メニューバーから引き続き利用できます。アプリケーションを自動的に起動したい場合はOpen at loginを有効にしてください。ただし、このオプションは必須ではありません。
統合の仕組み
Spotlight / Siri
→ サンドボックス化された ClaudeProvider.appex
→ 127.0.0.1:17839 上の認証済み HTTP/NDJSON
→ Claude.app 内の Swift ブリッジ
→ サインイン済みの Claude Code CLI
→ ストリーミングテキスト
→ ネイティブ Siri 応答プロバイダー拡張機能はサンドボックス化されており、IPv4 ループバック経由でホストアプリケーションと通信します。ホストはサンドボックスの外部にあるため、Claude Code CLI を起動できます。
各リクエストに対して、CLI はツール無効、MCP サーバーなし、セーフモード、Chrome 統合なし、永続的な会話なしのプライベート一時ディレクトリで実行されます。一時的なプロンプト入力は実行後に削除されます。プロジェクトのドキュメントによると、ブリッジはプロンプト、応答、認証情報を記録しません。
ローカルサーバーはすべてのリクエストを認証し、ブラウザーの Origin ヘッダーと曖昧な HTTP フレーミングを拒否します。また、リクエスト本文のサイズ、オープン接続数、同時実行する Claude プロセス数、実行時間も制限します。
ローカルトークンについて
ビルド時にランダムなベアラートークンが .local/bridge.json に一度だけ作成され、ホストと拡張機能のターゲットにバンドルされます。再ビルドしてもトークンは保持されます。ローカルトークンを含むコンパイル済みアプリケーションバンドルを配布しないでください。
このトークンは、偶発的なアクセスやブラウザー経由のアクセスを防ぐのに役立ちますが、アプリケーションバンドルを読み取れる別のローカルプロセスに対するセキュリティ境界ではありません。
検出について
プロバイダーの検出には、Apple の既存の Siri およびプロバイダープロセス内で、一時的かつ対象を限定したランタイムシムを使用します。Apple のバイナリ、起動 plist、ブート引数、エンタイトルメントチェック、プロバイダーの同意設定は変更しません。Apple のネイティブな同意フローで、引き続きプロバイダーを承認する必要があります。
ビルドと開発のコマンド
インストールせずにビルドする
./scripts/build.sh既存のビルドをインストールする
./scripts/install.sh --skip-buildXcodeGen がプロジェクトを生成します。ホストと拡張機能はどちらもプライベートな com.apple.developer.model-delegation エンタイトルメントを使用し、アドホック署名されます。この構成では、配布可能な Apple エンタイトルメントは付与されません。
インストール後、アプリケーションにはブリッジ、検出スクリプト、コンパイル済みの検出シムが組み込まれます。そのため、インストールされたアプリケーションの実行時に、リポジトリのチェックアウト、Xcode、Python は必要ありません。Claude Code はインストール済みで、認証された状態を保つ必要があります。検出セッション中は、インストールされたアプリケーションを現在のパスから移動しないでください。
コマンドラインから検出を制御する
./scripts/discovery-session.sh start
./scripts/discovery-session.sh stop最初のコマンドで一時的な検出セッションを開始します。2 つ目のコマンドで通常の検出動作を復元します。
プロジェクトのテスト
Swift テストスイートを実行する
swift test --scratch-path .local/swift-buildネイティブ Swift テストに Claude アカウントは必要ありません。10 件のテストで、HTTP 認証とリクエスト検証、増分テキスト配信、完了処理とエラー処理、プロセスのタイムアウトとキャンセル、フェイク CLI を経由した実際の localhost ラウンドトリップをカバーします。
ライブブリッジリクエストを実行する
./scripts/smoke.shこのコマンドは、実行中のアプリケーションと認証済みの Claude アカウントを通じて、ライブリクエストを 1 件送信します。ドキュメントに記載された成功時の応答は Claude bridge works です。
拡張機能とアプリケーションの署名を確認する
pluginkit -m -A -D -v -i dev.goldengate.Claude.Provider
codesign --verify --deep --strict "$HOME/Applications/Claude.app"最初のコマンドは、macOS がプロバイダー拡張機能を登録しているかどうかを確認します。2 つ目のコマンドは、インストールされたアプリケーションのコード署名を検証します。
トラブルシューティング
ブリッジが起動しない
Claude for Siri の重複したコピーを終了し、別のプロセスが TCP ポート 17839 を使用していないか確認してください。このポートをリッスンするのは、意図したブリッジだけである必要があります。
Ask メニューに Claude が表示されない
アプリケーションを開き、もう一度 Spotlight で有効にする… を実行してください。表示される macOS の同意プロンプトを完了します。再起動後や Siri サービスの再起動後は、検出を再実行する必要がある場合があります。
Claude CLI が検出されない
Claude Code がインストールされ、claude auth status で認証済みであることを確認してください。その後、アプリケーションの Claude CLI を選択… を使用して、実行ファイルを手動で選択します。
Spotlight とシステム設定の表示が一致しない
これは、実験的なプロバイダー検出経路に伴う既知の結果です。Spotlight、Siri の独立した Ask メニュー、システム設定では、異なるプロバイダー一覧が表示されることがあります。あるインターフェースにプロバイダーが表示されても、すべてのインターフェースに表示されるとは限りません。
Claude が自動的に使用されない
このプロジェクトには、検証済みのデフォルトプロバイダー設定はありません。以前の会話で Claude を選択していた場合でも、新しい Spotlight リクエストごとに Ask… → Claude を開いてください。アプリケーションは、検証されていない デフォルトに設定 コントロールを意図的に公開していません。
高度な使用方法と安全に関するヒント
- SIPとAMFIを無効にするとOSの中核的な保護機能が弱まるため、専用の開発マシンを使用してください。
- ディスカバリーセッションが有効な間は、インストールしたアプリケーションを
~/Applications/Claude.appに置いてください。 - 実験的なディスカバリーが不要になったら、Restore Normal Discoveryまたは
./scripts/discovery-session.sh stopを使用してください。 - ローカルでビルドしたバンドルは、環境用に生成されたベアラートークンが含まれているため、配布しないでください。
- ブリッジ認証、ストリーミング、タイムアウト、キャンセルの動作を変更する前に、Swiftテストを実行してください。
- スモークテストを使用して、ブリッジまたはアカウントの問題とSpotlightのディスカバリー問題を切り分けてください。
- 永続的な会話ではなく、独立したリクエストが行われることを想定してください。
- 個別のネイティブテストを実施せずに、Writing Tools、音声ルーティング、またはデフォルトプロバイダーの動作を信頼しないでください。
結論
Claude for Siriは、サンドボックス化されたmacOSプロバイダー拡張機能、ローカルで認証されたSwiftブリッジ、Claude Codeを組み合わせ、テキスト応答をSpotlightのネイティブな「質問」インターフェースにストリーミングする方法を示しています。このプロジェクトは実験や開発には役立ちますが、非公開API、低下したシステム保護、一時的なディスカバリー機構、検証されていないSiriの挙動があるため、通常の本番利用には適していません。
