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 は、 Gemini 3.8 Flash Cyber と Gemini 4 Argon Cyber Permissive を、 Fairwind プログラムを通じてアクセスできるお客様向けにサポートしています。

Gemini 4 Argon(gemini-4-argon)には、エクスプロイトの生成や脆弱性の検証に関連するリクエストをブロックするサイバー安全機能が組み込まれています。 gemini-4-argonで安全ブロックが発生すると、 Gemini 3.8 Flash Cyber(gemini-3.8-flash-cyber)に対して自動的に再試行が行われます。 プロジェクトが Gemini 3.8 Flash Cyber にアクセスできない場合は、Gemini 3.8 Flash (gemini-3.8-flash)にフォールバックします。

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

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

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

CLI の使い方

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

前提条件

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

モデルを指定する

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

  • Gemini 3.8 Flash(デフォルト): --model gemini-3.8-flash
  • Gemini 3.8 Flash Cyber: --model gemini-3.8-flash-cyber
  • Gemini 4 Argon: --model gemini-4-argon
  • Gemini 4 Argon Cyber Permissive: --model gemini-4-argon-cyber-permissive
  • 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)を完全にサポートしています。これにより、 Cloud de Confiance リソースの周囲に安全なセキュリティ境界を定義し、ローカル データがクラウド推論エンジンに送信される際のデータ漏洩のリスクを軽減できます。

次のステップ

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