ダッシュボードの起動
http://localhost:8020 で開きます。
ダッシュボードはファイルシステムから直接データを読み取ります — Claude Code のプロジェクトフォルダと failproofai の設定ファイルが対象です。リモートサービスへの書き込みは一切行われません。
ページ
プロジェクト
マシン上で見つかったすべての Claude Code、OpenAI Codex、GitHub Copilot CLI (ベータ)、Cursor Agent (ベータ)、OpenCode (ベータ)、Pi (ベータ)、Gemini CLI (ベータ) プロジェクトを一覧表示します。Claudeのプロジェクトは~/.claude/projects/(または CLAUDE_PROJECTS_PATH で設定したパス)から検出されます。Codexのプロジェクトは ~/.codex/sessions/<YYYY>/<MM>/<DD>/*.jsonl 配下のすべてのトランスクリプトをスキャンし、各セッションの最初のレコードに記録された cwd でグループ化することで検出されます。Copilot CLIのプロジェクトは各 ~/.copilot/session-state/<sessionId>/workspace.yaml(COPILOT_HOME で変更可能)をスキャンし、cwd フィールドでグループ化することで検出されます。Cursor Agentのプロジェクトは ~/.cursor/agent-sessions/<sessionId>/(CURSOR_HOME で変更可能。フォールバックとして conversations/ と sessions/ も探索)配下のセッションごとのメタデータをスキャンし、meta.json / session.json / workspace.yaml の cwd スカラーから検出されます。OpenCodeのプロジェクトは ~/.local/share/opencode/opencode.db の SQLite DBを opencode db --format json 経由でクエリし(session テーブルと project テーブルを読み取り project_id でグループ化)、検出されます。Piのプロジェクトは ~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl(PI_SESSIONS_DIR で変更可能)配下のセッションごとの JSONL トランスクリプトをスキャンし、各セッションの最初のレコードから cwd を取得することで検出されます。Gemini CLIのプロジェクトは ~/.gemini/tmp/<basename>/chats/session-<timestamp>-<uuid-prefix>.jsonl(GEMINI_SESSIONS_DIR で変更可能)をスキャンし、隣接する .project_root テキストマーカーから正規の cwd を復元することで検出されます。複数の CLIで使用されたプロジェクトは、一致するすべてのバッジを持つ単一の行として表示されます。テーブル上の CLI ドロップダウンを使用して特定のエージェント CLIでフィルタリングできます。URLには選択内容が ?cli=claude|codex|copilot|cursor|opencode|pi|gemini として保持されます。
各プロジェクトには以下が表示されます:
- プロジェクト名(フォルダパスから導出)
- CLIバッジ —
Claude Code(オレンジ)、OpenAI Codex(パープル)、GitHub Copilot(ブルー)、Cursor Agent(エメラルド)、OpenCode(アンバー)、Pi(ピンク)、Gemini CLI(スカイ) - 最新セッションのアクティビティ日時
セッション
プロジェクト内のすべてのセッションを一覧表示します。各セッションには以下が表示されます:- セッション ID
- 開始・終了タイムスタンプ
- ツール呼び出し回数
- フックアクティビティ数(発火したポリシー数)
セッションビューアー
セッションビューアーは、自律型エージェントに関する核心的な問いに答えます:エージェントは何をしたのか、そして目的通りに動作し続けたのか?ヘッダー横の CLIバッジは、そのセッションが Claude Code、OpenAI Codex、GitHub Copilot CLI、Cursor Agent、OpenCode、Pi、Gemini CLI のどのトランスクリプトかを示します。セッション内で発生したすべての出来事をタイムラインで表示します:- メッセージ — Claudeのテキスト応答とユーザープロンプト
- ツール呼び出し — Claude が呼び出したすべてのツール(入力・出力を含む)
- ポリシーアクティビティ — 各ツール呼び出しに対して、どのポリシーが発火し、どのような判断を返したか
session / messages / parts テーブルを反映した JSON ドキュメントが取得できます。
監査
過去のセッションにわたるエージェントの実際の振る舞いを個性的なレポートとして表示します。failproofai audit CLIと同じスキャンを実行しますが、6つのセクションからなるダッシュボードとしてレンダリングします:
- アイデンティティ — 発火した検出器とポリシー、その頻度に基づいて、エージェントを8つのアーキタイプ(
the optimist、the cowboy、the explorer、the goldfish、the paranoid architect、the precision builder、the hammer、the ghost)のいずれかに分類します。8×8ピクセルのシジル、アーキタイプのタグライン、「よく見られるケース」/「主なリスク」の説明、締めくくりの一文がレンダリングされます。 - エージェントを紹介する — アイデンティティカードを X / LinkedIn への投稿に適した 1200×630 PNG としてキャプチャします(
make posterをクリック)。 - 強み — ライブの監査データから導出された、エージェントがすでに正しく実行している動作(クリーンなツール呼び出し率、平均セッション長、クレデンシャル漏洩ゼロ、リトライストームゼロなど)を緑のチェックマークで表示します。
- スコア + リーダーボード — 0〜100のスコアとレターグレード(S/A/B/C/D/F)、コホート内の位置を示す分布ヒストグラム、説明文(「Bは71点から始まります。あと13点です。」)、自分の行がハイライトされたリーダーボードテーブルが表示されます。
- 発見事項 — 影響度順にランク付けされた発見事項カード。各カードには、何が起きたか、そのコスト、実際にキャプチャされたコマンドを含む証拠サンプル、同じパターンを検出できる failproofai ポリシー(
$ failproofai policy add <slug>、クリックでコピー)が表示されます。 - 推奨ポリシーと再診ループ — ギャップを埋める有効化されていすべての組み込みポリシーのグリッド(スコア予測の吹き出し付き)と「7日後に再監査」のCTAが表示されます。
failproofai audit ランタイムが動力源です — 基盤となるスキャンエンジン、サポートされているフラグ、トランスクリプトごとのキャッシュ不変条件については Audit CLI を参照してください。ダッシュボードは最新の結果を ~/.failproofai/audit-dashboard.json(モード 0600、シングルスロット、新しい実行で上書き)にキャッシュするため、再アクセス時は即座に表示されます。トランスクリプトごとのキャッシュと全体の結果キャッシュはいずれも、7日以上経過すると読み取り時に拒否されます。そのため、ダッシュボードが1週間前の結果を静かに返すことはありません。TTLを過ぎると /audit は空の状態にフォールバックし、新しい実行を促します。レポート下部の [ re-audit now ] をクリックすると、noCache: true を付けて /api/audit/run に POSTが送信されます — 再監査はトランスクリプトごとのキャッシュをバイパスし、キャッシュ結果を返すのではなくすべてのトランスクリプトを最初からスキャンし直します。ダッシュボードは実行完了まで 1Hz で /api/audit/status をポーリングします。実行中はビューポート上部に経過タイマー付きのピンクの進行状況バーが固定表示され、完了すると新しい結果がその場で入れ替わります(フルページリロードなし。再監査が失敗した場合は前のレポートがそのまま残ります)。失敗時はバーが赤くなり、RerunError.kind(timeout / network / post_failed)に応じたコピーが表示されます。空の状態(キャッシュなしまたは期限切れ)とセッションゼロの状態(キャッシュは存在するがスキャンでトランスクリプトが見つからなかった)は別々に表示されます。
ポリシー
ポリシーの管理とアクティビティ確認のための2タブページです。- ポリシータブ
- アクティビティタブ
- 単一パネルから failproofai が保護するエージェント CLIを複数選択できます — Claude Code、OpenAI Codex、GitHub Copilot、Cursor Agent、OpenCode、Pi、Gemini CLI のそれぞれに、インストール状態(
Active/Detected/Inactive)、ユーザースコープの設定パス、ブランドカラーのアクセントが表示されます。保護したい CLIにチェックを入れ、Apply changesをクリックすると差分を一括でインストール/アンインストールできます。PATH上でバイナリが検出された CLIはあらかじめチェックされています。 - ワンクリックで個別のポリシーをオン/オフに切り替えられます(
~/.failproofai/policies-config.jsonに書き込まれ、インストールされているすべての CLIで共有されます) - ポリシーを展開してパラメーターを設定できます(
policyParamsをサポートするポリシーの場合) - カスタムポリシーファイルのパスを設定できます
自動更新
ダッシュボードのトップナビゲーションには自動更新トグルがあります。有効にすると、現在のページが定期的に更新され、新しいセッションやポリシーアクティビティがリアルタイムで表示されます。長時間実行される自律型エージェントセッションの監視に不可欠です。ページの無効化
ダッシュボードの一部のみ必要な場合は、FAILPROOFAI_DISABLE_PAGES にページ名のカンマ区切りリストを設定してください:
policies、projects、audit。
プロジェクトパスの設定
デフォルトでは、ダッシュボードは標準的な Claude Code プロジェクトディレクトリから読み取ります。カスタム設定の場合は上書きできます:localhost 以外のホストからのアクセス
dev モード(npm run dev)でダッシュボードを実行し、localhost 以外のホスト名(例:カスタムドメイン、リモート IP、トンネル URL)からアクセスすると、次のような警告が表示される場合があります:
--allowed-origins フラグを使用します:
FAILPROOFAI_ALLOWED_DEV_ORIGINS を使用して設定することもできます:
これは dev モードにのみ適用されます。
failproofai(本番モード)を実行している場合、HMR WebSocket もクロスオリジン dev リソースの問題も発生しません。
