Claude Code: claude --settings <ファイル> で hook を差し込み、自分の設定を書き換えない
外部ツールから Claude Code の状態(作業中・入力待ちなど)を知りたいとき、~/.claude/settings.json を書き換えずに、起動時に --settings で hook 入りの設定ファイルを追加で読ませる。
どんな場面で使う?
- 複数の Claude Code セッションを一覧するアプリ/ターミナル(Herdr や MUX0 のようなもの)を自作するとき
- 一時的に計測用・通知用の hook を足したいが、普段の設定やチームの共有設定は汚したくないとき
手順
- 差し込みたい hook だけを書いた設定ファイルを用意する(例:
/tmp/status-hooks.json)
json
{
"hooks": {
"UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "my-status working" }] }],
"Stop": [{ "hooks": [{ "type": "command", "command": "my-status idle" }] }],
"Notification": [{ "hooks": [{ "type": "command", "command": "my-status waiting" }] }]
}
}- ラッパーから
claude --settings /tmp/status-hooks.jsonで起動する - hook が書き出した状態(ファイル・ソケットなど)を表示側のアプリが読む
注意点
--settingsは既存の設定に「追加で」読み込まれる。同じ項目を複数の場所に書いたときにどれが効くかは公式の設定ページで確認する- hook のコマンドはセッションの権限で動く。外部から渡すファイルの中身は自分で管理する
- 作者の報告では、この方式で20セッション並べてもアプリ自身の CPU は6.9%、切り替えは100ms以内
- 関連: Herdr: エージェント向けターミナルマルチプレクサ、Claude Code: 「〜したら〜して」はルールではなく hooks(settings.json)に書く