ProofRun – AIコーディングエージェント向けローカル検証レシート
ProofRunは、AIコーディングエージェントの「テストが通った」という主張を、ローカルで検証可能なレシートに変えるオープンソースのCLIツールです。各チェック結果は正確なコード状態の暗号学的フィンガープリントに結びつき、実際のサブプロセス終了コードだけがPASS/FAIL/STALE/NOT RUNを生み出します。オフラインでLLMを一切使わず、CIゲート用のGitHub Actionも同梱します。
ProofRunは、AIコーディングエージェント向けの「ローカル検証レシート」を提供するオープンソースのCLIツールです。コードの正しさを判定するのではなく、現在の正確なコード状態に対して、どのチェックが実際に実行されたかを暗号学的に証明します。「テストは全部通っています」というエージェントの発言を、そのまま信じるしかなかった状況を変え、検証可能な証跡として扱えるようにします。
背景にある問題は、AIコーディングエージェントが「テストが通った」と言うとき、実際に直前にテストを実行した場合もあれば、数回の編集前に実行した場合、あるいは「変更は問題なさそうだから通るはず」と推測している場合もあることです。ProofRunはエージェントを正直にしようとするのではなく、主張自体を検証可能にします。proofrun run test -- pytest を実行すると実際にサブプロセスを起動してpytestを実行し、終了コードと所要時間を記録します。proofrun status では各チェックの状態が PASS・FAIL・STALE・NOT RUN の4つだけで表示され、「おそらく問題ない」という曖昧な状態は存在しません。
各結果は正確なコード状態のフィンガープリントに紐づけられます。具体的には、git HEAD、未コミットの変更(ステージ済みかどうか、追跡されているかどうかを問わない)のSHA-256ハッシュ、さらに未追跡かつ無視されていないファイルの内容を組み合わせます。1バイトでもコードが変われば、以前の結果は自動的にSTALEへ変わります。「このPASSはまだ有効か」と誰かが覚えていて確認する必要はありません。
設計上の原則は明確です。LLMを一切呼び出さず、AIがAIを検証するのではなく、実際のサブプロセスの終了コードだけを頼りにします。オフライン専用でネットワーク通信・テレメトリ・アカウントはすべてゼロです。コマンドの一致判定は文字列ではなくargv配列の要素単位で行うため、pytest -k "foo bar" と宣言されたチェックを、似て見えるだけの別コマンドで満たすことはできません。
また、ProofRunは意図的にテスト出力の解析、コード品質の判断、自動修正を行いません。境界はAGENTS.mdに明記されています。このプロジェクトはClaude Codeが人間の指示のもとで書き、初回リリース前に独立した読み取り専用の敵対的レビューを複数回受けました。そのレビューで、シェル引数の引用符が誤っていると、チェックが静かにゼロ個のテストを実行したままPASSと報告される脆弱性が実際に発見されています。修正は「それらしく見える」だけでなく、実際の再現手順で検証された上で採用されました。
使い方は、proofrun init で .proofrun.yml を生成し、proofrun run でチェックを実行、proofrun run-all で宣言済みの全チェックを順に実行、proofrun status --strict で必須チェックがPASSでない場合に非ゼロ終了コードを返します。設定ファイルでは各チェックを command: [pytest] や command: [npm, run, build] のようにargv配列で宣言し、required: true を付けると厳格なゲートとして機能します。
GitHub Actionも用意されています。このActionはPRのheadコミットを自前でチェックアウトし、呼び出し側ワークフローがすでにチェックアウトした内容を信頼しません。GitHubが合成するマージプレビューコミットを誤って渡されることを防ぐためです。またPRブランチに含まれるreceipt.jsonを消去し、チェックサム検証済みのバイナリをダウンロードした上で、run-allを実際に実行してから status --strict でゲートします。既知の制限として、コードを変更する同じPR内で .proofrun.yml 自体が弱められることは防げません。設定がベースブランチと異なる場合はビルドアノテーションで警告しますが、ブロックはしないため、そのdiffは通常のコードレビューと同様に人間が確認する必要があります。
ロードマップには、v0.3でのpytest・Jest・JUnitなどのテストランナー向け構造化出力、署名付きの改ざん検知可能なレシート、同じPR内で .proofrun.yml が弱められることへの対策(現時点では警告のみ)が挙げられています。ライセンスはMITです。