コーディング エージェントのセキュリティ (早期アクセス)
This feature is in Early Access. During this time, aspects of the functionality may still be developed, and this documentation may not always be up to date. If you have any questions, contact Amplitude Support.
WaveはGitHubとコーディングエージェントを使用して、オポチュニティに豊富なプロダクトコンテキスト(機能の動作方法、バグの発生箇所、実装の変更内容など)を提供します。このアクセスは厳格な分離モデルに従っているため、エージェントは資格情報を公開したりソースコードを保持したりすることなくプルリクエストを調査したり開いたりすることができます。
このページは、リポジトリの接続やコーディングエージェントの実行に関するセキュリティとデータ処理の詳細が必要な場合に使用してください。 リポジトリに接続する方法については、「コンテキストに接続」を参照してください。 Amplitude AIのプライバシーコントロールをより広範にご覧になるには、プライバシーとセキュリティをご覧ください。
GitHubとコーディングエージェントが重要な理由
オポチュニティには、作業の計画やバグ調査をするために正確なプロダクトと実装のコンテキストが必要です。Amplitudeは3つのコンポーネントを通じてそのコンテキストを提供します:
- コードのインデックス作成:組織全体のエージェントに対して機能の動作やイベントを記述するマークダウンコンテキストを構築します。
- 対象を絞った質問のためのコーディングエージェント:Waveがコードベースの回答を必要とする場合に、セキュアなサンドボックス内で読み取り専用の調査を実行します。
- 実装のためのコーディングエージェント:同じサンドボックスモデルを使用して、コードベースにプランを実装し、レビュー用にプルリクエストを開きます。
コードのインデックス作成
コードのインデックス作成により、機能とイベントの動作方法を説明したマークダウンファイルが生成されます。 Amplitudeは、そのインデックスを組織の独自のパーティション内にあるAWSナレッジベースに保存します。 このパーティションはシングルテナントです:Amplitudeはこれを顧客間で共有することはありません。
インデックス作成:
- リポジトリに対しては読み取り専用です。
- ユーザー制御: ユーザーはオンデマンドでインデックスを作成し、再度実行することでインデックスを更新します。
- 組織に適用範囲を限定する:Amplitudeは組織のコンテキスト外でインデックスを使用または検査しません。
- 組織に対しては完全に可視化されており、削除後にAmplitudeがデータを保持することはありません。
一般的なインデックス作成には、リポジトリごとに約5~30分かかります。
対象を絞った質問のためのコーディングエージェント
Waveが機会を生成すると、Waveエージェントは安全なネットワーク分離サンドボックスで実行されるサブエージェントのコーディングを開始できます。 このコードベースの調査により、計画の品質と証拠が向上します。
タスクが変更ではなく質問の場合、Amplitudeは実行から書き込みツールを完全に削除します。 エージェントはコードに対して読み取り専用のままになります。 AIプロバイダーにキーを提供した場合、推論はユーザーの範囲内に留まります。Amplitudeはその使用量をAmplitude自身のアカウントに請求したり、アカウントを通じてそれをルーティングしたりすることはありません。
実装のためのコーディングエージェント
実装の実行では、対象を絞った質問と同じサンドボックス設定を使用します。コーディングエージェントが計画を実装する際は、コードベースで直接作業し、エンジニアリングチームがレビューできるようにプルリクエストを開きます。
自動的にマージされるものはありません。Amplitudeは、実際に変更が加えられたリポジトリごとに独自のブランチ上で1つのプルリクエストを開き、実行の進行に合わせて進捗状況を記録します。この時点から、お客様のビルドシステムとレビュープロセスが引き継がれます。Amplitudeは、変更が機能したかどうかを判断する前に、実験データまたはフラグ測定データを待機します。
リポジトリの範囲
実装エージェントの範囲は、リポジトリ全体です。この機能は、タスクで本当に必要な場合に設定ファイルやCIファイルを変更できます。ブランチ保護とお客様側での必要なレビューは意図された管理手段であり、エージェントが狭いファイルレーンに留まることを前提としていません。
Amplitudeがサンドボックスをどのように保護するか
質問であれ実装であれ、すべてのサブエージェントの実行は同じ分離モデルに従います。つまり、コードに触れることができる部分は認証情報を保持せず、認証情報を保持している部分はコードに触れることができません。
実行ごとに新しい使い捨て環境を実現
Amplitudeは、共有コンテナではなく、各実行ごとに別々の仮想マシンを作成します。 環境は実行開始時に開始され、Amplitudeは実行終了時に環境を破壊します。 実行間で何も引き継がれません。また、Amplitudeはその後ソースコードを保持しません。
非特権実行
エージェントは非rootユーザーとして実行されます。権限を昇格させることはできず、クラスタIDもありません。
永続的な資格情報がありません
別の認証情報ブローカーが、お客様のGitHubトークンとAIプロバイダーキーを保持しています。ブローカーはこれらのクレデンシャルをサーバ側のアウトバウンド要求に追加します。 エージェントとコーディネータは生の認証情報を決して受け取ることはありません。
GitHubトークンはインストール環境に適用され、1時間以内に有効期限が切れるため、プロンプトでどんな指示を出されても、自分の環境外では実行できません。
狭いネットワークアクセス
サンドボックスは、ブローカーを介してのみGitHubとお客さまのAIプロバイダーにアクセスできます。サンドボックスは、Amplitudeの内部システム、クラウドインフラストラクチャのメタデータ、またはその他のお客様の環境に到達することはできません。
テナントの分離
Amplitudeは、組織のあらゆる環境にタグを付けます。セッションの視聴、フォローアップの送信、実行のキャンセルなど、すべてのアクションで、まずその実行が呼び出し元の組織に属しているかどうかを確認します。別の組織による実行リクエストには「forbidden」ではなく「not found」と返されるため、別の組織による実行が存在することを確認することはできません。
事前チェック
ターゲットリポジトリが無効である場合、複数のGitHub所有者にまたがっている場合、またはGitHubアプリのインストールに到達できない場合、Amplitudeは環境を作成する前に実行を拒否します。 これにより、失敗が生じても、孤立したプルリクエストや宛先が誤ったプルリクエストが残されるのを防ぐことができます。
サイレント再試行は行いません
失敗した実行は自動的に再試行されません。 Amplitudeは認証情報がログ行に漏れないように出力内容を編集して失敗を記録し、その後、ユーザーが再試行するかどうかを判断するのを待機します。
Amplitudeが保存する内容
Amplitudeは、Waveコードインデックス出力(機能やイベントの動作方法を説明するマークダウンコンテキスト)を除き、これらのコンポーネントから何も保存しません。そのインデックス:
- 組織から常に完全に可視化されます。
- 組織独自のパーティション内に、シングルテナントとして保存されます。
- ユーザーによって完全に制御されます(ユーザーの条件に従って作成、更新、削除)。
- 削除後は保持されません。
プロンプト、モデルの応答、サンドボックス実行中のソースコード読み取りなど、その他のすべての情報は保持または記録されません。 Amplitudeが記録するその他の情報は、オポチュニティ自体の作業履歴のみです(ブランチ名、プルリクエストのリンクとステータス、差分サイズ、CIステータス、リプレイ可能なセッションのトランスクリプト。このいずれもお客様のコードベースのコピーではありません。
代替プロバイダーとしての Cursor
また、Amplitude は Amplitude 自身のエージェントではなく、Cursor 経由でコーディング作業を開始することもサポートしています。Cursorの実行は、組織とCursorとの独自の合意に基づき、完全にCursorのインフラストラクチャ上で実行されます。 このページのサンドボックスとクレデンシャルブローカーモデルは、Amplitude 独自のエージェントについて具体的に説明したものです。
これは役に立ちましたか?