CodeMender の概要

高度な AI モデルのリリースにより、コードの脆弱性に対する懸念が広まりました。攻撃者がエクスプロイトを生成する新しい機能にアクセスできるようになるにつれて、セキュリティ チームは、攻撃者が脆弱性を悪用する前に脆弱性を事前に発見して修正するという大きな時間的プレッシャーにさらされています。

CodeMender は、コードベースの深い脆弱性を検出、検証、修正できる AI コード セキュリティ エージェントです。CodeMender は、Google DeepMind が設計したプロンプト、スキル、オーケストレーション ロジックを使用して、ファインチューニングされたハーネスを LLM にラップし、モデルをコード セキュリティに特化したエージェント システムに変えます。

仕組み

CodeMender は、コードが多数の言語とシステムタイプにまたがる最新の企業環境の規模と多様性に対応します。

  • 脆弱性を検出する: エージェントがガイドする LLM を使用してコードベースをスキャンし、特別なツールとプロンプト エンジニアリングを活用して、モデルをセキュリティ上の欠陥に集中させます。また、外部のセキュリティ スキャンツールから脆弱性のリストをインポートすることもできます。
  • コードをビルドし、検出された脆弱性を悪用して、悪用可能かどうかを検証することで、脆弱性を検証します。これにより、確認済みの脆弱性の優先順位付けが可能になり、誤検出率が低下します。
  • コードベースの言語と互換性のあるパッチを生成してテストすることで、脆弱性を修正します。

3 つのステージすべてで、CodeMender にコンテキストを提供して、アプリケーションと脅威モデルのニュアンスを考慮するようにできます。LLM と CodeMender のファインチューニングされたハーネスを組み合わせることで、LLM 単独で脆弱性を検出して修正する場合よりも高品質の結果が得られます。

システム アーキテクチャ

ユーザーの視点から見ると、CodeMender システムは次の 2 つのコンポーネントで構成されています。

  • エージェント: コア ビジネス ロジックと推論を実行するホスト型マルチエージェント システム。
  • クライアント: マシンで実行されるクライアント。CLI(コマンドの発行と出力の表示)とデーモン(エージェントに代わってコマンドを実行する。ローカル プロセスレベルのサンドボックス内で分離して、コードのコンパイル、テストの実行、脆弱性の検証を安全に行う)の両方として機能します。

対応する言語とフレームワーク

CodeMender は、デフォルトで C/C++、C# / .NET、Go、Java、JavaScript と TypeScript、Kotlin、Python、Ruby、Rust、PHP をサポートしています。また、これらの言語内の標準ライブラリと、一般的なエンタープライズ フレームワーク(HTML/CSS、Django、Flask、React、Spring Boot、ASP.NET、Express など)を幅広くサポートしています。

記載されているプログラミング言語は、絶対的な制限ではありません。CodeMender は AI コード セキュリティ エージェントであるため、基盤となるモデルが理解できる言語のコードを分析して修復できます。サポートは、一般に、非独自言語で利用できます。

追加のプログラミング言語のスキャン

CodeMender を構成して、デフォルト セットに含まれていないプログラミング言語をスキャンするには、次のいずれかの方法を使用します。

  • グローバル構成: プログラミング言語のファイル拡張子を、グローバル CodeMender ~/.codemender/config.yaml 構成ファイルの scan.extensions.include セクションに追加します。
  • リポジトリごとの構成: プログラミング言語のファイル拡張子を、リポジトリ内の CodeMender config.yaml 構成ファイルの scan.extensions.include セクションに追加します。

たとえば、追加の言語やスクリプト形式をスキャンするには:

scan:
  extensions:
    include:
      # Default languages
      - .py
      - .java
      - .go
      - .js
      - .jsx
      - .mjs
      - .cjs
      - .ts
      - .tsx
      - .c
      - .cc
      - .cpp
      - .cxx
      - .h
      - .hpp
      - .cs
      - .rs
      - .kt
      - .kts
      - .rb
      - .php
      # Additional / custom languages
      - .swift
      - .scala
      - .sh

  # Exclude build, dependency, cache, and artifact directories
  exclude_dirs:
    - node_modules
    - vendor
    - dist
    - bin
    - target
    - obj
    - build
    - .gradle

スキャン オプションの構成の詳細については、構成パラメータ(config.yaml)をご覧ください。

品質に関する注釈

CodeMender は、言語ごとの正式な評価を公開していません。デフォルトの言語は、ベンチマークの対象範囲が最も広い言語を反映しています。他の言語の結果は異なります。組織で特定の言語を優先して詳細な評価やデフォルトの組み込みを行う必要がある場合は、Google アカウント チームにお問い合わせください。

サポートされているモデル

CodeMender は次のモデルをサポートしています。

クリックして、サポートされているモデルを開く

CodeMender CLI コマンドを実行するときにモデルを指定するには、モデルを指定するをご覧ください。

サポートされるリージョン

CodeMender は世界中で利用できます。

トークンの使用状況を追跡する

CodeMender は、コマンドの実行中のライブ ステータス行と、コマンドが正常に完了したときの 1 行の概要の 2 か所でトークンの使用状況を表示します。カウントには、現在のセッションの入力トークン、出力トークン、合計トークンが含まれます。

ライブ ステータス行

cm find、cm fix、cm verify、または cm session resume の実行中に、--compact フラグを渡して、エージェントの動作に合わせて更新されるローリング ステータス行を表示します。

cm find ./src/auth/ --compact

ステータス行には、セッションの累計合計が表示されます。

Tokens: 40k in / 12k out / 60k total

再開されたセッションは、前の実行が終了したところからカウントを続行します。total カウントにはモデルの内部推論トークンが含まれる場合があるため、in + out を超えることがあります。

終了の概要

コマンドが正常に完了し、少なくとも 1 つのツールステップが実行されると、CodeMender は経過時間とトークンの合計を含む 1 行の概要を出力します。

✅ Completed 14 tool steps in 3m 42s | Tokens: 40k in / 12k out / 60k total

課金対象のトークン使用量

Google Cloud プロジェクト全体の累積請求対象トークンの使用量と費用傾向を表示するには、Cloud Billing の請求レポートと費用傾向の表示をご覧ください。

CLI の使用を開始する

CLI ツールを設定し、ワークスペースを初期化してスキャンを開始します。

前提条件

CodeMender CLI を初期化する前に、環境が正しく準備されていることを確認してください。

  • Google Cloud プロジェクトを設定する: 必要な API と IAM ロールを使用して Google Cloud プロジェクトを設定します。
  • CodeMender CLI をダウンロードする: オペレーティング システム用の CodeMender CLI バイナリをダウンロードしてインストールします。
  • Google Cloud 認証情報を構成する: CLI を認証するように Google Cloud アプリケーションのデフォルト認証情報(ADC)を構成します。
  • ソースコードをプロビジョニングする: スキャンするプロジェクトのソースコードをワークスペースにクローンするか、コピーします。
  • サンドボックスを構成する: サンドボックス環境のディレクトリ マウント、ネットワーク アクセス プロファイル、セキュリティ例外を定義します。

モデルの指定

デフォルトでは、CodeMender は Gemini 3.8 Flash を使用します。デフォルトのモデルをオーバーライドするには、対応するモデル ID を指定して --model フラグを渡します。

  • Gemini 3.8 Flash(デフォルト): --model gemini-3.8-flash
  • Gemini 3.7 Flash: --model gemini-3.7-flash
  • Gemini 3.6 Flash: --model gemini-3.6-flash
  • Gemini 3.5 Flash: --model gemini-3.5-flash
  • Gemini 3.1 Pro プレビュー版: --model gemini-3.1-pro-preview

--model フラグは次のコマンドでサポートされています。

  • cm find
  • cm verify
  • cm fix

これらのコマンドのいずれかを実行するときにモデルを指定するには、次の構文を使用します。

cm COMMAND TARGET --model MODEL_NAME

セキュリティとデータ プライバシー

次のセクションでは、CodeMender のセキュリティ モデル、データ保持ポリシー、アクセス制御の概要について説明します。

CodeMender はどのようなデータをクラウドに送信しますか?

CodeMender を使用すると、ローカル CLI ツールがコードへのアクセスを仲介するため、完全なソースコード リポジトリが Google のサーバーにアップロードされることはなく、ホストされているエージェントがそれらを個別に複製することもありません。

代わりに、CLI は Google がホストするエージェントに送信するデータを厳密にローカライズします。これには次のものが含まれます。

  • 対象ファイルのコンテンツまたはコード スニペット、脆弱性情報、提案されたパッチ、コマンド実行結果。
  • メタデータ、診断、エラー、使用状況テレメトリー(消費されたトークンやコマンドの所要時間など)。

Google がお客様のソースコードを使用して基盤モデルの重みをトレーニングすることはありません。

保持ポリシーとは

CodeMender では、厳格な短期データ保持ポリシーが使用されています。

  • 最長 7 日間の保持: ユーザーが中断したスキャンをシームレスに再開できるように、コード スニペットやトラッキング状態などのセッション データを Gemini Enterprise Agent Platform のストレージに最長 7 日間保持します。7 日後に、システムによって自動的に削除されます(データ保持ゼロを参照)。
  • 明示的な削除: お客様は 7 日間待つ必要はありません。DeleteInteraction を呼び出すことで、すべてのセッションデータの即時クリーンアップをトリガーできます。
  • エフェメラル検出結果: 脆弱性の検出結果とパッチは、長期間存続するデータベースに保存されません。パイプラインの実行中にメモリに蓄積されます。

データにアクセスできるユーザー

CodeMender は、人間の可視性に関して「ゼロデータアクセス」アプローチを使用します。

  • 人間によるアクセスなし: 人間のグループや Google エンジニアは、本番環境で顧客データを読み取ることはできません。
  • オペレーターの可視性なし: 本番環境のデバッグやエラー トラッキングの場合でも、Google オペレーターは制限されており、顧客のソースコード コンテキストや一時的なセッション状態を確認することはできません。
  • 厳格な分離: 共有インフラストラクチャ内のテナントのプライバシーを保護するため、組織と顧客の課金プロジェクトごとにすべてのデータを論理的に分離し、アクセス制御します。
  • VPC Service Controls(VPC-SC): 環境をさらに保護するために、CodeMender のアーキテクチャは VPC Service Controls(VPC-SC)を完全にサポートしています。これにより、リソースの周囲に安全なセキュリティ境界を定義し、ローカライズされたデータがクラウド推論エンジンに送信される際のデータ漏洩のリスクを軽減できます。 Google Cloud

次のステップ

詳細な手順については、次のガイドをご覧ください。