PaPoo
cover

Hookify import error: No module named 'hookify' が出るとき、まず見るところ

Claude Code で hookify を入れたあと、ツール呼び出しやセッションイベントのたびに Hookify import error: No module named 'hookify' が出るなら、まずこの症状に当てはまっている可能性があります。issue の報告では、PreToolUse / PostToolUse / UserPromptSubmit / Stop の各フックで同じ import error が繰り返し出て、しかも処理自体は止まらないとされています。つまり、表面上は動いているように見えても、hookify のルール評価は実際には走っていませんでした。
該当する報告は #81448 と #69665 です。

issue の内容だけを見ると、このエラーは「インストールが完全に失敗した」というより、「フックの実行時に hookify 自身を import できず、そこで黙って抜ける」タイプです。#69665 では、ImportError を捕まえて sys.exit(0) しているため、失敗は致命的ではない一方で、ユーザーからは見えにくいと説明されています。結果として、ルールは評価されず、ただ systemMessage だけが毎回出ます。

筆者の環境では settings ファイルの有無は次の通りでした。少なくとも、今回の確認範囲では設定ファイル自体は見つかっていません。

[settings_structure]
~/.claude/settings.json: (存在しない)
/mnt/vda5/git/papoo/newsbot_openai/.claude/settings.json: (存在しない)
/mnt/vda5/git/papoo/newsbot_openai/.claude/settings.local.json: (存在しない)

このエラーの原因については、issue 内でかなり具体的な説明が付いています。#69665 では、hooks/pretooluse.py が from hookify.core.config_loader import load_rules を行い、その前に sys.path を調整して「Python が hookify パッケージを見つけられるようにする」と書かれている一方、実際のインストール先がバージョン付きのディレクトリになっているため、その import 契約が崩れる、と整理されています。報告にある通り、hookify という名前のディレクトリであることを前提にしているのに、キャッシュ側の配置がそれと一致していない、という見立てです。

同じ issue では、別配布元の hookify ではこの問題が出ていないとも述べられています。つまり、少なくとも報告内容からは「hookify というプラグインそのものが常に壊れている」のではなく、入れ方や配布元によって再現したりしなかったりする可能性があります。ここは重要で、同じ名前のプラグインでも配布形態の違いで import の前提が変わる、という話です。

なお、#81448 の報告では「毎回エラーは出るが、処理はブロックされない」と明記されています。なので、もしあなたのケースでも「Claude Code は動き続けるが、hookify のルールが効いている気配がない」「毎回同じ import error が流れる」という状態なら、症状としてはかなり近いです。逆に、単発で一度だけ出た、あるいは hookify 以外の別エラーが混ざっているなら、この issue 群と同一とは言い切れません。

確認できている範囲で言えるのはここまでです。根本修正のコード差分や、どの版に取り込まれたかまでは、こちらで一次情報として確かめた出力がないため断定しません。少なくとも issue 上では、この import error は hookify のフック実行時に繰り返し出る再現性の高い問題として扱われていました。


検証環境

OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-10-20T08:56:10+09:00

参照した Issue(anthropics/claude-code): #81448, #69665

同じ著者の記事