cc-safety-net gui を実行すると開きます。判定の確認、JSON を書かずに行うポリシーの編集、プロジェクトポリシーの下書き、コーディングエージェントごとのフックのインストールができます。
元になる形式については、ポリシー、カスタムルール、監査ログを参照してください。
ダッシュボードを起動する
--no-open を指定します。サーバーは Ctrl-C で停止するまでフォアグラウンドで動作します。フラグとエラーについては gui を参照してください。
ローカルループバックに限定されている
サーバーは127.0.0.1 だけで待ち受けるため、ネットワーク上のほかのマシンからは接続できません。起動のたびに URL に新しいトークンが埋め込まれ、トークンのないリクエストをサーバーは拒否します。以前の起動時にブックマークした URL は使えなくなるので、cc-safety-net gui を再実行してください。
gui はトークンを標準出力に出力します。そのため、cc-safety-net gui を自分で実行したエージェントはトークンを持っており、プロジェクトポリシーの適用を含めてダッシュボードを操作できます。ただし、エージェントが policy.json を直接編集する操作や cc-safety-net policy apply を実行する操作は、引き続き CC Safety Net が拒否します。
ページが読み取るのは、ローカルのポリシーファイルと監査ログだけです。概要画面は開いたときに、資格情報を含まないリクエストを外部へ 2 つ送ります。npm レジストリでの更新確認と、GitHub でのリポジトリの公開スター数の取得です。GitHub でスター は、クリックしたときだけ gh のログインを使います。
6 つの画面
画面ごとにアドレスが決まっていて、アクティビティ画面と保護画面の絞り込みもアドレスに保持されます。そのため、再読み込みしても「戻る」で戻っても復元されます。
保存済みのポリシーが次のいずれかの状態にあるときは、すべての画面の上部にバナーが表示され、状態ごとに 1 行ずつ並びます。
Command protection is off: built-in destructive command rules are not enforced. Catastrophic and custom rules still apply.Secret protection is off: sensitive files and deny paths are not blocked.A fallback configuration is being enforced: <reason>
概要
概要画面は直近 7 日間を集計します。保持期間が 7 日より短い場合は、保持期間全体を集計します。 状態カード。 画面上部のカードには、保存済みのポリシーにもとづいて次のいずれかの見出しが表示されます。
Needs attention。 対応が必要な項目があるときだけ表示される一覧です。各項目は対応する場所へのリンクです。
ガードのエラーは、CC Safety Net がコマンドのチェックを完了できなかったためにブロックしたものです。繰り返し発生する場合はトラブルシューティングを参照してください。
アクティビティ
アクティビティ画面には、エージェントが実行したコマンドが新しい順に表示されます。画面は直近 7 日間を表示した状態で開き、監査ログの保持期間までさかのぼれます。 シークレットのマスク処理が認識するのは既知の資格情報の形式だけなので、エントリにはパス、ホスト名、各種の名前が残ることがあります。この画面の内容を共有する前に、シークレットのマスク処理を読んでください。絞り込み
判定の絞り込みは既定でBlocked で、ガードのエラーも含みます。Likely false positive は、失敗ステージが記録された拒否か、同じセッション内で 2 回以上拒否されたコマンドがある場合に表示されます。Search commands or rule IDs の欄は、大文字と小文字を区別せずに、ルール ID とコマンド文字列に対して照合します。
一覧に読み込むのは判定ごとに新しい順で最大 500 件ですが、件数とタイルは常に対象期間全体を集計します。古いエントリを見るには期間を狭めてください。一部のログファイルを読み取れなかった場合はフッターにその旨が表示され、一覧と件数のどちらも不完全になります。
エントリごとの操作
行を選ぶと、コマンド全体、理由、ルール、フォルダーを確認できます。誤検知を報告する
Report false positive は、プロジェクトの誤検知報告フォームから公開の GitHub Issue を用意します。どの項目も事前に編集できます。 ダイアログは、プロジェクトのパスを<project> に、ホームディレクトリを ~ に置き換えます。それ以外のパスや名前は残るため、公開したくない内容は編集で取り除いてください。GitHub 上で自分が送信するまで、何も送信されません。
保護
保護画面では、CC Safety Net の組み込みの保護で何をブロックするかを選びます。対象は安全プリセット、破壊的コマンドのルール、シークレット保護のルールです。自作のルールブックはカスタムルール画面にあります。上部のMy policy と Project policy で、編集するポリシーを切り替えます。
/ を押すと、ルール名、ID、説明、保護対象のパスでルールを検索できます。Changed from default を選ぶと、自分または環境変数が変更したルールだけが表示されます。
保存済みと未保存
編集内容は、Save を押すまで下書きとして溜まります。Save はユーザーポリシーファイルを書き込みます。下書きは同じブラウザーセッション内なら再読み込みしても残ります。 保存済みのポリシーにエラーがある間は、フォームに組み込みの既定値が表示され、Save は無効になります。既定値でファイルを上書きしないためです。先に修復してください。プロジェクトポリシーを下書きする
Project policy を押すと、保護画面はプロジェクトの policy.json の下書きに切り替わります。このファイルは、そのフォルダーで作業する全員に、各自のポリシーの上に重ねて適用されます。下書きの対象はダッシュボードを起動したフォルダーで、Change folder… で別のフォルダーを選べます。
コントロールを編集すると
Project の印が付きます。印を付けたパスのリストは空の状態から始まるため、個人的なパスがリポジトリに書き込まれることはありません。
Save は Review and apply に変わります。ダイアログには、書き込み先のパス、実効ポリシーの Setting / Now / After の表、そして下書きが自分のポリシーより弱くする設定ごとの警告が表示されます。警告の一覧は報告される緩和にあります。Apply project policy を押すまで、何も書き込まれません。
自分のポリシーファイルにエラーがある間は、Repair your policy first と表示されて下書きを開始できません。ユーザーの .cc-safety-net/ があるフォルダーにも書き込めません。ユーザー設定ディレクトリはプロジェクトではないを参照してください。
この下書きは cc-safety-net policy apply と同じチェックを行います。2 つのポリシーのマージ方法はプロジェクトポリシーを参照してください。
コマンドを試す
Test a command では、シェルコマンドを実行せずに、ブロックされるかどうかを確認できます。判定には未保存の編集内容とカスタムルールブックが使われるため、保存する前に変更を確かめられます。プロジェクトの下書き中は、自分のポリシーに下書きを重ねた状態で判定します。
ブロックされる場合は、ルール ID、理由、複合コマンドのうちブロックされた部分が表示されます。ターミナルで同じ確認をするには explain を使います。
安全プリセット
Standard、Strict、Paranoid からプリセットを選びます。後のプリセットは前のプリセットの内容をすべて含みます。各プリセットで何が変わるかはモードを参照してください。 環境変数が保護を強めている場合は、An environment variable raises protection beyond these settings: に続けてその変数が表示されます。このとき CC Safety Net は、表示中のプリセットより多くをブロックすることがあります。
折りたたまれた Advanced settings のカードでは、プリセットを変えずに Fail closed、Paranoid rm -rf checks、Paranoid interpreters をそれぞれ From preset、Always on、Always off に設定できます。同じカードに Allow discarding local changes in linked git worktrees もあります。
コマンド保護
Command protection のパネルには、組み込みの破壊的コマンドのルールがカテゴリごとに並びます。Always on のグループは致命的な操作に対するルールで、オフにはできません。Strict または Paranoid のバッジは、そのプリセットが必要なルールを示します。
値がプリセットから来ていない場合は、注記で理由が示されます。
ブロックされたコマンドを 1 つだけ許可したい場合は、パネル全体ではなく、ここでそのルールをオフにしてください。ブロックされたコマンドを許可するを参照してください。
Reset all は、パネル内のすべてのルールをプリセットの値に戻します。
シークレット保護
Secret protection のパネルも同じ作りで、ルールはSensitive file names、Coding agent credentials などのカテゴリに分かれています。特定のパスを保護するルールでは、情報ボタンでそのパスを一覧できます。
Coding agent settings のルールは既定でオフで、Off by default と表示されます。1 つずつ有効にしてください。理由は Coding CLI 設定階層を参照してください。ブロックされたファイルを 1 つだけ許可するには、ブロックされたファイルを許可するを参照してください。
例外と追加のパス
Exceptions and extra paths のパネルには、3 つのパスのリストがあります。各項目は絶対パスか、~/ で始まるパスで指定します。ホームディレクトリとその上位のフォルダーは拒否されます。複数行を貼り付けると、まとめて追加できます。
各リストがどんな項目を受け付けるかは、許可パス、拒否パス、シークレットの許可パスを参照してください。
ポリシー JSON
折りたたまれた Policy JSON のカードは、フォームが保存するポリシーを読み取り専用で表示します。ファイルにエラーがある間はディスク上のファイルの内容そのものを、プロジェクトの下書き中は適用で書き込まれるファイルそのものを表示します。修復
ポリシーファイルにエラーがあると、保護画面にエラーの内容とRepair ボタンが表示されます。修復は有効な設定をすべて残し、無効な設定を破棄します。ファイルが JSON として読み取れない場合は、既定値に戻します。
ポリシーを完全にリセットするには、設定の Reset policy を使います。
カスタムルール
カスタムルール画面には、自分で書いたルールブックが、現在適用されている状態で読み取り専用で表示されます。CC Safety Net がダッシュボードからルールブックを書き込むことはありません。代わりに、ルールを書かせるコーディングエージェントへ渡すプロンプトを組み立てます。ルールブックの形式はカスタムルールを参照してください。ルールブックの一覧(読み取り専用)
各ルールには、照合するコマンド、custom.<name> の ID、理由、ブロックの条件となる引数が表示されます。オーバーライドで無効にしたルールは一覧に表示されません。ルールブックがない場合は、Create a rule か npx -y cc-safety-net rule init が案内されます。
Problems
Problems の欄は、報告すべき内容があるときだけ表示されます。ここにエラーがある場合、CC Safety Net はそのルールブックをスキップしており、そのルールは 1 つも適用されていません。作ったルールが効かないときは、ここを確認してください。Create a rule(コピーのみ)
Create a rule は、ルールを書かせるためにコーディングエージェントへ渡すプロンプトを組み立てます。This project か All projects を選び、What should be blocked? に欲しいルールを書いて、Copy prompt を押します。
ルールが照合するのはコマンド、そのサブコマンド、正確な引数で、ファイルパスは照合しません。ファイルやフォルダーをブロックするには、例外と追加のパスの Always block access to に追加してください。
生成されるプロンプトは、cc-safety-net スキルを使うよう、スキルがない場合は npx -y cc-safety-net rule doc を使うようエージェントに指示します。
エージェント
エージェント画面では、このマシン上の各コーディングエージェントについて、CC Safety Net のフックをインストールまたは削除します。ダッシュボードを使わない各エージェントのセットアップはインストールを参照してください。
操作が失敗すると、行の下にコマンドの出力とともに
Install failed または Uninstall failed が表示されます。エージェントをインストールした後や、その設定を手で編集した後は、Refresh agents を押してください。
設定
外観。Theme の選択は、言語の選択と一緒にダッシュボードが保存します。ポリシーには含まれません。
監査ログ。 Keep logs for で、監査レコードを保持する日数を 1 から 365 の範囲で設定します。変更した時点で保存されます。ポリシーの修復が必要な間、プロジェクトの下書き中、保護画面に未保存の変更がある間は、Retention unchanged と表示されて変更できません。保持期間を参照してください。
ファイル。 ユーザーポリシーのパスと、プロジェクトポリシーが効いている場合はそのパスが表示されます。プロジェクトポリシーが自分の設定を緩めている場合は、変更点が 1 つずつ表示されます。これらの変更を拒否する方法はプロジェクトの緩和を無視するを参照してください。
Danger zone。 Reset policy は、ポリシーファイルを既定値に置き換えます。プロジェクトの下書き中は使えません。
ダッシュボードの表示言語
サイドバーの下部にある言語メニューで、ダッシュボードの表示を英語、日本語、簡体字中国語(简体中文)に切り替えられます。言語を選ぶまでは、ブラウザーの言語設定に従い、対応していない言語の場合は英語で表示します。ブロックの理由、ルール ID、サーバーのエラーは英語のままです。 選んだ言語とテーマは、~/.cc-safety-net/ 内の gui.json に保存されます。$CC_SAFETY_NET_HOME が設定されている場合は、そのディレクトリに保存されます。どちらの選択も再起動後に引き継がれ、ポリシーには含まれません。