CodexのHooksは、Codexが作業する前後に自動チェックを差し込む仕組みです。非エンジニアの初心者は、難しい自動化機能としてではなく「Codexに付ける安全確認係」と考えると理解しやすくなります。

Hooksでできること
Hooksを使うと、Codexがツールを実行する前、実行した後、セッションを開始した時などに、自分で決めた処理を走らせられます。たとえば、危険な削除コマンドを止める、作業ログを残す、毎回の作業ルールを読み込ませる、といった使い方ができます。
| フック | タイミング | 初心者向けの使い方 |
|---|---|---|
| PreToolUse | ツール実行前 | 危険なコマンドを止める |
| PostToolUse | ツール実行後 | 結果やログを確認する |
| SessionStart | セッション開始時 | 毎回のルールを読み込ませる |
| UserPromptSubmit | 依頼文の送信時 | APIキーや個人情報の貼り付けを検知する |
| Stop | 終了直前 | 確認漏れを防ぐ |

最初はPreToolUseだけでいい
初心者が最初に使うべきなのはPreToolUseです。理由は、Codexが操作する前に止められるからです。作業後に気づくより、実行前に危ない操作を止めるほうが安全です。
設定方法
まず、~/.codex/config.toml に次の設定を入れます。
[features]
codex_hooks = true次に、~/.codex/hooks.json を作ります。以下は、Bashコマンドを実行する前に確認用スクリプトを動かす例です。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "python3 ~/.codex/hooks/check_command.py",
"statusMessage": "コマンドを確認中"
}
]
}
]
}
}具体例:危険なコマンドを止める
~/.codex/hooks/check_command.py に次のようなスクリプトを置くと、削除や強制リセットのような危険なコマンドを止められます。
import json
import sys
data = json.load(sys.stdin)
command = data.get("tool_input", {}).get("command", "")
danger_words = ["rm -rf", "git reset --hard", "git checkout --"]
if any(word in command for word in danger_words):
print(json.dumps({
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "deny",
"permissionDecisionReason": "危険なコマンドのため停止しました。"
}
}, ensure_ascii=False))needs reviewが出たとき
Hooks画面にneeds reviewと出るのは、最近追加または変更されたフックをCodexがまだ信頼していない状態です。見るべき場所は、通常~/.codex/hooks.jsonです。commandに書かれたスクリプトが自分で作ったものか、外部送信や削除をしていないかを確認します。
まとめ
Codex Hooksは、初心者にとって「高度な拡張機能」ではなく「安全確認を自動化する仕組み」です。最初はcodex_hooks = trueを有効にし、PreToolUseで危険なBashコマンドを止めるところから始めるのが現実的です。


