npx -y cc-safety-net@latest install --droid を実行すると、~/.factory/hooks.json に PreToolUse フックが 1 つ追加され、すべてのツール呼び出しが最初に CC Safety Net を通るようになります。続けて npx cc-safety-net doctor を実行し、フックが有効か確認してください。Factory Droid のフックはフェイルオープンです。クラッシュ、タイムアウト、npx が見つからない場合は、その呼び出しはそのまま実行されます。
Factory Droid に CC Safety Net をインストールする
1
インストーラーを実行する
2
フックが有効か確認する
Factory Droid のインストールで変わること
インストーラーは、~/.factory/hooks.json の最上位にある PreToolUse 配列に、次の管理対象エントリを書き込みます。
- このエントリにはマッチャーも
commandRegexもありません。そのためExecuteだけでなく、すべてのツール呼び出しがフックに届きます。 - インストールは、
hooks.json内の他のキー、フックイベント、PreToolUseエントリをすべてそのまま残します。~/.factory/settings.jsonと旧形式の~/.factory/hooks/hooks.jsonには書き込みません。 - Droid は
hooks.jsonのコメントと末尾のカンマを受け付けます。インストールとアンインストールは通常の JSON として書き戻すため、コメントは残りません。
新しい Factory Droid の hooks.json にインストールが引き継ぐフック
Droid はhooks.json ができると、旧形式の ~/.factory/hooks/hooks.json を読まなくなります。また、hooks.json に PreToolUse があると、~/.factory/settings.json の PreToolUse が隠れます。そこで hooks.json がまだない場合、インストールはまず旧形式のファイルからすべてのフックイベントを引き継ぎます。旧形式のファイルに PreToolUse のフックがなければ、代わりに settings.json の PreToolUse のフックを引き継ぎます。既存のフックはそのまま動き続けます。
Factory Droid のフックが検査する内容
- コマンドを実行するツールは
Executeだけです。フックはそのシェルの方言を自動判定します。 - その他のツールについては、ツール入力に保護対象のパスが含まれていないかを検査します。
Factory Droid のチェックが失敗したときの動作
Factory Droid のフックはフェイルオープンです。ツール呼び出しをブロックできるのは、終了コード 2 と明示的な拒否の判定だけです。0 でも 2 でもない終了コード、クラッシュ、タイムアウト、npx が見つからない場合は、その呼び出しはそのまま実行されます。CC Safety Net が拒否するときは終了コード 2 で終了するため、別のフックが許可を返しても拒否は覆りません。
エンタープライズ設定の allowManagedHooksOnly が有効な場合、Droid はユーザーとプロジェクトのフックを無視します。そのため、install --droid が書き込むフックは実行されません。
Factory Droid での保護範囲の制限
フックの動作は、Execute とファイル系ツールで検証済みです。Task のサブエージェント、Loop、自動化ツールの呼び出しがフックに届くかどうかは、まだ検証していません。
Factory Droid から CC Safety Net をアンインストールする
settings.json から引き継いだフックは残るため、アンインストール後に有効なフックはインストール前と同じになります。
Factory Droid のトラブルシューティング
読み込んだファイルに問題があると、インストールは何も書き込まずに停止し、そのファイルを示します。hooks.json のパースエラーは、doctor が Error (Factory Droid): <message> の形で表示し、終了コード 1 で終了します。コメントがあるだけではパースエラーになりません。ファイルを修正してから、インストールをやり直してください。
フックのエントリが変更されていると
doctor が警告した場合は、インストールをやり直してください。警告の一覧は管理対象フックの設定ずれにあります。