npx -y cc-safety-net@latest install --grok-build を実行すると、PreToolUse のフックファイル ~/.grok/hooks/cc-safety-net.json が 1 つ書き込まれ、すべてのツール呼び出しが最初に CC Safety Net を通るようになります。続けて npx cc-safety-net doctor を実行し、フックが有効か確認してください。Grok Build のフックはフェイルオープンです。フックがクラッシュしたりタイムアウトしたりすると、その呼び出しはそのまま実行されます。
Grok Build に CC Safety Net をインストールする
1
インストーラーを実行する
2
フックが有効か確認する
Grok Build のインストールで変わること
インストーラーは、次の管理対象のPreToolUse エントリを ~/.grok/hooks/cc-safety-net.json に書き込みます。GROK_HOME が設定されている場合は $GROK_HOME/hooks/cc-safety-net.json です。
- このエントリにはマッチャーがありません。そのため
run_terminal_commandだけでなく、すべてのツール呼び出しがフックに届きます。 - そのファイルにある、CC Safety Net の管理対象外のフックはそのまま残ります。
- ファイルをパースできない場合、インストールはファイルを置き換えます。Grok Build はパースできないフックファイルを読み飛ばすため、そのファイルには機能するフックがもともとありません。
Grok Build のフックが検査する内容
run_terminal_command、run_terminal_cmd、monitor、bash、Shellの呼び出しはシェルコマンドとして解析し、それぞれのシェルの方言を自動判定します。- ファイル系ツールとパッチ系ツールについては、ツール入力に保護対象のパスが含まれていないかを検査します。
- Grok Build が入力を切り詰めた呼び出しは拒否します。Grok Build はツール入力を 128 KB で切り詰めるため、途中で切れたコマンドはフックで解析できません。
bash と Shell は、workdir または working_directory で独自のディレクトリを指定できます。そのディレクトリも存在し、ワークスペースルートの内側にある必要があります。どちらかのディレクトリがルートの外にある場合や解決できない場合、フックは呼び出しを拒否します。
Grok Build のチェックが失敗したときの動作
Grok Build のフックはフェイルオープンで、Grok Build にはfailClosed の設定もありません。ツール呼び出しをブロックできるのは明示的な拒否だけです。フックがクラッシュした場合、タイムアウトした場合、不正な形式の出力を返した場合は、その呼び出しはそのまま実行されます。切り詰められた入力や使えない作業ディレクトリなど、フック自身が捕捉した失敗では、フックが拒否を出力します。
Grok Build から CC Safety Net をアンインストールする
cc-safety-net.json に他に何も残らなければファイルを削除し、パースできないファイルには手を触れません。
Grok Build のトラブルシューティング
Grok Build が CC Safety Net のフックを読み飛ばす場合
Grok Build は、disabled-hooks ファイル(~/.grok/disabled-hooks または $GROK_HOME/disabled-hooks)に載っているフックをすべて読み飛ばします。このファイルに CC Safety Net のフックが載っている場合、doctor は次のように表示します。
/hooks メニューでフックを有効にしてください。disabled-hooks を読み取れない場合、doctor は Cannot read <path>, so doctor cannot tell whether Grok Build skips the hook と警告したうえで、フックを設定済みとして報告します。
管理対象のエントリが変更された
管理対象のエントリを自分で、または別のツールが編集した場合、doctor は設定ずれの警告を表示します。install --grok-build をもう一度実行して書き直してください。