Agents Please コードレビューガイド:安全なセットアップガイド - ガイド

Agents Please コードレビューガイド:安全なセットアップガイド

この Agents Please コードレビューガイドを使用して、AI 支援レビューの構成、リスクの優先順位付け、自動化を盲信しない修正確認を行います。

2026-09-11
Agents Please Wiki チーム
クイックガイド
  • Agents Please コードレビューガイド:AI 支援によるプルリクエストレビューに、再現性のあるプロセスを使用します。
  • 最優先事項:レビュー対象のスコープ、権限、シークレット、正確なリビジョンを確認します。
  • 最適なワークフロー:広範囲にスキャンし、リスクのあるデータフローを追跡してから、検出結果を手動で検証します。
  • 主な警告:開発者が再現するまでは、生成された検出結果を仮説として扱います。
  • 最終確認:承認前に、テスト、パッチレビュー、回帰テストのカバレッジを必須とします。

Agents Please コードレビューガイド:スコープと安全性

Agents Please コードレビューガイドは、AI エージェントを使用してプルリクエスト、リポジトリ、または独立したコードサンプルを検査するチーム向けに設計されています。目的はレビュアーを置き換えることではありません。レビュー準備を迅速化し、セキュリティに関わる経路を明らかにし、人間のエンジニアが調査すべき質問をより明確に把握できるようにすることです。

まず、レビューの境界を狭く設定します。エージェントがアクセスできるブランチ、コミット、変更ファイル、プログラミング言語、テストコマンド、ディレクトリを特定します。スコープを制限すると結果を監査しやすくなり、無関係なレガシーコードがレビューを圧倒する可能性も減らせます。

レビュー環境を保護する

レビュー範囲を広げるためだけに、本番環境の認証情報、秘密鍵、顧客記録、または制限のないシェルアクセスを決して提供しないでください。可能な限り、使い捨てのチェックアウト、最小権限のトークン、サニタイズ済みのフィクスチャを使用します。

レビューの境界

レビュー項目推奨される判断重要な理由
コミットまたはプルリクエスト正確なリビジョンを記録するコードの変更に伴って検出結果がずれるのを防ぐ
ファイルスコープ変更ファイルと直接的な依存関係を含めるコンテキストと管理しやすい出力のバランスを取る
シークレット削除、無効化、またはマスクする偶発的な漏えいを制限する
ツールまず読み取り専用の検索を許可する意図しない変更を減らす
テストコマンド安全で決定論的なコマンドだけを承認する破壊的なスクリプトやネットワークの副作用を避ける

有用なレビューが答えるべきこと

優れた AI 支援レビューは、次の 5 つの質問への回答に役立つ必要があります。

  • 何が変更され、どの動作に影響するのか?
  • 信頼できない入力はシステムのどこから入るのか?
  • その入力を受け取る関数、サービス、権限はどれか?
  • 報告された各問題を裏付ける証拠は何か?
  • どのテストまたはパッチがリスクを低減するのか?

一般的な懸念を列挙するだけのレポートは、ファイルパス、影響を受けるシンボル、データフローの推論、実践的な検証手順を含む、より短いレポートほど有用ではありません。

スコープ

  • 正確なコミット
  • 変更ファイル
  • 関連する依存関係
  • レビュー対象外

セキュリティ

  • シークレットの取り扱い
  • 権限制限
  • 入力境界
  • 外部呼び出し

証拠

  • ファイルと行
  • 再現経路
  • 信頼度
  • 前提条件

解決

  • 推奨パッチ
  • 回帰テスト
  • 担当者
  • 検証ステータス

AI 支援レビューを準備する

準備によって、エージェントが実行可能な分析を生成するか、推測の寄せ集めを生成するかが決まります。開始前に、平易な言葉で短いレビュー概要を書きます。機能の目的、想定される信頼境界、既知の機密操作、変更してはならない領域を含めてください。

Web サービスの場合、概要には認証、認可、ファイルアップロード、バックグラウンドジョブ、サードパーティリクエスト、データベースへの書き込み、モデルまたはプロンプトとの統合を含めることがあります。ライブラリの場合は、安全でないパーサー、シリアライズ、依存関係の変更、公開 API との互換性を重視することがあります。

リスク指向の指示を使用する

入力がソースからシンクへどのように移動するかを説明するよう、エージェントに依頼します。これは通常、「すべてのバグを見つけて」と依頼するより有用です。より狭い指示のほうが、レビュアーが検証できる証拠を生成するためです。

レビュー概要テンプレート

概要の項目内容の例レビュー上の利点
機能の目的ユーザー設定可能な Webhook 通知を追加する意図された動作を定義する
信頼境界ユーザー設定が外部 HTTP クライアントに到達するSSRF の可能性を明らかにする
機密資産トークン、テナントデータ、内部メタデータ影響を明確にする
必須チェック認可、URL 検証、エラーハンドリング焦点を絞ったチェックリストを作成する
検証ユニットテストとモック化したネットワークリクエスト完了条件を定義する

実践的な指示セット

発見、推論、報告を分離する指示を使用します。

  1. 変更されたコードと、その直接の呼び出し元をマッピングする。
  2. 外部入力、機密データ、特権操作、ネットワークリクエストを特定する。
  3. 疑わしい値を、検証、変換、保存、出力の各段階で追跡する。
  4. コード上の証拠で裏付けられる問題だけを報告する。
  5. 確認済みの欠陥、妥当性のある懸念、作成者への質問を区別する。
  6. 明示的に許可されていない限り、変更を適用せずにテストを提案する。

この構造は、よくある失敗も防ぎます。つまり、エージェントが危険なパターンに気づいても、バリデーター、フレームワークの制御、上流の権限によってすでに悪用が防止されているかどうかを確認しないという失敗です。

1

レビュー対象を固定する

リポジトリ、ブランチ、コミットハッシュ、変更ファイル一覧を記録します。分析中にプルリクエストが変更された場合は、分析を再開するか、新しいリビジョンであることを明確に示します。

2

信頼モデルを説明する

匿名ユーザー、認証済みユーザー、管理者、サービスアカウント、バックグラウンドワーカー、サードパーティシステムを特定します。影響を受ける各操作に、どのロールがアクセスできるかを明記します。

3

高リスクのシンクを定義する

データベースクエリ、ファイルパーサー、テンプレートレンダリング、外部リクエスト、シェルコマンド、デシリアライズ、認証情報の使用、権限チェックを強調します。

4

証拠に基づく検出結果を求める

各検出結果について、パス、シンボルまたは行範囲、入力ソース、危険な操作、影響、信頼度、推奨される検証方法を必須にします。

5

出力を手動でレビューする

重要な主張を再現し、周辺のコードを確認し、既存の制御をチェックして、その問題が有効か、緩和されているか、誤りかを判断します。

検出結果の優先順位を付け、データフローを追跡する

AI コードレビューは、表現がどれほど恐ろしく聞こえるかではなく、悪用可能性と影響に基づいて検出結果を順位付けすると、より効果的になります。コメントの欠落と、ユーザーが制御できるサーバーサイドリクエストに同じ注意を向けるべきではありません。

信頼できない入力と、特権的または外部から見える動作を結び付ける経路から着手します。一般的な例には、データベースクエリに到達するリクエストパラメータ、パーサーに到達するアップロードコンテンツ、HTTP クライアントに到達する設定可能な URL、別のモデルへの指示に挿入されるユーザーテキストなどがあります。

信頼度は重大度ではない

信頼度の高い問題でも影響が限定的な場合があり、重大な問題でも環境を理解するまで確認できないことがあります。レポートでは、信頼度と影響を別々に記録してください。

検出結果の分類

検出結果の種類証拠の基準レビュアーの対応
確認済みの欠陥明確な経路と制御の欠落再現し、パッチを適用して回帰テストを追加する
可能性の高い懸念強いパターンだがコンテキストが不完全依存関係と周辺ロジックを確認する
設計上の質問動作が意図的である可能性がある担当者に信頼モデルの明確化を求める
誤検知既存の制御が経路を遮断している制御を記録して検出結果をクローズする
情報提供保守性または堅牢化に関する問題チームの優先順位に従って予定に入れる

リスクのトリアージマトリクス

影響信頼度優先度
直ちに調査
マージ前に検証
可能であれば現在の変更で修正
追加のコンテキストを求める
任意保守作業とまとめて対応

脆弱性の疑いをレビューする際は、完全な連鎖を示すようエージェントに依頼します。

  • ソース:値はどこから発生するのか?
  • 変換:デコード、解析、連結、正規化のいずれかが行われているか?
  • 制御:どの検証、認可、エンコード、許可リストが適用されるか?
  • シンク:どの操作が値を使用するのか?
  • 影響:攻撃者または誤動作するユーザーによって何が引き起こされる可能性があるか?
  • 検証:主張を実証する安全なテストは何か?

たとえば、外部リクエストだからといって、自動的にサーバーサイドリクエストフォージェリの問題になるわけではありません。レビュアーは、攻撃者が宛先を操作できるか、プライベートアドレスまたはメタデータアドレスに到達できるか、リダイレクトが制御されているか、アプリケーションに許可された宛先ポリシーがあるかを確認する必要があります。

同様に、プロンプトに挿入された文字列が、必ずしもプロンプトインジェクションの成功を意味するわけではありません。レビューでは、モデルの境界、生成された出力の権限、利用可能なツール、信頼できないコンテンツがシステム指示から明確に分離されているかを特定する必要があります。

セキュリティに関わるパターンをレビューする

焦点を絞ったレビューでは、すべての一致が悪用可能だと決めつけることなく、頻繁に欠陥を生み出すパターンを調査します。以下のカテゴリは、Agents Please ワークフローの出発点として役立ちます。

共有レポートに実際のエクスプロイトを貼り付けない

無害な概念実証用の値を使用し、トークン、個人データ、内部ホスト名、破壊的なコマンドを編集して隠してください。レビューのレポートは、攻撃手順書になることなくリスクを示す必要があります。

パターン確認すべき質問より安全なレビューの兆候
外部 HTTP リクエストユーザーがスキーム、ホスト、ポート、リダイレクトを制御できるか?検証済みの宛先と制限されたネットワークアクセス
データベースクエリ入力はデータとしてバインドされているか、それともクエリテキストに連結されているか?パラメータ化クエリと最小限の権限
ファイルアップロード種類、サイズ、名前、保存場所が制限されているか?ランダム化された名前、分離されたストレージ、安全な解析
テンプレートまたは HTML 出力信頼できないコンテンツが出力コンテキストに合わせてエンコードされているか?コンテキストに応じたエスケープと安全なレンダリング
認可チェックすべてのオブジェクトに対してサーバー側でアクセスが確認されているか?集中管理されたポリシーと所有権の検証
プロンプトの構築信頼できないテキストがタスクの境界を上書きできるか?区切り付きコンテンツ、制限されたツール、出力の検証
デシリアライズ攻撃者が制御するデータによってクラスまたは動作を選択できるか?安全な形式と明示的なスキーマ
テナントまたはアカウントのコンテキスト呼び出し元が別のスコープを直接選択できるか?サーバー由来のコンテキストと認可チェック

パッチレビューの基準

提案された修正は、報告された症状を隠すだけでなく、原因に対処する必要があります。次の点を確認してください。

  • 正しい信頼境界で入力を検証している。
  • 正当なユーザーに対して期待される動作を維持している。
  • 関連するすべてのコードパスに認可を適用している。
  • 機密情報を漏えいさせずに失敗を処理している。
  • 修正がなければ失敗する回帰テストを含んでいる。
  • 別のエンドポイントやバックグラウンドジョブを通じて、2 つ目のバイパスを導入していない。

入力制御

危険な操作の前に、形式、長さ、エンコーディング、許可された値を検証します。

アクセス制御

信頼できるサーバーコンテキストから ID とスコープを導出し、オブジェクトレベルの権限を適用します。

出力制御

ユーザー、インタープリター、外部サービスに返す前に、データをエンコード、フィルタリング、制約、またはレビューします。

レビューを完了し、修正を追跡する

レビューは、エージェントがレポートを生成した時点では完了しません。チームがどの検出結果が有効かを判断し、担当者を割り当て、適切な修正を適用し、変更が安全に動作することを確認した時点で完了します。

受け入れた検出結果と未解決の質問は分けて管理します。これにより、長いレポートがリリースを妨げる少数の問題を覆い隠すことを防げます。また、将来同じコードパスに遭遇するレビュアーにとって有用な履歴にもなります。

承認には証拠が必要

重要な検出結果について、修正済み、緩和済み、担当者付きで受け入れ済み、または証拠を文書化してクローズ済みのいずれかの処置が決まってから承認します。「エージェントが安全だと言っている」は、十分な処置とはいえません。

レビュー完了表

段階必要な証拠完了の兆候
発見スコープと変更ファイルのマップレビュアーが変更内容を理解している
分析パスと推論を伴う検出結果主張を検証できる
トリアージ影響と信頼度のラベル優先順位が明確になっている
修正パッチと回帰テスト根本原因に対処している
検証テスト、手動チェック、または安全な再現修正が意図どおり機能している
クローズ担当者、ステータス、理由レビュー記録を監査できる

コードレビュー完了チェックリスト:

  • 正確なコミットとレビューのスコープを確認する
  • シークレットを削除し、エージェントの権限を制限する
  • 信頼できない入力から機密操作までを追跡する
  • 影響と信頼度に基づいて検出結果を分類する
  • テストまたは安全な再現によって修正を検証する
  • 受け入れたリスクと未解決のフォローアップ作業を記録する

有用な最終レポートは、簡潔でありながら具体的です。受け入れた各問題について、影響を受けるコンポーネント、リスク、証拠、推奨される修正、担当者、検証ステータスを含めます。却下した各問題については、無効と判断した制御または前提条件を記録します。これにより、後続のプルリクエストで同じ調査を繰り返す必要が減ります。

同じ誤検知が頻繁に発生する場合は、レビュー指示を改善するか、リポジトリのガイダンスを追加します。同じ実際の欠陥が繰り返し発生する場合は、手動検出を繰り返し頼るのではなく、共有ヘルパー、フレームワークの制御、lint ルール、テストフィクスチャ、またはアーキテクチャの変更に投資します。

レビューをチームの知識に変える

受け入れた検出結果、却下した検出結果、推奨される修正の短い例を保存します。時間が経つにつれ、これらの例によって将来のエージェント指示がより正確になり、人間のレビュアーが判断基準を調整しやすくなります。

FAQ:Agents Please コードレビューワークフロー

Q: Agents Please コードレビューガイドのワークフローを開始する最も安全な方法は何ですか?

使い捨てのチェックアウト、正確なコミット、読み取り専用のツール、サニタイズ済みのデータ、狭いファイルスコープから始めます。セキュリティ上の検出結果を求める前に、変更内容をマッピングするようエージェントに依頼してください。

Q: AI が生成した脆弱性は、直ちにプルリクエストをブロックすべきですか?

それだけでは不十分です。レポートを仮説として扱い、完全なデータフロー、既存の制御、悪用可能性、期待される動作を確認してください。適格なレビュアーがリスクを確認するか、チームが文書化されたポリシーを採用した後にのみブロックします。

Q: プロンプトインジェクションの懸念はどのようにレビューすべきですか?

どのコンテンツが信頼できないのか、それがどこでプロンプトに入るのか、モデルがどのような権限を持つのか、どのツールやアクションを利用できるのか、出力がどのように検証されるのかを特定します。リスクは文字列補間だけでなく、システム全体の境界によって決まります。

Q: コードレビューの検出結果を実行可能にするものは何ですか?

実行可能な検出結果には、影響を受けるファイルまたはシンボル、入力からシンクまでの経路、現実的な影響、信頼度、対象を絞った修正案、安全な検証方法が含まれます。

最後に

AI を使用してレビュー範囲を広げ、証拠を整理します。ただし、スコープの管理、リスクの判断、最終承認は、責任を負う人間のエンジニアが行うようにしてください。