AIエージェントにSMSの認証コードを読ませる方法
Fwrd ·
AIエージェントは、iPhoneのSMSを自分では読めないので、コードを渡します。ショートカットの「メッセージ」のオートメーションが、コードのSMSを1通ずつFwrdに渡し、FwrdがiPhoneから、エージェントが届くエンドポイントへ投稿します。エンドポイントは、n8nのWebhookノードや小さなサーバーなどです。エージェントは、正規表現で数字を取り出して入力します。ご自分のアカウント、または自動化する権限のあるアカウントだけで使ってください。
必要なもの: コードが届く番号のiOS 26以降のiPhone。ショートカットアプリ(最初から入っています)。Fwrd。そして、エージェントが読める公開のHTTPSアドレスです。n8nのワークフロー、ZapierやMakeのWebhook、ご自分のサーバーなどが使えます。
AIエージェントは、iPhoneに届くSMSのコードをどう受け取りますか?
Webhook経由です。コードがiPhoneに届くと、FwrdがJSONでエンドポイントへ投稿し、エージェントがそこから読み取ります。
iOSでは、どのアプリもエージェントも、メッセージの受信トレイを読めません。その理由は、iPhoneにSMSのAPIはある?iOSでSMSを取り出す方法で説明しています。許されているのは、ご自分で設定する「メッセージ」のオートメーションです。条件に合うSMSが届いたときに動き、それを次のアクションに渡します。そのアクションがFwrdです。FwrdはSMSを、iPhoneから直接、指定されたアドレスへ送ります。アカウントも、間に入るFwrdのサーバーもありません。
コードの届け先は、エージェントの種類で決まります。
- n8nのAI Agentワークフロー。 Webhookノードが本文を受け取り、ワークフローがそれを次へ渡します。ノードの設定は、iPhoneのSMSをn8nに転送する:Webhookノードの設定で説明しています。
- ブラウザのエージェントや、独自のLLMエージェント。 小さなサーバーが、各SMSを届いた時刻とともに保存し、エージェントは、コードを要求したあとに、最新のコードをそこへ問い合わせます。
- ZapierやMakeのシナリオ。 Catch Hookまたはカスタムのwebhookが、実行を開始します。各ツールの手順は、iPhoneのSMSをZapier、Make、n8nへ送信で説明しています。
ログインコードではなく、チャット型アシスタントにSMS全般を読ませたい場合は、ChatGPTやClaudeはiPhoneのSMSを読めますかをご覧ください。
エージェントにログインコードを扱わせてよいですか?
ご自分のアカウント、または自動化する権限のあるアカウントだけです。しかも、サービスがほかに良い手段を提供していない場合に限ります。
- サービス自身のAPIトークンを優先します。 サービスがAPIキー、OAuth、サービスアカウントを提供しているなら、それをエージェントに渡してください。エージェントはログイン画面に触れず、そのトークンだけを個別に無効にできます。
- ご自分のサインインには、パスキーや認証アプリを優先します。 SMSのコードは、ほかに手段のないログインのために取っておいてください。
- エンドポイントを読める人は、コードを使えます。 アドレスに長い秘密の文字列を含め、使い終えたコードは削除し、エンドポイントのログは非公開にしてください。
- サービスの規約を確認します。 自動化したサインインを禁じているサービスや、コードの共有そのものを禁じている銀行もあります。
コードのSMSをエージェントへ送る手順
コードだけを残すWebhookの送り先を追加し、続けて、コードのSMSをFwrdに渡す「メッセージ」のオートメーションを作ります。エンドポイント側の詳細は、Webhookのガイドで説明しています。
FwrdにWebhookを追加します。 Fwrdを開き、「+」をタップして「Webhook」を選びます。「設定」欄に、エンドポイントのHTTPSアドレス全体を貼り付け、「テストメッセージを送信」をタップしてエンドポイントにフィールドを見せたら、チェックマークで保存します。
コードだけを残します。 同じ送り先で、「転送するSMS」の「一部のSMSのみ」を選び、「コードらしいもの」をオンにします。4〜8桁のコードを含むSMSが残ります。条件は1つなので、無料プランでも使えます。
「メッセージ」のオートメーションを作成します。 iOS 27では、ショートカットアプリを開き、「ライブラリ」>「オートメーション」の順にタップして、「+」をタップします。「ショートカットを説明」が表示されたら、「編集」をタップします。「オートメーション」をタップして「メッセージ」を選び、「差出人」を「メッセージ」に変更して、スペースを1つ入力します。スペースを含むSMSなら、すべてFwrdのフィルタに届きます。iOS 26では、「オートメーション」タブを開き、「+」をタップして、「メッセージ」を選び、「メッセージが次を含む」にスペースを入力します。
確認なしで実行されるようにします。 iOS 27では、トリガーの横の矢印をタップして「実行前に確認」がオフになっていることを確認します。ⓘ>「プライバシー」で、「ロック中に実行を許可」がオンになっていることを確認します。iOS 26では「すぐに実行」を選び、「次へ」>「新規ショートカットを作成」をタップします。
Fwrdのアクションを追加します。 「転送」を検索し、「メッセージをすべての送り先に転送」を追加します。「メッセージ」を「ショートカットの入力」に設定します(iOS 26では「ショートカットの入力」>「メッセージ」)。戻るをタップして保存します(iOS 26では「完了」)。
これで完了です。 新しいコードのSMSが、iPhoneのロック中でも自動的にエンドポイントへ届きます。
エンドポイントは何を受け取りますか?
Content-Type: application/jsonのPOSTで、届いたままのSMSの本文を受け取ります。メッセージはcontentに入り、同じ本文が、そのフィールドを読むサービスのためにtextにも入ります。senderフィールドが付くのは、Fwrdの「設定」で「差出人を含める」をオンにし、Fwrdのアクションで「差出人」を選んだ場合だけです。
次のcurlコマンドは、Fwrdと同じリクエストを送ります。最初のコードが届く前に、エージェント側を作り込めます。
curl -X POST "https://your-endpoint.example/sms/long-secret" \
-H "Content-Type: application/json" \
-d '{"content": "Your code is 123456", "text": "Your code is 123456"}'
コードを取り出すには、contentの中で最初に現れる4〜8桁の数字を一致させます。
import re
match = re.search(r"\b(\d{4,8})\b", body["content"])
code = match.group(1) if match else None
本文にタイムスタンプは含まれないため、時刻はご自分の側で記録し、ログインを試みた時刻より古いコードは無視してください。同じSMSに対する送信は、すべて同じIdempotency-Keyヘッダを持つため、重複は取り除けます。n8nと小さなサーバーの動作例は、GitHubのfwrd-sms-webhook-examplesリポジトリにあります。
エージェントにコードを渡す方法
| 方法 | コードを運ぶ人 | エージェントはあなたを待つか |
|---|---|---|
| 自分で読んで入力する | あなた | はい。ログインのたびに |
| エージェントが止まって、チャットで尋ねる | あなた | はい。ログインのたびに |
| 代わりにサービスのAPIトークンを使う | 誰も運ばない。コードがない | いいえ |
| Fwrdがエンドポイントへ投稿する | iPhoneが自動で | いいえ |
この方法でできないこと
- それ以前に届いたコードは読めません。 オートメーションが動くのは、新しいSMSだけです。
- 1つの番号で、同時に扱えるサインインは1回だけです。 同じ番号でコードを要求する2つのエージェントは、互いのコードを読んでしまうことがあるので、サインインの手順を順番待ちにしてください。CIやQAのパイプラインについては、iPhoneでSMSのワンタイムコードをCI・QAに渡す方法で説明しています。
- iPhoneの電源とオンラインの状態を保ちます。 再起動後は、誰かが一度ロックを解除するまで転送が待機します。また、3日間ロックを解除しないiPhoneは自動的に再起動します。
- Fwrdはログイン用のヘッダを送りません。 秘密の文字列はアドレスに含めてください。Fwrdは、アドレス全体をiPhoneのキーチェーンに保存します。また、IPアドレスと、.localや.internalの名前は受け付けません。
- 一方向のみです。 Fwrdは、エージェントのためにiPhoneからSMSを送ることはできません。
AIエージェントとSMSのコードについてのよくある質問
エージェントは、ほかのSMSも読めますか?
通したものだけです。「コードらしいもの」をオンにすると、4〜8桁のコードがないSMSはFwrdが除外し、エンドポイントには届きません。
コードはFwrdのサーバーを通りますか?
いいえ。Fwrdにはアカウントも、自前のサーバーもありません。各SMSはiPhoneからご自分のHTTPSエンドポイントへ直接送られます。
ショートコードの送信元からのコードでも動きますか?
はい。オートメーションは送信元ではなくSMSの内容で一致を判断するので、連絡先にない短い番号からのコードも、Fwrdのフィルタに届きます。
料金はいくらですか?
2026年10月時点で、Fwrdは毎月15件まで無料で、1通のSMSは、いくつの送り先に届いても1件として数えます。Fwrd Proなら上限がなくなり、料金は米国で月額$4.99、または年額$29.99です。App Storeには、お使いの国または地域の通貨で価格が表示されます。
エージェントに渡すのは、電話ではなくコードです
Fwrdは、iPhoneに届いたコードのSMSを、ご自分のWebhookへJSONで投稿します。アカウントは不要で、間にFwrdのサーバーも入りません。毎月15件まで無料で転送できます。
毎月15件まで無料。Fwrd Proなら、転送とフィルタの上限がなくなり、「転送しない」リストも使えます。料金は月額$4.99、または年額$29.99で、年額プランには対象の方向けに7日間の無料トライアルがあります。
iPhone · iOS 26以降