Skip to main content
cc-safety-net gui はローカルダッシュボードを開きます。このマシン上の判定を確認し、JSON を手作業で編集せずにポリシーを変更できます。ブロックされた操作、その理由、変更可能な設定を確認できます。 このページでは、ダッシュボードでできることと、破壊的な操作を説明します。基礎となる形式は繰り返しません。policy.json の schema はポリシー、rulebook の作成はカスタムルール、監査 record の schema は監査ログを参照してください。

ダッシュボードを起動する

このコマンドはダッシュボードの URL を出力し、既定のブラウザーで開きます。
ブラウザーを起動せずに URL だけを取得する場合は、--no-open を指定します。SSH 経由、container 内、または特定の browser profile に URL を貼り付ける場合に使います。
--no-open は、-h, --help 以外で使用できる唯一の flag です。その他の引数は Usage: cc-safety-net gui [--no-open] と non-zero exit code で拒否されます。 ブラウザーを起動できなくても、処理は失敗しません。コマンドは原因となった error の後に Open this URL manually: <url> を出力し、server の提供を続けます。server は Ctrl-C で停止するまで foreground で動作します。

ローカル loopback の範囲

ダッシュボードは hosted service ではありません。server は local loopback interface だけで listen します。
  • server は一時 port の 127.0.0.1 だけに bind します。LAN 上の他の machine からは接続できません。
  • 起動するたびに、新しい random token を生成して URL に埋め込みます。すべての request はこの token を含む必要があります。state を変更する request は request header にも token を含める必要があります。token がない request は 403 で拒否します。
  • response には cache-control: no-store を設定します。
ページはデータ取得のために outbound request を行いません。表示する内容はすべて、ローカルのポリシーファイルと監査ログから取得します。例外は、opt-in の update check と、Overview に表示する GitHub star action だけです。
token は起動ごとに変わるため、以前の session で保存した URL は使えません。cc-safety-net gui を再実行して、新しい URL を取得してください。

6 つのビュー

sidebar には 6 つの画面があります。hash routing を使うため、同じ session 内で link または bookmark を作成できます。 認識できない hash は Overview へ fallback します。Integrations と Rules は、最初に開いたときにデータを読み込みます。

概要

Overview は lifetime total ではなく、保持対象の期間を要約します。対象は過去 7 日間です。保持期間が 7 日未満の場合は、保持期間全体を対象にします。見出しには使用した期間を Last N day(s) と表示します。 Tile。 BlockedAnalyzed の 2 つの counter を表示します。それぞれに、古い日から新しい日の順に並ぶ日別 sparkline があります。各 sparkline は個別の最大値を基準にするため、2 つの tile を bar の高さで比較できません。数値を確認してください。 Protection status。 safety level を表示し、override が preset と異なる場合は · Customized を追加します。有効なルール数と機密情報保護の状態も表示します。この card が反映するのは保存済みの状態だけです。Policy 画面で変更した未保存の toggle は、保存するまで反映しません。破壊的コマンド保護または機密情報保護が無効な場合や、設定を読み込めず fallback configuration を適用している場合は banner を表示します。 Health strip。 検出したエージェントで hook が有効か、hook がないエージェントを検出したか、またはエージェントの hook を 1 つも検出しなかったかを報告します。利用可能な update も表示します。対応が必要な場合は Integrations へ link します。 Top blocked commands と Top blocked rules。 tile と同じ期間を対象に、上位 5 件を並べた 2 つの panel です。top command を選択すると、その command signature と完全一致し、blocked だけを対象にする filter を removable pill として設定して Activity を開きます。top rule は rule namespace に応じて移動先が変わります。custom.* の rule ID は Rules へ移動します。組み込み rule ID は、その ID を search box に入力した状態で Activity を開きます。 Guard error。 対象期間内に、policy ではなく評価の失敗による拒否がある場合、N guard error(s) in the last N days — commands blocked because evaluation failed, not by policy. Click to view. という button を表示します。選択すると、error decision だけに絞った Activity を開きます。これは fail-closed denial です。CC Safety Net が解析を完了できなかったため、コマンドを拒否しました。繰り返し発生する場合はトラブルシューティングを参照してください。

アクティビティ

Activity は、ローカル log に記録したコマンドを新しい順に表示します。コマンドは log へ書き込む前に secret redaction を受けます。redaction は認識済みの credential shape だけを対象にするため、entry には path、hostname、name が残る場合があります。この画面の内容を共有する前に、record schema と正確な redaction 範囲を監査ログで確認してください。

表示期間は保持期間から決まる

表示期間の selector は固定の選択肢ではありません。設定済みの監査ログ保持期間から計算します。候補となる 7、30、90、180、365 日のうち、保持期間より短いものだけを表示します。保持期間そのものは、最も広い選択肢として常に追加します。このため、保持処理ですでに削除した履歴を表示できるように見せる選択肢はなく、保持中の log 全体には常にアクセスできます。 各期間は、今日とそれ以前のローカル暦日全体を対象にします。そのため、Overview の日別 sparkline の bucket 合計は total と正確に一致します。保持期間より広い期間の request は拒否します。保持期間を短縮すると、現在の選択も新しい範囲内へ調整します。保持期間の設定と適用方法は監査ログを参照してください。

フィルター

  • Window — 前述の保持に由来するセレクター。
  • Decision chipAllBlockedAllowed は常に表示します。Errors は対象期間に guard error がある場合だけ表示します。Likely false positive は heuristic が候補を検出した場合だけ表示します。heuristic は、failure stage がある拒否、または同じ session 内で 2 回以上拒否された command signature を候補にします。
  • Agent chip — 対象期間に 2 種類以上の既知の agent がある場合だけ表示します。All agents chip ですべての選択を解除できます。
  • コマンド ピル — 正確な、ブロックのみのコマンド シグネチャ フィルター。概要からクリックして追加し、ここから削除できます。
  • 検索 — 上部バーのボックス (Filter by rule or command) は、大文字と小文字を区別しない部分文字列としてルール ID とコマンド テキストを照合します。
再読み込み後に有効でなくなった filter は自動的に reset します。選択中の agent がなくなった場合、または対象期間に error や false-positive candidate がない場合は、空の feed を表示せず filter を解除します。

更新

Refresh button は Overview と Activity の両方を再読み込みするため、tile と feed の内容が食い違いません。短い minimum spin time を設け、すぐに完了する local refresh でも操作したことが分かるようにします。

レンダリングされたエントリと数

フィードは最大 500 エントリをレンダリングします。上限は決定クラス間で分割されます。各クラスは上限の半分が保証され、未使用の分け前を他のクラスに貸し出します。そのため、大量の拒否によって許可されたエントリが完全にビューから外されることはありません。 count には 500 entry の上限を適用しません。chip、tile、top panel は、feed に表示する entry とは別に、server 上の対象期間全体の集計から計算します。footer は Showing X of Y entries from the last N day(s) と表示します。省略した場合は (capped at 500, newest of each decision) を追加します。 カウント自体が不足するケースが 1 つあります。一部の監査ログ ソースを読み取れなかった場合、フッターに N audit log source(s) could not be read, so this list is incomplete. が追加されます。集計でもこれらのエントリが欠落するため、ソースが再び読み取れるようになるまで、リストとカウントの両方が合計ではなく下限として扱われます。
リストに目を通し結論を導き出す前に、フッターを読んでください。 Showing 500 of 4,120 は、リストが最近のスライスである一方で、すべてのチップとタイルが 4,120 のエントリすべてを反映していることを意味します。

エントリごとのアクション

各 entry には decision badge(BlockedAllowedError)、agent badge、rule-ID chip、相対時刻、raw log entry を JSON としてコピーする button があります。長いコマンドは省略表示し、Show more toggle で展開できます。コピーする内容は raw audit record です。field は監査ログを参照してください。 拒否された entry には Report false positive があります。選択すると、内容を事前入力した公開 GitHub issue を準備する dialog が開きます。続行前に command と log entry の両方を編集できます。project path は <project>、home directory は ~ に置き換えます。GitHub 上でユーザーが送信するまで、何も送信しません。 許可された entry には Block this in future があります。選択すると、Rules 画面の prompt composer にそのコマンドを入力します。rule は自動作成しません。下記のルールを参照してください。

ポリシー

Policy では、CC Safety Net がブロックする操作を選択します。この画面にあるのはすべて組み込みの保護です。safety preset、破壊的コマンドのルール、CC Safety Net に同梱する機密情報保護 pattern が含まれます。独自の rulebook は別の仕組みであり、ここでは編集しません。 このビューが書き込むファイルの完全なフィールドごとのコントラクトは、ポリシー に存在します。

保存済みと未保存

編集内容は下書きに蓄積され、保存するときにのみ適用されます。
  • ドラフトがディスク上のものと異なる場合は常に、[ポリシー] ビューに保存バーが表示され、破棄保存 が表示されます。
  • Unsaved policy changes · Review チップは 1 つおきのビューの上部バーに表示され、クリックするとここにジャンプします。
  • ドラフトはブラウザ セッション内のリロード後も存続します。保存、破棄、修復、リセットするとクリアされます。
  • 未保存の変更がある状態でページを離れると、確認を求めます。
保存するとポリシーファイルを書き込み、その path を報告します。disk 上の policy に error がある間、form は file の値を表示しません。runtime が disk から salvage している有効な値ではなく、すべての control に組み込み default を表示します。実際の file 内容を表示するのは raw JSON mirror だけです。この状態では Repair policy before saving changes. と表示して保存を拒否します。そのため、画面上の default で file を上書きすることはありません。先に policy を修復してから保存してください。修復後は、保持できた設定を使って form を再読み込みします。

コマンドをテストする

シェル コマンドを コマンドのテスト に貼り付けて、ブロックされるかどうかを確認します。テストは現在の保存されていない編集内容に対して評価されるため、変更をコミットする前に変更を確認できます。 dashboard で rulebook を編集できない場合でも、この test は disk から読み込んだ custom rulebook の rule も適用します。組み込み layer だけでなく、実際の判定結果の preview として扱ってください。terminal から同じ解析を行うには、explainを参照してください。

安全プリセット

この画面は、StandardStrictParanoid の 3 つの safety preset を提供します。これらを継承済み default として、workspace に合わせて変更できます。後の preset ほど厳格です。各 preset と capability の正確な動作はモードを参照してください。 保護を強化する environment variable は notice として表示します。これにより、表示 level より動作が厳しい理由が分かります。既定で折りたたまれた Advanced overrides では、preset が解決する個別 capability(fail closed、paranoid rm -rf check、paranoid interpreters)を表示します。preset を変更せずに各値を上げ下げできます。workflow exception は safety level と別に設定します。

破壊的なコマンドの保護

マスター スイッチ、次にルールが 4 つの折りたたみ可能な層にグループ化されます。 すべての層は折りたたまれた状態で開始されます。 [ポリシー] ビューで検索すると、一致する各層が自動的に開きます。 常に強制 層にはスイッチやルールごとのチェックボックスはありません。ヘッダーではルールが N protections としてカウントされ、内部の各ルールは ? サンプル ポップオーバーで Always enforced とマークされます。 構成可能な 3 つの層では、All <tier> protections というラベルの付いた層スイッチの横のヘッダーに N on · N off カウントが表示されます。このスイッチは、層内の少なくとも 1 つのルールがオンである間はチェックされ、マスター スイッチがオフである間は無効になります。これを反転すると、個々のチェックボックスが使用する同じルールごとのオーバーライドが一括で書き込まれます。最終的に継承された値と一致するルールはオーバーライドを保持しません。そのため、個別に保存されるグループ設定はありません。 マスター スイッチがオンの間、パネルの概要には N active, N disabled と表示されます。これをオフにすると、Configurable protection disabled. Catastrophic protections remain active; saved rule settings and allow paths are preserved. に置き換えられます。その場合でも、Always enforced 層はブロックし続けます。 設定可能な各ルール カードには、ブロックするコマンドの具体例を示す ? ポップオーバーと、現在の値の取得元を示すステータス ラインが含まれています。そのため、Off — destructive-command protection disabled と読み取られるルールは、オーバーライドではなくマスター スイッチが優先していることを示します。 ルールを切り替えると、明示的な on または off オーバーライドが保存されます。ルールを継承値に戻すと、冗長なオーバーライドを保存するのではなく、オーバーライドが 削除され、各ルールは Use inherited setting にそれを直接行うよう提供します。パネル ヘッドの Restore defaults アクションは、すべてのオーバーライドを一度にクリアします。 Allow path はこの panel にあります。一覧にある path を対象にした再帰削除はブロックしません。この設定によって /tmp を使用できます。entry は絶対 directory または ~/ から始まる directory にする必要があり、home directory は拒否します。完全な validation table はAllow path、allow path が緩和する範囲と緩和しない範囲は許可されるコマンドを参照してください。

機密情報保護

マスター スイッチとパターンごとのチェックボックス。デフォルトの機密パス (ホーム パス、認証情報のベース名、拡張子、バリアント) から Coding CLI 認証情報 および Coding CLI config の場所まで、カテゴリ別にグループ化されています。各グループ ヘッダーは、N on · N off を表示する折りたたみボタンで、All <category> protections というラベルの付いたグループ スイッチの隣にあり、破壊層スイッチとまったく同じように動作します。グループ内のルールがオンの場合はチェックされ、マスター スイッチがオフの場合は無効になり、ルールごとのオーバーライドを一括で書き込みます。グループは折りたたまれて開始され、ポリシーの検索中に自動的に開きます。 リテラル ファイル パスを保護するルールには、ルールがカバーするパスを正確にリストする 保護されたパス ポップオーバーを開く ? ボタンがあります。 すべてのルールがデフォルトでオンになるわけではありません。 CLI 設定のコーディング ルールは オフ で出荷されます。設定ファイルと MCP 設定ファイルにはインラインで認証情報が含まれますが、エージェントはそれらを日常作業として編集するため、ルールごとにオプトインします。チェックボックスには、ルールのデフォルトから逸脱した場合にのみオーバーライドが保存されます。デフォルトがオフのルールをチェックすると on オーバーライドが書き込まれ、チェックを外すとオーバーライドが削除されます。一方、デフォルトがオンのルールの場合、チェックを外すと off が書き込まれ、再チェックするとオーバーライドが削除されます。 マスター スイッチがオンの間、パネルの概要には N active, N disabled と表示されます。オフの場合、Protection disabled. Saved rule settings and deny paths are preserved. と表示されます。 Deny path はこの panel にあります。機密情報保護が有効な間は、設定した path とその配下をすべてブロックします。deny path は master switch に依存するため、機密情報保護を無効にすると適用を停止します。使用できる entry form はポリシーを参照してください。

確認を求めるアクション

各 rule の toggle、preset change、path の追加または削除は draft に保存し、Save で適用するため、個別の確認は求めません。modal confirmation は、保護を弱める操作または設定を破棄する操作にだけ使います。 これらの dialog では、既定で Cancel に focus を置きます。
破壊的コマンド保護またはシークレット保護をオフにすると、再度オンにするまで、そのレイヤー内の構成可能なすべてのルールが一度に無効になります。常に強制される破壊的層のみがブロックされ続けます。マスター スイッチよりも単一のルール オーバーライド、またはより低いプリセットを優先します。

修復

ディスク上のポリシー ファイルにエラーがある場合、ポリシー修復が利用可能 バナーが Repair ボタンとともにこのビューに表示されます。修復は正規の JSON を書き込み、すべての有効な設定を保持し、無効なフィールドを破棄します。 JSON をまったく解析できない場合は、代わりにデフォルトが復元されます。ロードされたポリシーにエラーがない場合、ボタンは無効になります。
修復では無効なフィールドが破棄され、ファイルを解析できない場合はデフォルトに戻ります。ファイルに重要な手書きの設定が含まれている場合は、修復する前に安全な場所にコピーしてください。

リセット

Reset は意図的にこの画面に置いていません。Settings の Danger zone にあります。

ルール

Rules は、ユーザーが作成する custom rulebook を扱います。Policy 画面の組み込み保護とは別のものです。rulebook の形式、scope、override、validation はカスタムルールを参照してください。この画面では繰り返し説明しません。
Rules 画面はrulebook editor ではありません。CC Safety Net はダッシュボードから rulebook を書き込みません。この画面は、実際に適用する rule を read-only で表示し、rulebook を作成するコーディングエージェントへコピーする prompt text を生成します。

ルールブックパネル (読み取り専用)

各 rulebook card は、name、version badge、name と異なる場合の source spec、scope(All projects または This project)、rule count を表示します。 ルールは オーバーライド後に適用されたものとしてリストされています。オーバーライドによって無効化されたルールは、引き続きそのルールブックに属し、ルールブックのリストに残りますが、レンダリングされたルールからは削除されます。したがって、ここで読み取られるのはファイルの内容ではなく、有効なルールブックです。更新ボタンはディスクから再読み込みします。 rulebook が未設定の場合、panel は cc-safety-net rule init を案内します。rulebook はあるがすべて drop された場合は、その状態を示して Diagnostics へ案内します。

診断

報告する内容がない場合、Diagnostics panel は表示しません。error がある場合は、rulebook が drop され、その rule を適用していないことを示します。作成した rule が動作しない場合は、ここを確認してください。

プロンプトコンポーザー (コピーのみ)

composer はコーディングエージェント用の prompt を生成します。実行できる操作は Copy prompt だけです。画面には create、save、write の control がなく、rulebook を書き込む server route もありません。 入力:
  • スコープProject または All projects
  • プロジェクト パス — プロジェクト スコープでのみ表示され、ダッシュボードの起動元のディレクトリが事前に入力されます。ネイティブ ディレクトリ ピッカーが使用可能な場合、フィールドは読み取り専用で、Choose… ボタンが表示されます。実行時にピッカーが使用できない場合は、代わりにフィールドが編集可能になります。
  • リクエスト — 必要なルールを説明します。ルールは、ファイル パスやパターンではなく、コマンド、オプションのサブコマンド、および正確な引数と一致します。
  • — ワンクリックでルールの提案、コマンドのブロック、既存のルールの確認を行うためのスターター。
生成した prompt は、CC Safety Net skill を使うか、cc-safety-net rule doc を実行してその出力を source of truth とするようエージェントへ指示します。scope、project path、既存 rulebook の name を含むため、エージェントはまだ使われていない name を選べます。prompt に含めるのは意図的に rulebook name だけです。rule name、blocked argument、reason、version は text に含まれず、このマシンの外へ出ません。 ルールがまだ読み込まれていない場合、リクエストが空である場合、またはプロジェクト パスが指定されていないプロジェクト スコープが選択されている場合、コピーは特定のメッセージとともに拒否されます。

統合

Integrations は、このマシン上の各コーディングエージェントについて、CC Safety Net hook を install または remove します。Agents panel は、検出した CLI と hook status を表示します。各エージェントの接続方法は連携アーキテクチャ、GUI を使わない同等の手順はインストールを参照してください。 Not inspected には、次のように説明されたツールチップが表示されます。 This runtime's state file could not be read, so its status is unknown. CLI 自体が見つかったので、インストールはまだ提供されています。 検出によってアクションがゲートされます。CLI が検出されない場合、フックをインストールするものが何もないため、ボタンはまったく表示されません。インストールとアンインストールはシリアル化されるため、2 つのアクションを交互に実行することはできず、リクエストの実行中はボタンが無効になります。障害が発生すると、サイレントに元に戻すのではなく、Install failed または Uninstall failed が報告されます。 [更新] ボタンを使用すると、すべてのエージェントが再検出されます。これは、CLI をインストールするか手動でエージェント構成を編集した後に必要なものです。以下の システム パネルには、CC Safety Net のバージョン、Node.js のバージョン、およびこのマシンで検出されたプラットフォームが報告されます。

設定

設定には、外観、ファイルの場所、メンテナンスが含まれます。 Appearance。 theme control は Auto → Light → Dark の順に切り替わります。設定は policy ではなく、この browser に保存します。 Files。 CC Safety Net がこのマシンで読み書きする場所を、2 つの read-only row で表示します。対象はポリシーファイルと監査ログディレクトリです。 Audit log retention。 監査 record を保持する日数です。使用できる範囲、記録する内容、sweep による適用方法は監査ログを参照してください。Policy 画面と異なり、保持期間は変更するとすぐに保存します。save bar はありません。Policy 画面に未保存の変更がある間は保存できないため、先に保存または破棄してください。一方、Policy の save button と異なり、disk 上の policy に error があっても、この control は無効になりません。その状態では form が default を保持しているため、保持期間を変更すると、default だけの document に新しい保持期間を加えて file を上書きします。保持期間を変更する前に policy を修復してください。
保持期間の短縮は元に戻せません。新しい期間より古い監査 entry は次の sweep で削除され、復元できません。Activity で遡れる期間も新しい値までになります。ダッシュボードは短縮前に確認を求め、prune する log directory を表示します。必要な内容は先に export してください。Activity feed の各 entry には copy-as-JSON button があります。
ポリシー JSON。 コピー ボタンを備えたポリシー コントロールの読み取り専用ミラー。これは、ポリシー ビューのコントロールを反映します。これは、2 番目のエディターではなく、検査と共有のためのミラーです。 バージョン。 実行している CC Safety Netのバージョンを示す 1 つの読み取り専用行。 危険ゾーン。 単一のアクション、ポリシーのリセット。構成されたパスでデフォルトのポリシー JSON を復元します。
リセットすると、保存された設定が破棄されます。すべてのプリセットの選択、ルールの上書き、許可パス、および拒否パスはデフォルトに戻り、元に戻すことはできません。リセットはポリシー ファイルにのみ影響します。カスタム ルールブックは別のファイルであり、影響を受けません。
ポリシー ファイルのスキーマについては、ポリシー を参照してください。ルールブックの作成については、カスタム ルール を参照してください。監査ログの形式と保持動作については、監査ログ を参照してください。 gui および他のすべてのコマンドについては、CLI コマンド を参照してください。
最終更新日 2026年8月12日