0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

codex実行完了時に通知が届くようにしたい(macOS向け)

Posted at

はじめに

※ 本記事はmacOS環境を前提としています(terminal-notifierを使用します)

実行に時間のかかるプロンプトを投げた際、ちまちま実行結果を確認するのが辛かったので、以下のOpenAIの公式ドキュメントを参考に、実行完了を通知するようにカスタムしました。

画面右上に以下画像のような通知が表示されるようにしました。
また、通知をクリックするとVSCodeを前面表示するような設定をしています。

スクリーンショット 2026-01-05 16.54.44.png

terminal-notifierのインストール

terminal-notifierを使用します。
未インストールの場合は導入してください。

homebrewを使用する場合は以下のコマンドでインストールできます。

brew install terminal-notifier

インストールができたかの確認

which terminal-notifier

以下のコマンドでterminal-notifierが機能することを確認

terminal-notifier -title "terminal-notifier" -message "test"

以下のような通知がでてこればOKです。

スクリーンショット 2026-01-05 22.39.44.png

通知がでてこない場合、macのシステム設定 > 通知 > terminal-notifierが許可されているか、確認してください。

スクリーンショット 2026-01-05 23.45.34.png

config.tomlの設定

codexの設定ファイル~/.codex/config.tomlに、通知用コマンドを追記します。
path/to/notify.pyは後述のPythonスクリプトの配置パスに置き換えてください。

notify = ["python3", "path/to/notify.py"]

codex通知用のコード(python)

ファイル名はnotify.pyで作成しています。
codexからJSONを受け取り、通知種別がagent-turn-completeの場合のみterminal-notifierを使用して通知を行うようにしています。
-activateでクリック時に表示するエディタを指定しています。
以下ではVSCodeのBundleIDを指定していますが、VSCode以外で設定したい場合は適宜任意のBundleIDに置き換えてください。

私はpythonの知識を持ち合わせていないので、この処理はcodexと会話しながら作成しました。

#!/usr/bin/env python3
import json
import subprocess
import sys


def main() -> int:
    if len(sys.argv) != 2:
        return 1

    try:
        notification = json.loads(sys.argv[1])
    except json.JSONDecodeError:
        return 1

    # Codex の処理完了時のみ通知
    if notification.get("type") != "agent-turn-complete":
        return 0

    title = "Codex"
    message = "codexの処理が完了しました"

    thread_id = notification.get("thread-id", "")

    subprocess.run(
        [
            "terminal-notifier",
            "-title", title,
            "-message", message,
            "-group", "codex-" + thread_id,
            "-activate", "com.microsoft.VSCode",
        ],
        check=False,
    )

    return 0


if __name__ == "__main__":
    sys.exit(main())

動作確認

codexを実行する前に、スクリプト単体で通知が出るか確認できます。

python3 path/to/notify.py '{"type":"agent-turn-complete","thread-id":"test"}'

設定した文言で通知が表示され、通知をクリックしVSCodeがアクティブになれば成功です。
同様の通知がcodex実行完了時にも来るようになっていると思います。

おわりに

処理時間が読めないプロンプトを投げると、完了するまでついターミナルやエディタを何度も確認してしまいがちでした。
今回通知を仕込んだことで、ちまちま実行結果を確認することから解放され、さっとやることを切り替えて他の作業を進められるようになった気がしています。
小さな工夫ですが、日常的に使うツールほど、こうした改善の積み重ねが効いてくると感じています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?