Claude Code、Codex、Gemini CLI の完了通知などの設定を生成します。
完了通知に使うフックは、返信が終わったときなど、決まったタイミングで AI エージェントが実行する短いコマンドです。この無料ツールが、フックや標準機能の設定を作成します。
エージェント、通知がほしいタイミング(返信が終わったとき、またはあなたの許可が必要なとき)、通知方法を選んでください。このページが必要な設定コードを生成し、保存先のファイルを示します。そのファイルのコピーに設定を統合することもできます。Claude Code には Stop と Notification のフックを、Codex と Gemini CLI にはそれぞれ専用の設定を生成します。入力した内容がブラウザの外に送られることはありません。
通知を選びます。
以下の選択には JavaScript が必要です。無効の場合は、最も一般的な設定を表示します。Claude Code の返信が終わったときや、対応が必要になったときに Mac のバナーで知らせる設定です。
生成した設定を確認します。
「返信が終わったとき」「対応が必要なとき」の少なくとも一方を選んでください。
Mac のバナー通知には、フックが不要な場合があります。スマホへの通知、読み上げ、通知音のみの通知には、以下で生成したフックを使ってください。iTerm2、Ghostty、Kitty では、Claude Code の返信が終わったときや対応が必要になったとき、あなたがターミナルを見ていないと判断されると、標準機能でデスクトップ通知が表示されます。iTerm2 では、Settings > Profiles > Terminal も開き、Notification Center Alerts にチェックを入れ、Filter Alerts をクリックして Send escape sequence-generated alerts をオンにしてください。フックはこの標準通知と並行して動くため、両方を使うと通知が2回来る場合があります。
Mac のバナー通知には、フックが不要な場合があります。スマホへの通知、読み上げ、通知音のみの通知には、以下で生成したフックを使ってください。Codex の標準のターミナル通知は、デフォルトでオンになっています。Codex のドキュメントによると、この通知にはエスケープシーケンスが使われ、一部のターミナルではデスクトップ通知として表示されます。そのため、お使いのターミナルですでに表示されているかもしれません。選んだタイミングだけに通知を絞るには、以下の [tui] の設定を使ってください。これらは Mac 上の通知を制御する設定です。スマホ通知用のフックの代わりにはなりません。
Mac のバナー通知には、フックが不要な場合があります。スマホへの通知、読み上げ、通知音のみの通知には、以下で生成したフックを使ってください。Gemini CLI の標準通知は、iTerm2、WezTerm、Ghostty、Kitty ではデスクトップ通知として表示されます。実験的な機能で、デフォルトではオフです。Gemini CLI の /settings > General > Enable Notifications でオンにしてください。この標準通知と以下のフックは、どちらか一方を使ってください。両方を使うと通知が2回来ます。
Codex の標準通知でベルを鳴らします。
任意:Codex の標準機能で Mac に通知します。
保存先:~/.codex/config.toml
ファイルにすでに [tui] セクションがある場合は、[tui] の行をもう一度追加しないでください。既存のセクション内で、以下のキーがすでにあれば値を変更し、ないものだけを追加してください。[tui] の見出しや同じキーを重複して書くと、Codex がファイルを読み込めなくなります。
ベルの動作はターミナルによって異なります。Terminal では、Settings > Profiles > Advanced > Bell を開くと、音、バッジ、Dock アイコンのバウンドを選べます。
選んだ通知方法のフックを設定します。
保存先:~/.claude/settings.json~/.codex/hooks.json~/.gemini/settings.json
ファイル内の "hooks" オブジェクトに、既存の項目を残したまま、これらの項目を追加してください。ファイル全体を置き換えないでください。ほかの設定や、ほかのツールのフックが含まれている場合があります。設定ファイルは厳密な JSON 形式なので、コメントや末尾のカンマは使えません。簡単に済ませるには、下の統合欄に現在のファイルの内容を貼り付けてください。
これらをファイルに新しい項目として追加してください。Cowork Island やほかのツールも同じファイルに書き込むことがあるため、ファイル全体を上書きしないでください。下の統合欄を使うと、既存の内容を保ったまま追加できます。その後、Codex を開いて /hooks と入力し、新しい項目をそれぞれ信頼する設定にしてください。それまでは、新規または変更されたフックは Codex によってスキップされます。
ファイル内の "hooks" オブジェクトに、既存の項目を残したまま、これらの項目を追加してください。下の統合欄も使えます。Gemini CLI のフックが出力できるのは JSON だけなので、各コマンドは最後に {} を出力します。
既存の内容を残したまま、この設定をファイルに追加してください。下の統合欄も使えます。
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "/usr/bin/osascript -e 'on run argv' -e 'display notification (item 1 of argv) with title (item 2 of argv) subtitle (item 3 of argv) sound name \"Glass\"' -e 'end run' 'Claude Code finished' 'Claude Code' \"${PWD##*/}\""
}
]
}
],
"Notification": [
{
"matcher": "permission_prompt|elicitation_dialog|elicitation_url_dialog",
"hooks": [
{
"type": "command",
"command": "/usr/bin/osascript -e 'on run argv' -e 'display notification (item 1 of argv) with title (item 2 of argv) subtitle (item 3 of argv) sound name \"Funk\"' -e 'end run' 'Claude Code needs you' 'Claude Code' \"${PWD##*/}\""
}
]
}
]
}
}
- Claude Code では、許可を求める通知や、接続したツールからの入力リクエストの通知は、プロンプトが表示されてから約6秒後に届きます。文字を入力すると、通知はさらに遅れます。これは Claude Code の Notification フックの動作です。ほかの質問では、このフックが実行されない場合があります。
- 完了通知には Stop を使います。長いタスクが終わったときだけでなく、Claude が返信を終えるたびに実行されます。Claude の処理を中断したときには実行されません。
- Claude Code は、ワークスペースを信頼するかどうかのダイアログで同意するまで、そのフォルダのフックを実行しません。職場の Mac では、組織が指定したフックだけが許可されている場合があります。
- これはフックではなく、Claude Code の標準設定を使います。タスクが終わったときと、許可を求めるプロンプトが応答を待っているときの両方が対象です。Claude Code の
/config> Local notifications でも設定できます。ベルの動作はターミナルによって異なります。Terminal では、Settings > Profiles > Advanced > Bell を開いてください。 - Gemini CLI の実験的な標準通知をオンにし、ベルを使うように設定します。対応が必要なときと、セッションが完了したときの両方が対象です。
- PermissionRequest の項目はバックグラウンドで実行され、許可するかどうかは判断しません。Codex には通常どおり承認プロンプトが表示されます。
- これらのフックと Gemini CLI の標準通知(
/settingsの Enable Notifications)は、どちらか一方を使ってください。両方を使うと通知が2回来ます。 - Gemini CLI のドキュメントによると、無料枠と Google One のユーザーは、2026年6月18日に Antigravity CLI に移行しました。ここで生成する設定は Gemini CLI 用です。
- すでに開いているセッションに変更が反映されない場合は、そのセッションを再起動してください。
任意:代わりに Codex の notify 設定でバナーを表示します。
Codex の notify 設定は、ターンが完了するたびに1つのプログラムを実行します。承認時には実行されません。使う場合は、上の Stop の項目を追加しないでください。両方を使うと、同じ返信に対してバナーが2回表示されます。
1. これを ~/.codex/notify-macos.js として保存してください。
Codex はこの設定で ~ を展開しないため、完全なパスを指定する必要があります。Terminal で echo $HOME を実行すると確認できます。
2. この行を ~/.codex/config.toml に追加してください。
上の欄にユーザー名を入力してください。入力するまでは、設定行に YOUR_NAME と表示されます。
- 1つのファイルに書ける
notifyの行は1行だけです。すでにある場合は、2行目を追加しないでください。ファイルを読み込めなくなります。代わりに、上の Stop フックを使ってください。 - ファイルの上部にある、
[で始まる最初の行より前に追加してください。[tui]などのセクション見出しの下に置くと、Codex はそのセクションの一部として読み取り、この設定を無視します。 - Cowork Island は
notifyを使わないため、この行とアプリの設定が競合することはありません。
Terminal でテストしてください:
ランダムな名前の ntfy トピックを使います。
ntfy.sh のトピックは公開されています。トピック名を知っている人や推測できた人は、送信された内容を読めます。パスワードと同じように扱ってください。そのため、このトピック名はブラウザが生成するランダムな32文字で構成されています。また、フックが送るのは「Claude Code が完了しました」などの固定メッセージだけです。エージェントの返信やファイルの内容は送信しません。
スマホに ntfy アプリをインストールし、このトピックを購読してください。ntfy.sh は第三者が提供する無料サービスで、1日に送信できるメッセージ数には独自の上限があります。
動作をテストします。
この行を Terminal に貼り付けて Return を押してください。フックが実行するのと同じコマンドが実行され、トピックにテストメッセージが1件送信されます。
/usr/bin/osascript -e 'on run argv' -e 'display notification (item 1 of argv) with title (item 2 of argv) subtitle (item 3 of argv) sound name "Glass"' -e 'end run' 'Claude Code finished' 'Claude Code' "${PWD##*/}"
ベルをテストします。
この行を Terminal に貼り付けて Return を押してください:
printf '\a'
スクリプトエディタの通知を許可してください。これらのバナーは、macOS のスクリプトエディタアプリから表示されます。macOS は事前に許可を求めません。許可するまでは何も表示されず、理由も示されません。テスト用の行を一度実行してから、「システム設定」>「通知」を開き、「スクリプトエディタ」を探して「通知を許可」をオンにしてください。
現在のファイルに統合します。
現在のファイルの内容をすべて貼り付けると、このページが新しい項目を追加します。すでにあるフックの項目は、ほかのツールや Cowork Island のものも含めて、そのまま残ります。標準機能の設定を選んだ場合は、以前の値を新しい値に置き換え、変更した項目を表示します。同じ選択内容で2回統合しても、同じ項目が重複して追加されることはありません。貼り付けた内容は、このページ内にとどまります。
統合には JavaScript が必要です。無効の場合は、上の説明に従って手動で項目を追加してください。
この選択では、ここで統合する項目はありません。上の説明に従って、~/.codex/config.toml に設定を追加してください。
テキストエディタでファイルを開き、内容をすべて選択してコピーし、ここに貼り付けてください。ファイルがまだない場合は、空欄のままにしてください。
Cowork Island と併用する場合。
このツールと同じ制作者による Mac アプリ、Cowork Island も、Claude Code、Codex、Gemini CLI に接続すると、同じファイルに独自の項目を追加します。これらの項目は、既存のフックと共存します。アプリは、コマンドのどこかに /.perch/ が含まれている項目を、大文字・小文字を問わず自分の項目とみなします。削除や再追加は、個々のコマンドではなく、項目全体を単位として行います。
- ここで生成する設定コードは、それぞれ独立した項目で、
~/.perch/内を参照しません。そのため、Cowork Island を再インストールしたり、連携をオフにしたりしても変更されません。 - ここで生成したコマンドを Cowork Island の項目内に貼り付けたり、自分のスクリプトを
~/.perch/に保存したりしないでください。アプリが自分のものとみなしてしまいます。 - 連携がオンの間は、Cowork Island の項目を手動で削除しないでください。次にアプリが起動すると、再び追加されます。
- 両方のフックは並行して動作します。Claude Code と Codex は、条件に合うフックをすべて同時に実行します。Gemini CLI は、すべてのフックが終わるまで待ちます。
- Claude Code で許可を求めるプロンプトを通知する際は、Notification イベントを使い、PermissionRequest フックは使いません。そのため、あなたの代わりにリクエストへ回答することはありません。
- Gemini CLI 向けには、AfterAgent と Notification のフックを生成します。BeforeTool フックは生成しません。
入力内容の扱いを確認します。
すべての処理はブラウザ内で行われます。このジェネレーターはネットワーク通信を行わず、何も保存せず、Cookie も設定しません。選択、入力、貼り付けした内容が、このページの外に送られることはありません。「コピー」をクリックしたときだけ、クリップボードに書き込みます。ntfy のトピック名は、ブラウザ内蔵の乱数生成機能で作成します。このサイトのほかのページと同様に、ページへのアクセス自体は、プライバシーポリシー(英語)に記載された方法で集計されます。
設定不要の方法もあります。
Cowork Island は、このツールと同じ制作者による Mac アプリです。AI エージェントのセッションをノッチ下のパネルに集め、それぞれの状態を表示するので、どのセッションに対応が必要かをひと目で確認できます。ノッチの有無にかかわらず動作します。
- Claude Code と、アプリが Mac で見つけたツールは、自動的に接続されます。Codex は、「設定」でオンにし、Codex 側で Cowork Island のフックを許可するまでオフのままです。
- 各セッションに状態が表示され、あなたの対応を待っているときは「要対応」と表示されます。デフォルトでは、そのセッションのターミナルやアプリがすでに最前面にある場合を除き、アイランドが自動で開きます。
- セッションが完了すると、デフォルトではアイランドが5秒間開きます。
- Claude Code では、アイランドで操作を許可または拒否したり、選択式の質問に回答したりできます。アイランドでの回答は無料です。ほかのツールでは、そのツールのアプリやターミナルで応答が必要になる場合があります。
- サウンドは、自分でオンにするまでオフのままです。「承認が必要」のサウンドは無料で、「セッション完了」のチャイムは Pro の機能です。アプリ独自の macOS バナーは表示しません。
無料プランでは、一度に1枚のセッションカードが表示されます。Pro ではすべてのセッションが表示され、セッションのウインドウ、タブ、ペインに戻るジャンプも Pro の機能です。Pro の7日間試用が自動で始まり(Mac 1 台につき1回)、支払い情報は不要です。プランとインストールガイドをご覧ください。
無料でダウンロード情報源。
- Claude Code ドキュメント:フックのリファレンス
- Claude Code ドキュメント:フックのガイド
- Claude Code ドキュメント:ターミナルの設定
- Claude Code ドキュメント:設定のリファレンス
- Codex ドキュメント:フック
- Codex ドキュメント:詳細設定
- Codex ドキュメント:設定のリファレンス
- Gemini CLI ドキュメント:フックのリファレンス
- Gemini CLI ドキュメント:通知
- Gemini CLI ドキュメント:設定のリファレンス
- Mac 自動化スクリプトガイド:通知の表示
- Terminal ユーザガイド:詳細設定
- ntfy ドキュメント:メッセージの送信
- Cowork Island のよくある質問とインストールガイド
情報源の確認日:2026年10月18日。このツールは Cowork Island の制作者が作成しています。訂正については、support@coworkisland.com にメールするか、GitHub で Issue を作成してください。