記録される内容
画面、画面フォルダー、プレイリスト、メディアファイルまたはフォルダー、アプリケーション、カード、スケジュールまたはレベル、キャンペーン、通知、Webhook、トリガー、ソース、フリートリンク、レポートスケジュール、アラートのミュート、メンバーまたはロール、招待、サービスクライアント、エージェント接続、シングルサインオンまたは SCIM の設定、ID プロバイダーがプロビジョニングするユーザーまたはグループ、グループのバインド、プロジェクトまたは組織の設定に対する変更は、1 件のエントリになります。画面に送るコマンド(再起動、再読み込み、識別、キャッシュの消去、アプリの再起動、更新、トースト、スクリーンショット)とフリート操作も、渡されたパラメーターとともに記録されます。
エントリの内容:
| メンバー | 意味 |
|---|---|
at | 変更が確定した日時(UTC) |
actor | 誰が: kind person、agent、service_client、staff、system のいずれか、id と name を伴う |
approved_by, review_id | エージェントが提案した変更を承認したユーザーと、それを保留したレビュー |
source | 経路: dashboard、api、cli、mcp、staff、device、webhook、system のいずれか |
action | 安定したコード、リソースタイプ、動詞: screen.update、playlist.create、webhook.rotate_secret |
resource | type、id、変更後のリソースの name |
changes | 変更された各メンバー: path(/label のような JSON ポインター)、before、after |
revision | 変更によって生じたリビジョン。コピーではなくリンクされます(プレイリストのリビジョン、メディアのバージョン、リソース自身のリビジョン番号) |
request_id, route, client, client_ip | その変更が通ったリクエスト |
seq, prev_hash, hash | チェーン内でのエントリの位置 |
値は保存されている値です。名前、メールアドレス、アドレス、URL、ID はそのまま表示されます。シークレット(トークン、API キー、パスワード、Webhook や署名のシークレット、ソースの認証情報、ペアリングコード、それ自体が認証情報である受信先 URL)は両側とも (redacted) と表示されるため、ローテーションはどちらの値も見せずに変更として表示されます。1 KiB を超える値はサイズと SHA-256 に置き換えられ、1 件のエントリに保持される変更は最大 100 件、16 KiB です。さらに変更があった場合は truncated で分かります。プレイリストのページとメディアファイルのバイトはコピーされず、エントリはリビジョンにリンクします。
カードデータ、キーと値(Webhook やソースが書き込んだ値を含む)、Player のテレメトリーはデータであり、設定ではありません。監査ログには含まれません。書き込まれたことはプロジェクトのイベントログに記録されます。
検索
GET /api/audit はエントリを新しい順に一覧表示します。
screenrig audit list --resource-type screen --resource-id scr_ID
screenrig audit list --actor-kind agent --since 2026-10-01T00:00:00Z
screenrig audit list --action 'playlist.*' --source mcp --limit 20
screenrig audit list --field /label
screenrig audit show aud_ID
| フィルター | 意味 |
|---|---|
actor | ユーザー、エージェント、またはサービスクライアントの ID |
actor_kind | person、agent、service_client、staff、system のいずれか |
source | dashboard、api、cli、mcp、staff、device、webhook、system のいずれか |
resource_type, resource_id | 変更された内容 |
action | アクションコード、または * で終わるプレフィックス |
field | JSON ポインター: このメンバーまたはその配下のメンバーを変更したエントリ |
since, until | 期間 |
cursor, limit | ページ送り: next_cursor を cursor として返します。1 ページあたり 1 から 200 件 |
ダッシュボードの「プロジェクト」にある「監査」ページには、これらのフィルターで同じエントリが一覧表示され、各変更が変更前と変更後で表示されます。
読み取れる人
プロジェクトのオーナー、その組織の管理者、プロジェクトを代行表示しているスタッフは、ダッシュボードで読み取れます。プロジェクト権限を持つエージェントまたはサービスクライアントは、API と CLI で読み取れます。組織の管理者、ドメイン、請求設定の変更は組織自身のログに記録され、組織の管理者が GET /api/organizations/{org_id}/audit で読み取れます。
改ざん耐性
エントリを書き込み、編集、削除するものはありません。そのためのルートがないためです。各エントリは、プロジェクト内で直前のエントリにチェーンされています。その hash は、直前のエントリのハッシュ、位置、内容から求めた SHA-256 です。変更の数秒後に、エントリは seq と hash を持ちます。
screenrig audit head
screenrig audit verify
screenrig audit verify --anchor 128:3f2c0b6e9a4d81c7f5e0a2b4c6d8e0f1a3b5c7d9e1f30415263748596a7b8c9d
audit verify(GET /api/audit/verify)は、保存されている内容からすべてのハッシュを再計算し、各リンク、seq の連続性、チェーンの先頭を確認します。問題のあるエントリについて hash_mismatch、prev_mismatch、gap、head_mismatch、anchor_mismatch、floor_mismatch のいずれかを報告し、チェーンが検証できない場合は終了コード 13 で終了します。1 回の呼び出しで最大 5,000 件のエントリを確認し、続きは next_seq を返します。アンカーとは、以前のエクスポートまたは audit head で保管したチェーンの先頭(SEQ:HASH)です。これに対して検証すると、そのエントリまでの履歴が変更されておらず、切り詰められていないことが証明されます。
保持と削除
エントリはすべてのプランで 400 日間保持されます。期限を過ぎたエントリは古いものから削除され、チェーンは現在の開始位置(floor_seq、floor_hash)を記録するため、それ以外の場所での削除は検出されます。プロジェクトを削除すると、その監査ログも一緒に削除されます。screenrig project export DIR はログを log/audit.jsonl に書き出し、チェーンの先頭を log/audit-head.json に書き出すので、コピーはプロジェクトより長く残り、アンカーに対する検証もできます。
エクスポート
screenrig audit export --format csv --output audit.csv
screenrig audit export --format xlsx --since 2026-07-01T00:00:00Z --until 2026-10-01T00:00:00Z
screenrig audit export --format pdf --resource-type playlist --output playlist-changes.pdf
GET /api/audit?format=csv|xlsx|pdf は、すべてのレポートと同じレンダラーで絞り込んだログを書き出します。変更されたフィールドごとに 1 行、古い順で、since の指定がなければ直近 30 日、最大 50,000 行です(ファイルが先頭の行だけを含む場合は truncated で分かります)。チェーンの先頭と保持の下限がファイルに含まれるため、保管したコピーは後の audit verify のアンカーになります。