npx -y cc-safety-net@latest install --cursor を実行します。グローバルな Cursor のフック設定 ~/.cursor/hooks.json に preToolUse フックが 1 つ追加され、すべてのプロジェクトの Cursor IDE と Cursor CLI のセッションが保護されます。その後、npx cc-safety-net doctor を実行してフックが有効か確認してください。このフックはフェイルクローズです。つまり、フックが判定を出せなかったツール呼び出しを Cursor は拒否します。
Cursor に CC Safety Net をインストールする
1
インストーラーを実行する
2
フックが有効か確認する
doctor の出力で Cursor の行は Detected、Configured、Verified になります。
Cursor のインストールで変わること
インストーラーは、~/.cursor/hooks.json の "version": 1 ドキュメント内の hooks.preToolUse に、次のエントリを書き込みます。
Cursor のフックがチェックする内容
フックは Cursor のShell ツール呼び出しをチェックし、各コマンドを実行前に解析します。Cursor の working_directory は、ワークスペースのルート内になければなりません。このフィールドが宣言されているのに値がない場合や、ルートの外を指している場合、フックは呼び出しを拒否します。
Cursor でチェックが失敗したときの動作
エントリにfailClosed: true が設定されているため、フックが判定を出せなかったツール呼び出しを Cursor は拒否します。フックの timeout は 30 秒です。
Cursor から CC Safety Net をアンインストールする
~/.cursor/hooks.json のそれ以外の部分はそのまま残ります。
ネイティブ Cursor プラグインがディスク上にある場合は、それも削除します。cursor-agent plugin marketplace remove cc-safety-net を実行し、~/.cursor/plugins/ 以下のプラグインのファイルを削除したうえで、レポートに次の内容を追加します。
Cursor で CC Safety Net を実行するほかの経路
Cursor が CC Safety Net を実行する経路は、ほかに 2 つあります。install --cursor はどちらも設定しません。フックが設定されている状態でどちらかの経路も動くと、Cursor はツール呼び出しを毎回 2 回チェックします。doctor はどちらの経路も報告しますが、Cursor が実際にそれを実行しているかどうかは判別できません。
Claude Code プラグイン経由の Cursor
Claude Code プラグインには、同じfailClosed フックを持つ Cursor 用プラグインも含まれています。Cursor は Claude Code のプラグインを取り込むときにこれを実行します。取り込み元は <home>/.claude だけなので、この経路では CLAUDE_CONFIG_DIR と CLAUDE_CODE_PLUGIN_CACHE_DIR が無視されます。
install --cursor のフックも設定されている場合、doctor は次のように表示します。
doctor は Cursor を Configured として数え、Cursor がこのプラグインを実行するのは Claude Code のプラグインを取り込んでいる間だけだと警告します。Cursor が取り込みをやめたら、install --cursor を実行してください。この場合、update は npx フックを追加せず、インストールのセレクターには Cursor が already installed と表示されます。
ネイティブ Cursor プラグイン経由の Cursor
CC Safety Net は、cursor-agent を使ってネイティブ Cursor プラグインとして Cursor に追加することもできます。この場合、プラグインは個人マーケットプレイスとして Cursor アカウントに登録されます。Cursor はマーケットプレイスのプラグインを追加時のコミットに固定するため、cc-safety-net update で新しいリリースに移すことはできません。npx フックなら、呼び出しのたびに最新のリリースを解決します。
doctor は、ダウンロードされたプラグインのファイルが ~/.cursor/plugins/cache/cc-safety-net 以下にあれば、このプラグインを数えます。ただし Cursor はプラグインをアンインストールした後もこれらのファイルを残すため、ファイルがあってもプラグインが動いている証拠にはなりません。install --cursor のフックも設定されている場合、doctor は次のように表示します。
doctor は Cursor を Configured として数えます。そのうえで、プラグインが有効かどうかを確認できないこと、update ではプラグインを更新できないことを警告します。cursor-agent の /plugins で CC Safety Net がインストール済みと表示されない場合は、install --cursor を実行してください。この場合、update は npx フックを追加しません。
Cursor のフックのトラブルシューティング
doctorがフックエントリの変更を警告する。 自分またはほかのツールが、管理対象エントリのtimeoutやfailClosedなどを編集しています。install --cursorを再実行すると書き直されます。警告の一覧は管理対象フックの設定ずれにあります。doctorがFailed to parse Cursor hooks configを報告する。~/.cursor/hooks.jsonが有効な JSON ではありません。ファイルを修正してから、インストールを再実行してください。フック設定のパースエラーを参照してください。- セレクターで Cursor が
CLI not installedと表示される。 セレクターはcursor --versionを実行し、失敗するとcursor-agent --versionを実行します。どちらかをPATHに追加してください。