WireCat WhatsApp について
WireCat WhatsApp は、AI エージェント向けのコマンドラインツールで、WhatsApp のメッセージをローカルで読み取り、検索、管理し、設定した権限に従って送信できます。個人アカウントをリンク済みデバイスとして使い、データをローカルに保存します。読み取りで既読にはなりません。
主な機能
- 01ローカルのメッセージ・チャット検索
- 02受信箱と未返信メッセージの確認
- 03メッセージの送信、編集、返信
- 04グループ、連絡先、アカウントの管理
- 05プロフィールによるエージェント操作制限
活用シーン
- 01未読メッセージと返信待ちの確認
- 02過去の会話から合意内容を検索
- 03グループ内の未回答の質問を確認
- 04承認後のメッセージ送信や編集
MCP 対応
ローカル MCP サーバーを提供し、プロフィールの権限に応じたアカウント操作を MCP クライアントにツールとして公開します。ブラウザー上のクライアントは、トンネルとワンタイムアクセスコードを使って接続することもできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
wa — AI エージェント向け WhatsApp CLI
ターミナルで使える、検索可能なあなた専用の WhatsApp。Claude Code、 Codex、Cursor などのエージェントで、設定した制限の範囲内で利用できます。
会話の例(登場人物は架空で、出力は説明用です):
You: Use wa CLI. Who is waiting for my answer since yesterday?
Agent: (runs wa personal review 'date>1d' --unanswered: 3 chats)
· Alice Example asked about Saturday's table, 18:40 yesterday
· "Book club" — Bob Sample asked who brings the next book
You: Tell Alice: yes, 8 pm.
Agent: Draft to Alice Example: "Yes, 8 pm." Send it?
You: Yes.
⚠️
waは、実際の WhatsApp アカウントで使う非公式クライアントです。 WhatsApp の利用規約では非公式クライアントが禁止されており、 これを使用するとアカウントが停止される可能性があります。また、一斉送信や、面識のない相手へのメッセージ送信もアカウント停止の対象です。waはコマンドで指示された場合にのみ書き込みを行い、デフォルトでは1時間に最大30件のメッセージを送信します。WhatsApp から送信を控えるよう求められたり、 アカウントが制限されたりした場合は、すべての書き込みを保留します。一斉送信をせず、面識のない相手にはメッセージを送らないでください。waの使用は自己責任です。詳細:制限
開発初期段階です。 wa は新しく、その機能の一部はまだ実際の WhatsApp で検証されていません。
バックログには、これから実施する検証項目が記載されています。
詳細:ほかのツールとの比較 · wirecat.dev で見る
クイックスタート
npm install -g @wirecat/whatsapp-cli
wa personal setup --agent claude # also codex, cursor, gemini, all or none
wa personal server install # keep receiving in the background
wa personal inbox # other people's unread messages; nothing is marked read
5分ほどかかります。wa personal setup を実行すると、デバイスとして wa がアカウントにリンクされます。WhatsApp で「設定」→「リンク済みデバイス」を開いて QR コードをスキャンすると、リンク直後にスマートフォンから送信される履歴が保存され、最初のチャットが確認され、エージェントスキルがインストールされます。
macOS、Linux、Windows で Node 22.16+ または 24+ が必要です。npm は、WhatsApp のプロトコルを扱う小さなプログラムであるエンジンも、お使いのシステム用の別パッケージとしてインストールします。
何ができますか?
最新情報を確認する。 「wa CLI を使って。今朝から届いたものと、返事を待っている人を教えて」
wa personal inbox
wa personal review 'date>1d' --unanswered
何でも見つける。 「wa CLI を使って。Alice と会場について合意したのはいつ?」 — 日付と該当メッセージが表示されます。
wa personal search all "venue" # messages and notes kept on this computer
約束を忘れない。 「wa CLI を使って。私が約束したことと、まだ返事を待っていることを教えて」
wa personal review --new # what changed since the last review --new
wa personal tasks list state:open
グループを管理する。 「wa CLI を使って。Hiking で、まだ誰も答えていない質問はどれ?」
wa personal review chat:Hiking --unanswered
wa personal chats events Hiking 'time>=7d' # who joined, left, was added or removed
指示したときに返信する。
wa personal messages send "Book club" "Call at 3?" --reply-to 3EB0A1B2C3D4E5F6A7B8
wa personal messages edit "Book club" 3EB0A1B2C3D4E5F6A7B8 "Call at 4?" # your own, within 20 minutes
wa personal reactions add "Book club" 3EB0A1B2C3D4E5F6A7B8 👍
wa personal messages delete "Book club" 3EB0A1B2C3D4E5F6A7B8 --for-everyone
wa personal chats mark-read "Book club" # the other side sees it
詳細:スケジュール付きレシピ · wa の使い方
AI エージェント向けに構築
あなたのエージェント。あなたの WhatsApp。あなたのルール。
- ターミナルを使えるエージェント(Claude Code、Codex、Gemini CLI)は、自分で
waコマンドを実行します。同梱の スキルで使い方を確認できます。wa personal setup --agent …またはwa skill installで 設定し、リンクする前にwa skill showで内容を表示します。エージェントは QR コードでリンクします。コードをテキストとしてチャットに貼り付けるので、あなたがスキャンしてください。電話番号やコードを尋ねることはありません。 - ターミナルを使わないアプリ(Claude Desktop、Cursor などの MCP クライアント)は、
wa personal mcp serveに接続します。/catch-up、/review、/reply、/findなど、すぐに使えるプロンプトが用意されています。
wa personal mcp add claude-code # or: wa personal mcp add codex
wa personal mcp config # the entry for Claude Desktop, Cursor and others
プロファイルはデフォルトで送信が許可されている場合があるため、mcp add は最初に停止します。プロファイルの権限を確認してから、--allow-writes を付けて再度実行してください。
wa を選ぶ理由
- リンク済みデバイスとして使う、自分のアカウント。
waは WhatsApp Web と同じ方法でリンクします。チャット、グループ、連絡先を確認し、ビジネスアカウントやボットではなく、あなた本人としてやり取りします。 - ビジネス番号をお持ちなら、それも使えます。
wa <profile> botは Meta's Cloud API を使い、WhatsApp Business 番号として送信、テンプレートの利用、トンネル経由で webhook が受信したメッセージへの対応を行います(ボット)。 - ローカル優先の検索。 受信したデータはすべてお使いのコンピューターに保存されます。読み取りと検索はすべてローカルで処理され、外部に接続することはありません。
- エージェント向けに設計。 1 回の呼び出しにつき 1 つの操作を行い、
--jsonでは毎回同じ JSON 形式を使用します。失敗の種類ごとに固定の終了コードがあり、MCP サーバーとスキルも備えています。 - デフォルトで安全。 読み取り時に既読になったり、「オンライン」や「入力中」と表示されたりすることはありません。エージェントが実行できる操作、送信できるチャット、1 時間あたりのメッセージ数(デフォルトは 30 件)はプロファイルで指定します。送信結果が不明な場合、
waはその旨を伝え、自動で再送することはありません。
アカウント
wa は、WhatsApp アカウントに追加でリンクしたデバイスとして、あなたの名前で動作します。
wa personal chats list --limit 5
wa personal messages list "Book club" --limit 20
wa personal messages send "Book club" "The minutes" --file minutes.pdf
wa personal polls create "Book club" "Which day?" Monday Tuesday
wa personal messages download "Book club" 3EB0A1B2C3D4E5F6A7B8 --output-dir ~/Downloads
wa personal messages transcribe "Book club" 3EB0A1B2C3D4E5F6A7B8 --local # a voice note as text
メッセージ ID の 3EB0A1B2C3D4E5F6A7B8 は架空のものです。messages list -v から実際の ID を取得してください。
- 読む。 ローカルストアのチャットとメッセージ、前後のメッセージも含む1件のメッセージ、他の人からの未読メッセージ(
wa personal inbox)、前回の確認以降のすべての内容(wa personal review)、新着メッセージの受信(wa personal watch)、スマートフォンに依頼して取得する特定のチャットの古いメッセージ(wa personal messages sync)、フォロー中のチャンネルの投稿(チャンネルのリンクを指定してwa personal chats joinを実行し、その後messages syncを実行します)。 - 送る。 Markdown、返信、1件のメッセージにつき1ファイル、写真、動画またはボイスメモ、写真と動画をまとめた1つのアルバム、送信から20分以内の自分のメッセージの編集、転送、リアクション、投票と投票への回答、メンバーに通知されるピン留め、メッセージの自分だけまたは全員からの削除、チャットを既読にする操作に対応しています。
- チャットリスト。 チャットのミュート、アーカイブ、ピン留め、未読設定、メッセージへのスター付け、自分のデバイス上でのチャットの削除または消去ができます。チャット内の他の人には通知されません。
- コンピューターでの音声。 WhatsApp には音声認識機能がないため、
waはこのコンピューター上で音声モデルを実行します。モデルがダウンロードされるのは、必要なときだけです。 - 連絡先。 相手のプロフィール、ブロック、電話番号が WhatsApp に登録されているかどうか、スマートフォンのアドレス帳のストアへの取り込み、相手に付けた自分用の名前とメモに対応しています。
- アカウント。 自分の名前、プロフィール文、プロフィール写真(
wa personal account update)。 - プライバシー。 最終ログイン日時、オンライン状態、プロフィール写真、プロフィール文を見られる人、既読通知を送信するかどうか、グループへの追加を許可する相手、着信音を鳴らす相手を設定できます(
wa personal account privacy)。
写真と動画を合わせて1つのメッセージに添付するより多くのファイルには、まだ対応していません: wa ではまだ利用できません。
ログインとプロフィール
wa は WhatsApp Web と同じように、デバイスとしてアカウントにリンクします。パスワードも登録用アプリも不要です。スマートフォンから一度リンクするだけで、デバイスキーはあなたのユーザーだけが読み取れるファイルに保存されます。
wa personal session start # a QR code: WhatsApp → Settings → Linked devices → Link a device
wa personal session start phone # or your number, then a pairing code you type on the phone
wa personal account show # who this profile is linked as
wa account list # every profile here, and who each is linked as
wa personal session end # unlink, and delete the device keys here
複数のアカウントを使う場合はプロフィールも複数になります。プロフィールはオプションではなく、最初の単語です。
wa personal chats list # profile "personal"
wa work chats list # profile "work"
export WA_PROFILE=work # or for the whole shell session
wa がプロフィールを自動選択することはありません。プロフィールが1つしかない場合も同様です。アカウントを使うコマンドでプロフィールを指定しないと、処理を中止して、このコンピューター上のプロフィールを一覧表示します。プロフィールを指定するか、WA_PROFILE を設定してください。各プロフィールはそれぞれ独立したリンク済みデバイスであり、固有の接続を1つ持ちます。
詳細:リンク、デバイス、プロフィール · プロフィール
ローカルストアと検索
wa が受信した内容はすべて、tg および max と共有されるコンピューター上のローカルストアに保存されます。検索はこのストアを対象に実行され、データがコンピューター外に送信されることはありません。
wa personal search messages 'contract chat:"Project Alpha"'
wa personal store status # how much of each chat is kept
wa personal store export "Project Alpha" --format markdown --output alpha.md
wa personal messages evidence "Project Alpha" --json # bounded evidence for a chat brief
wa personal store backup ~/wa-backup.db # a copy, safe while the store is in use
管理するグループ
wa personal review chat:Hiking --unanswered # questions nobody answered
wa personal review 'chat:Hiking date>7d' # the week: decisions, promises, open questions
wa personal chats events Hiking 'time>=7d' # who joined, left, was added or removed, and by whom
wa personal chats inspect https://chat.whatsapp.com/AAAAAAAAAAAAAAAAAAAAAA # where an invite leads, without joining
wa personal stats chats show Hiking --offline # the group's activity, from the local store
wa personal chats create "Hiking 2027" 100000000000002@lid # a new group, with people you know
wa personal chats members add [email protected] 100000000000002@lid
wa personal chats update [email protected] --join-approval on
wa personal chats requests list [email protected]
グループ名や写真の変更、メンバーと管理者の管理、招待リンク、参加リクエスト、メッセージの送信やメンバーの追加を許可する相手の設定も、コマンドで行えます。変更はメンバーに表示されるため、それぞれの操作でプロフィールの権限と時間あたりの上限が適用されます。wa が追加できるのは、アドレス帳に登録されている相手、またはあなたがメッセージを送った相手だけです。WhatsApp は見知らぬ人を追加したアカウントを停止します。
詳細:グループ
エージェントのセットアップの詳細
スキル。 Claude Code は ~/.claude/skills/whatsapp-cli/ を読み込み、Codex と Gemini CLI は
~/.agents/skills/whatsapp-cli/ を読み込みます。スキルが認識されない場合は、新しいエージェントセッションを開始してください。
wa skill install --for all # both folders, without linking
wa skill show # the complete instructions, without installing them
MCP サーバー。 プロファイルの permissions によって、提供するツールが決まります。readonly にするとエージェントは何も変更できません。ask ではサーバーにフォームが表示されないため、エージェントアプリで承認を設定してください。
claude mcp add wa -- wa personal mcp serve # Claude Code, by hand
wa personal mcp check # check the local MCP server
ブラウザーから。 ChatGPT またはブラウザー版 Claude は、ターミナルでワンタイムアクセスコードを使ってログインした後、トンネル経由で wa personal mcp serve --http --public-url に接続します。
スクリプトとエージェント向けの出力
--json を指定すると、コマンドはデータのみを 1 つの JSON 値として出力します。--jsonl を指定すると、1 行ごとに 1 つのオブジェクトを出力します。すべてのリストの形式は次のとおりです。
{ "items": [ … ], "page": { "limit": 20, "has_more": true }, "meta": { … } }
エラーは 1 行で stderr に出力され、stdout は空のままになり、コマンドは固定の終了コードで終了します。4 はプロファイルのリンク、5 はプロファイルでこの操作が許可されていないこと、6 はチャットまたはメッセージが見つからないこと、8 は制限、12 は別のコマンドがデバイスを使用中であること、14 はメッセージが送信されたか不明であることを表します。wa commands --json はコマンドツリー全体を出力します。
詳細:CLI コントラクト · すべてのコマンドと終了コード
設定と権限
wa personal config set permissions.messages readonly # no change to messages from this profile
wa personal config set permissions.messages.send ask # a question in the terminal before each send
wa personal config set sends_per_hour 10 # at most 10 sends an hour (30 by default)
wa personal recipients add "Book club" # the first add turns the recipient list on
wa personal sends list # every attempt: sent, refused, failed or not known
wa personal config show # what is set, and where it came from
制限
各プロファイルには、すべてのコマンド、serve、MCP サーバーで共有されるリクエスト頻度の上限が 1 つ設定されているため、スクリプトが WhatsApp の禁止対象となる操作に近づかないようにできます。プロファイルが 1 時間に送信できるメッセージ数は、デフォルトで最大 30 件です。一度にプロファイルへ接続できるコマンドは 1 つだけです。別のコマンドは、serve が実行中でその接続を引き継ぐ場合を除き、終了コード 12 で拒否され、接続中のコマンド名が示されます。一括ダウンロード機能はありません。読み取りにはローカルストアのデータが返されます。
詳細:制限と待機時間
セキュリティ
- デバイスキーは、ユーザー本人のみが読み取れる 1 つのファイルに保存されます。これをコピーした人は、スマートフォンからデバイスを削除するまで、あなたとしてメッセージを読み書きできます。電話番号やペアリングコードを引数に取るコマンドはありません。
- ローカルストアには、受信した内容の全文が暗号化されずに保存され、ユーザー本人のみが読み取れます。
- コマンドからでも MCP 経由でも、送信はすべてプロファイルの制限を適用され、本文を含めずにジャーナルへ記録されます。
waが WhatsApp に送信する内容から、このツールが特定されることはありません。デスクトップブラウザーとして接続します。
脆弱性の報告:SECURITY.md。詳細:セキュリティ
問題が起きた場合
wa personal doctor # the engine, the device keys' file modes and who holds the connection
wa personal doctor --online # also connect once and read the account
wa personal runs list # recorded runs
詳細:症状別のトラブルシューティング · 診断
違い
wa は tg や max とコマンド、ストア、エージェントツールを共有しているため、どれか1つで学んだことをほかでも活用できます。WhatsApp には、次の3つの違いがあります。
- 履歴はスマートフォンから取得します。 WhatsApp のサーバーには取得できる履歴がありません。
waがリンクするときに、スマートフォンが最近のチャットを一度送信し、wa serveは新しいチャットを受信し続けます。WhatsApp を開いているスマートフォンに依頼すれば、1回につき50件ずつ、1つのチャットの古いメッセージを取得できます(wa personal messages sync)。読み取りは毎回ローカルストアから行われ、ネットワークには接続しません。 - デバイスごとに接続は1つです。 WhatsApp が許可する接続は1つだけです。
wa serveの実行中は、送信を含む同じプロファイルに対するほかのコマンドも、その接続を経由して実行されます。現時点では、Windows ではserveが停止するまでほかのコマンドは拒否されます。 - 非公式です。 BAN のリスクについては、このページ上部の警告をご確認ください。
waは「オンライン」や「入力中」を送信せず、依頼がない限り既読にもなりません。
WireCat の一部
WireCat は、AI エージェント向けのオープンソースでローカルファーストなコンテキストレイヤーです。wa は、Telegram 向けの tg や MAX 向けの max と並んで、同じローカルストアを使用します。
技術ドキュメント
すべてのページは docs/ にあります。
| ページ | 回答内容 |
|---|---|
| index | ドキュメントサイトのスタートページ:wa とは何か、最初の1分でできること、次に読むページ |
| installation | インストール方法と必要なもの |
| usage | リンク、読み取り、送信、メッセージの変更方法を順番に説明します |
| sessions | QRコードまたはペアリングコード、デバイスごとに1つの接続、プロファイル、リンク解除など、リンクの仕組み |
| archive | ローカルストアに保存される内容、その保存方法、エクスポートとバックアップの方法 |
| search | 単語、送信者、チャット、日付、ファイル、ラベルでメッセージを検索する方法、検索の保存方法、件数の確認方法 |
| attachments | ファイルの送信、保存、転送、そのテキスト、および音声メモのテキスト化 |
| query-language | すべての検索フィールド、演算子、プリセット、上限、JSON形式の回答 |
| groups | グループの状況を把握し、運営する方法 |
| people | 1人について:ストアに保存される情報、自分で付ける名前やメモ |
| mcp | ターミナルを使わずにClaude Desktop、Cursor、その他のクライアントを接続する方法 |
| remote | ログインとトンネルを介して、ブラウザー上でChatGPTやClaudeを使う方法 |
| bot | MetaのCloud APIを使うWhatsApp Business番号:セットアップ、送信、テンプレート、Webhookによる受信 |
| recipes | エージェントに日々何をしてもらえるか、スケジュールを設定して実行する方法 |
| commands | すべてのコマンド、オプション、終了コード — プログラムから自動生成 |
| configuration | 一般的な動作を設定する方法 |
| permissions | プロファイルで読み取れる内容、事前確認が必要な操作、そのまま実行できる操作 |
| profiles | 1台のコンピューターで複数のアカウントを使う方法と、コマンドがアカウントを選ぶ仕組み |
| configuration-reference | すべてのキー、デフォルト値、スコープ、変数 |
| cli-contract | コマンドの呼び出し、出力、エラー、ヘッドレス実行、制限、プレビュー |
| limits | 制限、待機時間、デバイスごとに1つの接続 |
| compare · web | wa はwacli、whatsapp-mcp、mudslide、Cloud APIとどう違い、どのような場合に別のツールが適しているか |
| diagnostics | コマンドが行った処理と、記録されない情報 |
| troubleshooting | うまく動かないとき:画面に表示される内容と対処方法 |
| security | wa がコンピューターに保存する内容と、起こりうる問題 |
| roadmap | 今後の予定 |
| 各バージョンの変更内容:CHANGELOG.md。 |
開発
pnpm install
pnpm lint && pnpm typecheck && pnpm test
pnpm engine:build && pnpm engine:test # the Go engine; needs Go
pnpm generate # rewrites docs/commands.md from the command tree
bin/wa personal chats list # config, state and device under .wa/; a worktree's store too
WhatsApp 固有ではないもの(コマンド、ストア、送信ガード、MCP サーバー)はすべて、 tg および max と共有する cli-core にあります。
詳細:ARCHITECTURE · TESTING
貢献
プルリクエスト、バグ報告、アイデアを issues で歓迎します。
WhatsApp、その他のメッセンジャー、AI エージェントを使ったカスタム自動化については、[email protected] までお問い合わせください。
ライセンス
CLI は Apache-2.0 です。エンジンは異なります。エンジンを含む engine/ 内の Go プログラムと、エンジンを含む
@wirecat/whatsapp-engine-* パッケージは、GPL-3.0-only です。これは、エンジンが whatsmeow を介して、GNU General Public License 3.0 の下で提供される
go.mau.fi/libsignal にリンクしているためです。両者は別々のプログラムです。wa はエンジンを子プロセスとして起動し、stdin と stdout のみを介して通信します。各エンジンパッケージには、ソースの場所が記載され、リンクしているすべての Go モジュールが THIRD_PARTY_NOTICES に一覧表示されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。