bedtime-device-guard について
bedtime-device-guard は、設定した現地時間帯に Codex のプロンプトを制限し、macOS または Windows のデバイスレベルのスケジュールも任意で設定できます。利用時間を管理したいユーザー向けです。Codex フックは読み込みと信頼が必要で、他のアプリは制限しません。
主な機能
- 01現地時間帯に Codex のプロンプトを制限
- 02時間帯とタイムゾーンの設定
- 03インストール・検証・削除スクリプト
- 04任意のデバイス警告とシャットダウン予定
- 05他のフック設定の保持
活用シーン
- 01設定した夜間に Codex のプロンプトを制限
- 02デバイスの現地タイムゾーンで時間帯を設定
- 03ガードの状態確認やスケジュール更新
- 04より広い制限に向けたシステムスケジュールの追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ arthurzakirov/ agentdesk --skill bedtime-device-guardインストール後、Claude Code で/bedtime-device-guardを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/codex-hook-contract.mdscripts/bedtime_guard.pydevice_guard.pyinstall_guard.pyinstall-device-macos.pyinstall-device-macos.shinstall-device-windows.ps1install-macos.shinstall-windows.ps1tests/test_bedtime_guard.py詳細
Bedtime Device Guard
バンドルされている UserPromptSubmit フックを使用して、設定した現地時間帯に Codex のプロンプトを拒否します。このフックはローカルで時刻を判定し、許可された時間帯には何も出力しないため、モデルのコンテキストやトークン使用量は増えません。
このガードが適用されるのは、ユーザーフックを読み込んで信頼する Codex の環境に限られます。オペレーティングシステムの制限、シャットダウンのスケジュール設定、ルーターのルール、スマートフォンの制御と併用する一つの対策として扱ってください。別のアプリもブロックできる、または管理者が本気で削除しようとしても阻止できる、と主張しないでください。
デバイスレベルのスケジュール設定
オプションのネイティブスケジュールは Codex フックより広い範囲に適用され、保存していない作業が破棄される可能性があります。インストールする前に、ユーザーが強制シャットダウンを希望していることを確認してください。スケジュールされた各アクションは実行前に現在の現地時間帯を再確認するため、スリープや実行の集約によってジョブが遅れて実行されても、設定された終了時刻を過ぎていれば何も行いません。
macOS では、ユーザーの LaunchAgent を 3 つインストールします。開始時刻前の警告、開始時刻のシャットダウン要求、Mac がまだ動作している場合に 2 分後に実行する強制的な GUI ログアウトです。次のコマンドでインストールまたは管理できます。
bash skills/bedtime-device-guard/scripts/install-device-macos.sh install \
--start HH:MM --end HH:MM --timezone local --warning-minutes 10
bash skills/bedtime-device-guard/scripts/install-device-macos.sh verify
bash skills/bedtime-device-guard/scripts/install-device-macos.sh uninstall
シャットダウン要求には macOS の System Events を使用するため、初回にユーザーが「オートメーション」へのアクセスを許可する必要がある場合があります。ログアウトのフォールバックは意図的に強制的なもので、この許可とは無関係に動作します。
Windows では、ユーザー単位のネイティブなスケジュールされたタスクを 2 つインストールします。警告と shutdown.exe /s /f /t 0 です。PowerShell から実行します。
& skills/bedtime-device-guard/scripts/install-device-windows.ps1 install `
-Start HH:mm -End HH:mm -Timezone local -WarningMinutes 10
& skills/bedtime-device-guard/scripts/install-device-windows.ps1 verify
& skills/bedtime-device-guard/scripts/install-device-windows.ps1 uninstall
緊急時の連絡手段には、個別に制限されたデバイスを使用してください。これらのスケジュールには、コンピューター上でのバイパス手段は意図的に用意されていません。
インストール
インストール時に、ユーザーのスケジュールとタイムゾーンを選択してください。個人情報をこのリポジトリに追加しないでください。
macOS または Linux の場合:
bash skills/bedtime-device-guard/scripts/install-macos.sh \
--start HH:MM --end HH:MM --timezone local
Windows PowerShell の場合:
& skills/bedtime-device-guard/scripts/install-windows.ps1 `
--start HH:MM --end HH:MM --timezone local
local はコンピューターに設定されているタイムゾーンを使用し、外部のタイムゾーンデータへの依存を避けます。Python の zoneinfo データベースに含まれていれば、Etc/UTC のような IANA タイムゾーンも使用できます。インストーラーはスケジュールをユーザーの Codex ホーム内だけに保存し、フックをそこにコピーして、無関係なキー、イベント、グループ、ハンドラーを置き換えることなく、管理対象のハンドラーを 1 つ hooks.json にマージします。
インストール後:
- 必要に応じて
codex features enable hooksで Codex フックを有効にします。 - Codex を起動し、プロンプトが表示されたら新しいフックを確認して信頼するか、
/hooksを使用します。 - 開いている Codex セッションを再起動し、フック設定を再読み込みします。
Codex では、インストーラーが自身の実行可能なフックを黙って承認することはできません。フックが無効になっている場合や、信頼されていない場合、この対策は動作しません。
検証
現在のマシンで、設定を変更しない検証ツールを実行します。
python3 skills/bedtime-device-guard/scripts/install_guard.py verify
Windows では、python3 を py -3 に置き換えます。
就寝時間を待たずに動作を確認するには、インストール済みのフックを --now と現地時間の ISO タイムスタンプを指定して実行します。このテスト専用の時刻指定で設定が変更されることはありません。
python3 "$HOME/.codex/bedtime-device-guard/bedtime_guard.py" \
--config "$HOME/.codex/bedtime-device-guard/config.json" \
--now 2030-01-01T23:00:00
ブロックされるかどうかの確認では、簡潔な JSON 判定が出力されます。許可される場合は何も出力されません。
スケジュールの更新
新しい値を指定して、インストーラーを再実行します。インストールは冪等です。管理対象のスクリプトと設定を更新し、このスキルが管理するフックハンドラーだけを置き換えます。
アンインストール
どちらのプラットフォームでも、共通インストーラーを直接使用します。
python3 skills/bedtime-device-guard/scripts/install_guard.py uninstall
Windows では、python3 を py -3 に置き換えます。アンインストールでは、管理対象のハンドラーと空になったマッチャーグループのみを削除し、それ以外のフック設定はすべて保持して、このスキルが所有するインストール済みディレクトリを削除します。Codex フックを全体的に無効にすることはありません。
安全性と制限事項
- 既存の
hooks.jsonを変更する前にバックアップし、アトミック書き込みを使用してください。 - 不正な時刻や開始時刻と終了時刻が同じ場合は、推測せずに拒否してください。
- 直接の時計チェックを信頼できる唯一の情報源として使用してください。スリープ、再起動、ジョブの実行漏れによって古くなる可能性のあるスケジュール済みマーカーに置き換えないでください。
- フックにフレーズベースのバイパスを追加しないでください。ローカル設定の編集またはターミナルからのアンインストールによって、引き続き復旧できます。
- 現行のCodexリリースでは、フックを起動できない場合、クラッシュした場合、タイムアウトした場合、または信頼されていない場合、フェイルオープンになります。より強固なデバイスレベルの制御は、このフックとは独立して維持してください。
フックの出力またはhooks.jsonの構造を変更する場合は、references/codex-hook-contract.mdをお読みください。