Claude Codeには「変化があった時だけAIが起きる」仕組みがあります。
hooks(イベント発火スクリプト)とchannels(外部通知の受け口)を使えば、何も変わってない時のトークン消費がゼロになります。
定期チェック(/loop)からイベント駆動に切り替えるだけで、長時間の監視タスクのトークン効率がガラッと変わりますね。
3つの仕組みを、かんたんなものから順に見ていきます。
この記事はClaude Codeを使い始めた人で、トークンの無駄打ちを減らしたい人向け(CLI操作の基本が分かれば読めます)。
Claude Codeの定期チェックとイベント駆動、何が違う?
Claude Codeの「監視」には、2つのやり方があります。
1つ目が「ポーリング」(一定間隔で何度も様子を見に行く方式)。
Claude Codeの /loop という機能を使うと「5分ごとにビルドの状態を見て」みたいな定期実行ができます。
便利なんですが、問題もあります。
ビルドが終わってなくても、エラーが出てなくても、5分ごとにClaude Codeが起きてチェックしますよね。
「何も変わってません」という報告のために、毎回トークンを使うわけです。
地味にもったいない。
2つ目が「イベント駆動」(変化が起きた時だけ動く方式)。
Claude Codeの「hooks」と「channels」がこれにあたります。
hooksは「Claude Codeの中で何かが起きた時」に発動するスクリプト。
channelsは「外のシステムからClaude Codeに通知を送る」パイプラインです。
どっちも、変化がない時はトークンを一切使いません。
| /loop(ポーリング) | hooks / channels(イベント駆動) | |
|---|---|---|
| 動くタイミング | 設定した間隔で必ず動く | 変化があった時だけ動く |
| 変化なしの時 | チェックして「変化なし」と報告。トークン消費あり | 何もしない。トークン消費ゼロ |
| 反応速度 | 最大で設定間隔ぶん遅れる | 変化した瞬間に反応。ほぼリアルタイム |
| セットアップ | 「/loop 5m ○○して」の1行 | hooks: 設定ファイル。channels: プラグイン |
| 向いてる用途 | 通知手段がない時の代替 | CI、ログ監視、チャット連携 |
たとえるなら、/loopは「5分ごとに郵便受けを見に行く」。
channelsは「手紙が届いたらチャイムが鳴る」。
Web技術でいうHTTPポーリング → WebSockets(サーバーから能動的にメッセージを送れる仕組み)への進化と同じですね。
Claude Codeのイベント駆動はどんな場面で使える?
CIが終わったら教えてもらう(ビルド監視)
コードをプッシュして、CI(コードを保存するたびに自動でテストや配信を回す仕組み)が走ってる間。
今までは /loop で「CIの結果を5分ごとにチェックして」と頼んでました。
CIが10分で終わるなら、最初の1回は確実に「まだ終わってません」で無駄打ちです。
channelsを使えば、CIが完了した瞬間にClaude Codeに通知が届きます。
GitHubのCIが終わったらそのまま結果がClaude Codeに流れてくる仕組みですね。
エラーが出た瞬間に対応する(ログ監視)
hooksのPostToolUse(Claude Codeが何かツールを実行した直後に走るフック)を使うと、Claude Codeが何かを実行した後に自動でスクリプトを走らせられます。
たとえば、Claude Codeがサーバーを起動したあと、ログファイルにエラーが書き込まれた瞬間にフックが発動して、Claude Codeに「エラー出たよ」と知らせる。
5分おきにログを見に行くんじゃなくて、エラーが出た瞬間に気づけます。
これが「イベント駆動」の本質ですね。
スマホからClaude Codeに指示を送る(チャット連携)
私はchannelsの中でこれが一番おもしろいと思ってます。
channelsはTelegram、Discord、iMessageに対応しています。
スマホのTelegramからClaude Codeにメッセージを送れます。
外出先から「さっきのPRどうなった?」って聞いたら、自宅のPCで動いてるClaude Codeが答えて、Telegramに返事が来ますね。
ポーリングで「PRの状態を5分ごとにチェック」なんてやる必要がなくなります。
聞きたい時に聞けばいい。
私はhooksのNotification(作業完了通知)を導入済みで、Claude Codeが作業を終えたタイミングでデスクトップ通知が届くように設定してます。
これだけでも「終わったかな」と覗きに行く回数が激減しました。
/loopでのビルド監視は正直トークンがもったいないと感じていて、channels経由のイベント駆動に寄せていきたいと思ってます。
Claude Codeのhooksとchannelsに必要なものは?
Claude Code v2.1.72以上が必要です。
channelsとscheduled tasksはv2.1.72以降で対応しています。
hooksはそれ以前のバージョンでも使えますね。
claude --version でバージョンを確認できます。
Claude CodeのサブスクリプションはPro(月額$20)以上、またはAPI(外部から呼び出せる接続口)の従量課金でも利用できます。
channelsはclaude.aiログインが必要で、APIキー認証では使えません。
Bun(高速なJavaScript実行環境。
Node.jsの代替)はchannelsのプラグインを動かすために必要になります。
Claude Codeに「Bunをインストールして」と頼めば1行で終わりますね。
追加料金はありません。
hooks、channels、/loop、すべてClaude Codeのサブスク内で使えます。
Claude Codeでイベント駆動の監視を設定する手順は?
方法1: /loop(ポーリング)— まずはここから
一番シンプルです。Claude Codeを開いて、こう入力するだけ。
/loop 5m デプロイが完了したか確認して、結果を教えて
これで5分ごとにClaude Codeがデプロイ状態をチェックしてくれます。
間隔は「5m」(5分)「1h」(1時間)「30s」(30秒、ただし内部で1分に丸められる)で指定できますね。
指定しなければデフォルトで10分間隔になります。
期待結果: 設定後、Claude Codeが自動で5分おきにチェックを始めます。
状態が変わったら結果を返してきますね。
詰まりどころ: 止めたい時は「ループを止めて」とClaude Codeに言えばOKです。
ポーリングなのでトークン効率は最高ではないんですが、セットアップが1行で終わるのが強みですね。
方法2: hooks(イベント駆動)— 設定ファイルに書く
hooksは「Claude Codeの中で特定のイベントが起きた時に、自動でスクリプトを実行する」仕組みです。
設定ファイル(settings.json。
Claude Codeの動作を記述するJSON形式の設定ファイル)にフックの内容を書きますね。
Claude Codeに「Notificationフックを設定して。
Claude Codeが何か許可を求めてきた時に、デスクトップ通知を出すようにして」と伝えれば、設定ファイルを自動で書いてくれます。
使えるイベントは多数ありますが、代表的なものは以下の5つです。
PreToolUse: ツール実行の「前」に発動。
危険なコマンドをブロックしたい時に使えます。
PostToolUse: ツール実行の「後」に発動。
ファイルが変更されたら自動テストを走らせる、みたいな使い方ですね。
Notification: Claude Codeが入力待ちになった時に発動。
「作業終わったよ」の通知に使えます。
Stop: セッション終了時に発動。ログ保存や片付け処理に向いてます。
SubagentStop: サブエージェント(並列作業用のAI)が終了した時に発動します。
期待結果: 設定後、対応するイベントが起きるたびに自動でスクリプトが走ります。
Notificationなら作業完了の瞬間にデスクトップ通知が出ますね。
詰まりどころ: hooksのcommandタイプはローカルで動くスクリプトなので、トークンを使いません(promptタイプやagentタイプのhooksはLLMを呼び出すためトークンを使います)。
タイプの違いに注意してください。
方法3: channels(外部からの通知)— 最もトークン効率が高い
channelsは「外のシステムからClaude Codeにメッセージを送り込む」仕組みです。
現在対応しているのはTelegram、Discord、iMessageの3つ。
加えて、webhook(外部サービスから決まったURLに通知を投げる仕組み)を受け取るカスタムチャンネルも作れますね。
Telegramの場合、セットアップはこんな感じです。
Claude Codeに「Telegramチャンネルをセットアップして」と伝えますね。
TelegramのBotFather(Telegram公式のbot作成用アカウント)でボットを作り、トークンをClaude Codeに渡します。
Claude Codeを --channels オプション付きで再起動すれば、Telegramからメッセージを送れるようになりますね。
期待結果: 設定後、TelegramからClaude Codeにメッセージを送ると、自宅のPCで動いてるClaude Codeが返事を返してきます。
詰まりどころ: channelsはまだ「リサーチプレビュー」(正式リリース前の試験公開)の段階です。
仕様が変わる可能性はあるんですが、使える状態にはなってますね。
Claude Codeのイベント駆動でよくある疑問は?
Q. /loopとchannels、どっちを使えばいい?
迷ったら /loop から始めてほしいです。
1行で設定できて、すぐ動きますね。
ただし、監視対象が「通知を送れるシステム」(GitHub CI、Slack、チャットアプリ等)なら、channelsに移行するとトークンを節約できます。
通知手段がない場合は /loop しか選択肢がないので、そのまま使えばOKですよ。
Q. hooksでトークンはどのくらい節約できる?
hooks自体はトークンを使いません。
ローカルでシェルスクリプトが動くだけです。
節約量は「hooksがなかったら何回/loopでチェックしていたか」に依存しますね。
たとえば5分間隔で1時間チェックしていたら12回分のトークンが浮く計算です。
長時間の監視タスクほど、差が大きくなります。
Q. channelsはセッションを閉じても動く?
動きません。
channelsもhooksも、Claude Codeのセッションが開いている間だけ有効です。
セッションを閉じると全部止まりますね。
セッションを閉じても動き続ける監視がほしい場合は、Cloud scheduled tasks(クラウド上で動くスケジュールタスク)やGitHub Actions(GitHub上で自動実行できるワークフロー)を使う方法があります。
Q. 日本語で使える?
使えますよ。
/loopのプロンプトは日本語で書けますし、channelsからのメッセージも日本語で送れます。
hooksの設定ファイルはJSON形式で書くのでそこだけ英語ベースですが、Claude Codeに「こういうhooksを設定して」と日本語で頼めば、JSONを自動で書いてくれますね。
Claude Codeのイベント駆動で知っておくべき注意点は?
channelsはリサーチプレビュー(正式リリース前の試験公開)の段階です。
仕様が変わる可能性があるので、本番運用は正式リリースを待ったほうが安全ですね。
セッションが開いてないと動きません。
/loop、hooks、channelsすべて、Claude Codeを閉じると停止します。
常時監視が必要な場合は、Cloud scheduled tasks(セッション不要、クラウドで動く)を検討してほしいです。
channelsのセキュリティは要注意です。
外部からClaude Codeにメッセージを送れる仕組みなので、送信者の制限(allowlist。
許可リスト)が大事になりますね。
初期設定ではペアリングしたアカウントだけが送信できますが、使う前に設定を確認してほしいです。
/loopには7日の期限があります。
7日で自動削除されるので、長期の監視には向きませんね。
ここで大事なのは、この仕組みが「AIエージェント(みずから考えて作業を進めるAI)の効率化」の本質を突いてることです。
AIは「動いてるけど何もしてない」時間がコストになります。
イベント駆動にすれば、AIは必要な時だけ動いて、あとは眠ってる。
人間が「何かあったら起こして」と言って寝るのと同じですね。
これがAIツールのスタンダードになっていくと思ってます。
Claude Codeのトークン節約、まず何からやるべき?
まずは /loop で定期チェックをやってみてほしいです。
1行で動きますし、効果がすぐわかりますね。
次に、hooksの通知機能を入れると「作業終わったよ」が自動で届くようになって、ラクになります。
Claude Codeに「Notificationフックを設定して」と言えば、30秒で設定完了です。
channelsは正式リリースを待ってからでもいいんですが、Telegramを使ってる人なら私は今すぐ試す価値があると思います。
このページに出てきた言葉
- hooks(フック)
- Claude Codeの中で特定のイベントが起きた時に、自動で走るスクリプトの仕組み
- channels(チャンネル)
- 外部のシステム(Telegram等)からClaude Codeにメッセージを送り込むパイプライン
- /loop
- Claude Codeを一定間隔で自動実行させるコマンド。1行で動く
- ポーリング
- 変化があってもなくても、一定間隔で何度も様子を見に行く方式
- イベント駆動
- 変化が起きた瞬間だけ動く方式。何もない時はゼロコスト
- CI
- Continuous Integration。コードを保存するたびに自動でテストや配信を回す仕組み
- PostToolUse
- hooksの一種。ツール実行の直後に走るフック
- settings.json
- Claude Codeの動作を書き込む設定ファイル。JSON形式
- Bun
- 高速なJavaScript実行環境。Node.jsの代わりに使える
- webhook
- 外部サービスが決まったURLに通知を投げる仕組み
- BotFather
- Telegram公式のbot作成用アカウント。トークンを発行できる
- リサーチプレビュー
- 正式リリース前の試験公開。仕様変更の可能性あり
- allowlist
- 送信を許可するアカウントのリスト。セキュリティ設定で重要
参考リンク
- Claude Code公式 — Run prompts on a schedule: https://code.claude.com/docs/en/scheduled-tasks
- Claude Code公式 — Push events with channels: https://code.claude.com/docs/en/channels
- Claude Code公式 — Notification hooks: https://code.claude.com/docs/en/common-workflows#get-notified-when-claude-needs-your-attention
※この記事の内容は執筆時点のものです。AIは進化が速い分野のため、最新の仕様は公式サイトでご確認ください。