ガイド

Claude Code・Codex・Cursorに2FAコードを

AIエージェントでも、ログインフォームの入力まではできます。ただ、認証コードはスマートフォンや受信トレイに届きます。CodeCatchは、許可したときだけそのコードをエージェントに渡します。

Claude Codeに、あるサイトにログインして中身を確かめるよう頼んだとします。エージェントはページを見つけ、メールアドレスを入力し、「コードを送信」をクリックして、そこで止まります。認証コードはスマートフォンに届いていて、エージェントには読めないからです。

結論から言うと、CodeCatchをインストールし、「Settings」>「Agents」で「Let Agents Ask for Codes」をオンにして、使うエージェントの横の「Connect」をクリックします。サイトからコードが届くと、エージェントがCodeCatchにコードを頼みます。Touch IDで許可すれば、エージェントに渡ります。

エージェントが2FAで止まる理由

二段階認証は、パスワードしか知らない人を止めるためのしくみです。エージェントはちょうどその立場にいます。ブラウザは操作できても、認証コードは「メッセージ」アプリや受信トレイに届きます。だから、本人がコードを入力するまで待つか、あきらめるしかありません。

CodeCatchでできること

CodeCatchはもともと、Macの「メッセージ」アプリとメールに届いたコードを拾っています。そのコードを、エージェントが短いコマンドで頼めるようになりました。

codecatch get github.com

CodeCatchはgithub.comのコードが届くのを待ち、頼んできたアプリ、送信元、時刻をカードに表示します。「Allow」をクリックしてTouch IDで確認すると、エージェントがコードを受け取って入力します。

3ステップで設定

  1. CodeCatchをインストールし、いつもどおり「メッセージ」アプリとメールの読み取りを許可します。
  2. 「Settings」>「Agents」を開き、「Let Agents Ask for Codes」をオンにします。同時にcodecatchコマンドもインストールされます。
  3. Claude Code、Codex、Cursorの横の「Connect」をクリックします。エージェントに小さなスキルが追加され、コードが必要なときだけ読み込まれます。ほかのエージェントでは、「Other Agents」の下のテキストをコピーして、エージェントへの指示にペーストします。

緑の点は、そのエージェントが接続済みというしるしです。CursorはClaude CodeとCodexのスキルも読むので、どちらかを接続すればCursorでも使えます。「Let Agents Ask for Codes」がオフの間は、ほかの項目が薄く表示され、エージェントはコードを頼めません。

自分で決められること

  • どのコードも、まず確認。「Allow」をクリックするたびに、Touch IDかMacのパスワードが必要です。
  • 「Always Allow」にすると、そのアプリからの依頼は確認なしで通ります。対象は1つのサイトか、すべてのサイトです。
  • 「Allow All Without Asking」は、どのエージェントにも確認なしでコードを渡します。オンにするときもTouch IDが必要です。
  • ログインリンクには専用のスイッチがあり、最初はオフです。リンクを渡すと、エージェントが本人としてログインできてしまうからです。
  • パスワードリセットのリンクは、エージェントには一切渡しません。

安全を守るしくみ

  • コマンドとCodeCatchは、Mac上で本人しか開けないソケットを通してやり取りします。ネットワークには何も流れません。
  • CodeCatchは、頼んできたアプリをコード署名で確かめます。コマンドの側も、相手が本物のCodeCatchかどうかを確かめます。
  • コードとして扱うのは、そのサイト自身のドメインから届いたものだけです。差出人名が「GitHub」でも、別のドメインから届いたメールのコードは、GitHubのコードとはみなしません。
  • 依頼は一度に1件だけです。3回続けて拒否すると、エージェントのアクセスはオフになります。ルールで渡せるコードは、1時間に最大20件です。
  • 「Request History」には、どのアプリがどのサイトのコードを頼み、結果どうなったかが残ります。コードそのものは保存しません。

ただし、防げないこともあります。フルディスクアクセスをすでに持っているプログラムは、「メッセージ」アプリや「メール」アプリのデータを自分で読めます。これはCodeCatchでは止められません。

開発者・スクリプト向け

--jsonを付けると、コードと詳細をJSONで受け取れます。--sinceを付けると、「コードを送信」をクリックする前に届いたコードを除外できます。

T=$(date +%s)
# click "Send code" on the site, then:
codecatch get github.com --since $T --json

コマンドはコードが届くのを最大90秒待ちます。許可を待つ時間は、これとは別です。スクリプトは終了コードを見て、次の動きを決められます。0は成功、2は拒否、3はコードが届かなかった、4はアクセスがオフ、5は時間内に許可されなかった、です。そのほかはcodecatch --helpで確認できます。

よくある質問

エージェントはすべてのコードを読めますか?

いいえ。エージェントが頼めるのは一度に1つのサイトだけで、許可されたときにコードを1つ受け取ります。コードの一覧や検索はできず、メッセージを見ることもありません。

Macから離れているときも使えますか?

許可していれば使えます。アプリごとにサイトを「Always Allow」にするか、「Allow All」をオンにすると、確認なしでコードが渡ります。上限は1時間に20件です。それでも、1件ずつ「Request History」に記録が残ります。

どのエージェントで使えますか?

Claude Code、Codex、Cursorはワンクリックで接続できます。コマンドを実行できるなら、ほかのエージェントやスクリプトでも使えます。短い指示文を、その設定にペーストするだけです。

CodeCatchを開いたままにしておく必要はありますか?

CodeCatchはメニューバーで動いています。起動していないときは、コマンドがCodeCatchを開きます。

エージェントはパスワードリセットのリンクを受け取れますか?

いいえ。リセット用のリンクがエージェントに渡ることはありません。ログインリンクが渡るのは、「Settings」>「Agents」で「Sign-In Links」をオンにしたときだけです。

CodeCatchのアプリアイコン

ログインは最後までエージェントに。

許可したときだけ、CodeCatchがコードを渡します。

無料 · macOS 15以降 · AppleシリコンとIntelに対応