CodeMender は、コードベース内のサイバーセキュリティの深層の脆弱性をスキャン、検証、パッチ適用する自律型 AI コード セキュリティ エージェントです。CodeMender を実行する前に、CLI をダウンロードしてワークスペース オプションを初期化します。
アーキテクチャとセキュリティ モデル
CodeMender は、ローカル ファーストの実行モデルを使用します。
- ホスト型推論エンジン: エージェント推論、脅威モデリング、オーケストレーション ロジックは、Gemini Enterprise Agent Platform で安全に実行されます。 Google Cloud
- ローカル実行 CLI: ソースコードがワークステーションまたは CI/CD コンテナから一括で送信されることはありません。ローカル
cmCLI ツールは、ローカル サンドボックスでファイルの読み取り、ローカルビルドのチェック、概念実証(PoC)エクスプロイトの検証を実行し、Gemini Enterprise Agent Platform の Interactions API を介して、外科手術のようなコード スニペットとツール実行結果のみをクラウド バックエンドに送信します。
環境のセットアップ
CodeMender の使用を開始するには、 Google Cloud プロジェクトを設定し、CLI をダウンロードしてインストールし、認証情報を構成して、ワークスペースを初期化します。
プロジェクトの設定と IAM 権限
CLI をダウンロードして認証情報を構成する前に、必要な API と権限を使用してターゲット Google Cloud プロジェクトが正しく設定されていることを確認してください。
必要な API
プロジェクトで次の Google Cloud API が有効になっていることを確認します。
- Vertex AI API(
aiplatform.googleapis.com) - アクティブなセッションのストリーミングと管理を強化します。 - Cloud Resource Manager API(
cloudresourcemanager.googleapis.com) - ユーザー認証の状態とプロジェクトのメタデータを検証します。
推奨される IAM 事前定義ロール
CLI コマンドを実行するには、ユーザーに次の IAM ロールが割り当てられている必要があります。
- Vertex AI ユーザー(
roles/aiplatform.user) - ユーザーがアクティブ セッションを作成、ストリーミング、管理できるようにします。
CodeMender CLI をダウンロードしてインストールする
CodeMender CLI バイナリは Artifact Registry でホストされています。オペレーティング システムのタブを選択して、CLI をダウンロードしてインストールします。
Linux x86_64
Linux(x86_64)用の CodeMender CLI をダウンロードしてインストールするには:
- 次のいずれかの方法でパッケージをダウンロードします。
- gcloud CLI: 次のコマンドを実行します。
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-linux-amd64.zip \ --destination=./
- curl: 次のコマンドを実行します。
curl -L -o cm-linux-amd64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-linux-amd64.zip:download?alt=media"
- gcloud CLI: 次のコマンドを実行します。
- CLI をインストールします。
unzip cm-linux-amd64.zip chmod +x cm sudo mv cm /usr/local/bin/cm
Linux ARM64
Linux(ARM64)用の CodeMender CLI をダウンロードしてインストールするには:
- 次のいずれかの方法でパッケージをダウンロードします。
- gcloud CLI: 次のコマンドを実行します。
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-linux-arm64.zip \ --destination=./
- curl: 次のコマンドを実行します。
curl -L -o cm-linux-arm64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-linux-arm64.zip:download?alt=media"
- gcloud CLI: 次のコマンドを実行します。
- CLI をインストールします。
unzip cm-linux-arm64.zip chmod +x cm sudo mv cm /usr/local/bin/cm
macOS Intel
macOS(Intel)用の CodeMender CLI をダウンロードしてインストールするには:
- 次のいずれかの方法でパッケージをダウンロードします。
- gcloud CLI: 次のコマンドを実行します。
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-darwin-amd64.zip \ --destination=./
- curl: 次のコマンドを実行します。
curl -L -o cm-darwin-amd64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-darwin-amd64.zip:download?alt=media"
- gcloud CLI: 次のコマンドを実行します。
- CLI をインストールします。
unzip cm-darwin-amd64.zip chmod +x cm mv cm /usr/local/bin/cm
macOS Apple シリコン
macOS(Apple シリコン)用の CodeMender CLI をダウンロードしてインストールするには:
- 次のいずれかの方法でパッケージをダウンロードします。
- gcloud CLI: 次のコマンドを実行します。
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-darwin-arm64.zip \ --destination=./
- curl: 次のコマンドを実行します。
curl -L -o cm-darwin-arm64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-darwin-arm64.zip:download?alt=media"
- gcloud CLI: 次のコマンドを実行します。
- CLI をインストールします。
unzip cm-darwin-arm64.zip chmod +x cm mv cm /usr/local/bin/cm
Windows x86_64
Windows(x86_64)用の CodeMender CLI をダウンロードしてインストールするには:
- 次のいずれかの方法でパッケージをダウンロードします。
- gcloud CLI: PowerShell で次のコマンドを実行します。
gcloud artifacts generic download ` --project=cmoc-prod ` --location=us ` --repository=codemender-cli-production ` --package=cm ` --version=stable ` --name=cm-windows-amd64.zip ` --destination=./
- PowerShell: 次のコマンドを実行します。
Invoke-WebRequest -Uri "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-windows-amd64.zip:download?alt=media" -OutFile cm-windows-amd64.zip
- gcloud CLI: PowerShell で次のコマンドを実行します。
- CLI をインストールします。
Expand-Archive -Path cm-windows-amd64.zip -DestinationPath ./ # Move cm.exe to a permanent folder and add it to your system PATH (e.g. Environmental Variables)
Windows ARM64
Windows(ARM64)用の CodeMender CLI をダウンロードしてインストールするには:
- 次のいずれかの方法でパッケージをダウンロードします。
- gcloud CLI: PowerShell で次のコマンドを実行します。
gcloud artifacts generic download ` --project=cmoc-prod ` --location=us ` --repository=codemender-cli-production ` --package=cm ` --version=stable ` --name=cm-windows-arm64.zip ` --destination=./
- PowerShell: 次のコマンドを実行します。
Invoke-WebRequest -Uri "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-windows-arm64.zip:download?alt=media" -OutFile cm-windows-arm64.zip
- gcloud CLI: PowerShell で次のコマンドを実行します。
- CLI をインストールします。
Expand-Archive -Path cm-windows-arm64.zip -DestinationPath ./ # Move cm.exe to a permanent folder and add it to your system PATH (e.g. Environmental Variables)
Google Cloud 認証情報を構成する
CodeMender CLI は Interactions API を介してクラウドホスト型の推論エンジンとやり取りするため、環境で Google Cloud アプリケーションのデフォルト認証情報(ADC)を構成する必要があります。
認証するには、次のコマンドを実行し、ログイン プロンプトに従います。
gcloud auth application-default login
ワークスペースを初期化する
認証が完了したら、次のステップはローカル環境で CodeMender を初期化することです。CodeMender を初期化すると、状態追跡ファイルが作成され、クラウドホスト型の推論エンジンへの接続設定が確立されて、ローカル ワークスペースが準備されます。
コードベースのルート ディレクトリから cm init を実行して、ローカル状態追跡ファイルを作成し、ベースライン構成を確立します。
cm init
--verify フラグを使用して、クラウドホスト型の推論エンジンへの接続をテストし、ワークスペースの設定を確認します。
cm init --verify
構成パラメータ(config.yaml)
config.yaml の主な目標は、CodeMender のエージェントの動作をローカル システムのセキュリティ、環境の制約、パフォーマンスのニーズに合わせることです。
ホストされている AI エージェントは、ローカル デーモン クライアントを使用してローカル コマンド(コードのビルド、テストの実行、ファイルの編集など)を実行するため、この構成ファイルは、エージェントが実行できることと実行できないことを定義する境界として機能します。
用途
- 場所: デフォルトでは、CLI は初期化されたワークスペース(通常は
.codemender/config.yamlまたは~/.config/codemender/config.yamlなどのグローバル構成ディレクトリ)でこのファイルを探します。 - 実行:
cm find、cm verify、cm fixなどのコマンドを実行すると、ローカル クライアントはこのファイルを読み取って、安全パラメータを設定し、システム バイパスを適用し、無視するファイルまたはディレクトリを指定します。
コアのデフォルト設定
コアのデフォルト パラメータの意味は次のとおりです。
human_confirmation: true(またはrequire_confirmation: true)- 意味: デフォルトでは、CodeMender は、ターミナルで
[Y/n]確認を明示的に求めることなく、ディスク上のファイルを変更したり、シェル コマンドを実行したりすることはできません。 - これがデフォルトである理由: CodeMender は、投機的なパッチを生成したり、脆弱性を検証するためにエクスプロイト スクリプトを実行しようとしたりする可能性があります。手動での確認を強制することで、ローカル環境での誤ったシステム変更や不正なコード実行を防ぐことができます。
- バイパス: 非インタラクティブな CI/CD パイプラインの場合、これは
falseに設定できます。
- 意味: デフォルトでは、CodeMender は、ターミナルで
confirm_writes: false- 意味: ファイル変更のインタラクティブなプロンプトを無効にします。これにより、CodeMender エージェントは、ユーザーの承認を待たずに、セキュリティ パッチを書き込み、ソースファイルをローカル ディスクに直接変更できます。
- これがデフォルトである理由: デフォルトでは、CodeMender はこの安全ガードレールを
trueに設定して、「Human-in-the-Loop」ワークフローを適用します。CodeMender はローカルのコードベースで動作するため、手動での確認(Write? [Y/n]など)を必要とすることで、エージェントがソースファイルに推測的、誤った、または破壊的な変更を加えることを防ぎます。この設定をfalseに切り替えるのは、分離された使い捨てのサンドボックスまたは自動化されたヘッドレス CI/CD パイプラインで実行する場合のみです。
include: [".py", ".java", ".go", ".js", ".ts", ".c", ".cc", ".cpp", ".h", ".rb", ".php"]- 意味: ワークスペースをスキャンするときに CodeMender が取り込んで分析することを承認するファイル拡張子の明示的なリストを定義します。CodeMender は、このリストに指定されていない拡張子を持つリポジトリ内のファイルを自動的にスキップします。
- これがデフォルトである理由: このリストは、スキャン効率を最大化し、エージェントが関連性のないテキスト ファイル、ビルド アーティファクト、バイナリ ファイルに時間とトークンを無駄に費やさないように、主要なプログラミング言語をデフォルトで含んでいます。ただし、最新のアプリケーションでは、デプロイ構成や自動化ツールに脆弱性が埋め込まれていることが多いため、CodeMender がこれらのファイルを無視しないように、このデフォルト リストを手動で拡張して、構成ファイル、スクリプト形式、IaC ファイル(シェル スクリプト、XML、YAML、プロパティ、JSON ファイルなど)を含めることを強くおすすめします。
exclude_paths: ["node_modules", "vendor", "dist", "bin"]- 意味: CodeMender は、ワークスペースのスキャンとコード分析中にこれらのディレクトリを完全にスキップします。
- これがデフォルトである理由: 依存関係やビルド フォルダが大きいと、レイテンシとトークン ペナルティが大幅に発生します。デフォルトで除外することで、高いパフォーマンスと迅速なレスポンス時間を確保できます。
project_paths: []- 意味: ツール実行中に CodeMender がアクセス(読み取り/書き込み)できるディレクトリ パスのリスト。
- これがデフォルトである理由: デフォルトでは空です。これにより、エージェントはスキャン ターゲット ディレクトリ、
.codemenderワークスペース ディレクトリ、/tmpに制限されます。ビルドまたはテストプロセスでこれらのディレクトリ外のファイルにアクセスする必要がある場合は、ここにパスを追加する必要があります。
sandbox:- 意味: プロセスレベルのサンドボックス環境の構成ブロック。
- サブパラメータ:
enabled: true: (ブール値)サンドボックスを有効または無効にします。これをtrue(デフォルト)に設定すると、エージェントはローカル サンドボックス内でツールを実行します。falseに設定すると、エージェントは分離なしでホストシステム上でツールを直接実行します。mounts:(オブジェクト)target_dir: ".":(文字列)サンドボックス内のアクティブ ワークスペースとしてマウントするディレクトリ。CLI は、ワークスペース ルートに対する相対パスを解決します。
network:(オブジェクト)profile: "permissive-closed":(文字列)サンドボックス内のアウトバウンド ネットワーク アクセス プロファイル。特定のドメインや URL パターンの詳細な許可リストはまだサポートされていません。サポートされているプロファイル:permissive-closed(デフォルト): ネットワークを完全に分離します。サンドボックスはすべての送信接続をブロックします。permissive-open: アウトバウンド ネットワークへの完全アクセスを許可します。
security:- 意味: セキュリティ ポリシーの構成ブロック。
- サブパラメータ:
protected_files: []:(文字列のリスト)変更から保護するためにサンドボックス内で読み取り専用でマウントするホストシステムのファイルまたはディレクトリ(例:["~/.ssh/*"])。パスの展開(~)とワイルドカード(*)をサポートします。
model: "gemini-3.5-flash"- 意味: バックエンドの推論ループを駆動するデフォルトのインテリジェンス エンジン。
- これがデフォルトである理由:
gemini-3.5-flashは、パッチを提案するために必要な速度、費用、分析的推論の最適なバランスを提供します。(必要に応じて、ユーザーはこれをgemini-3.1-proにオーバーライドして、より深く複雑な推論を行うことができます)。
vcs: { type: "git" }- 意味:
vcsキーを使用して、プロジェクトで使用するバージョン管理システムのタイプを定義します。この設定を構成しない場合、ツールは Git リポジトリまたは Mercurial リポジトリを自動的に特定しようとします。vcsをnoneに設定すると、CLI は警告を出力しますが、VCS 機能なしで実行を続行します。CodeMender は、この設定を使用して投機的なセキュリティ修正を管理し、コードベースの変更を追跡し、ローカル リポジトリと統合します。 - これがデフォルトである理由: CodeMender は、Git、Mercurial、またはカスタム VCS 構成をサポートしています。Git は、バージョン管理の追跡に関する業界標準であり、差分のシームレスな統合とロールバックの安全性を確保するため、デフォルトになっています。
- 意味:
build: { command: "make build && make test" }- 意味: CodeMender がプロジェクトのコンパイルとビルド、単体テストと回帰テストの実行に使用する正確なシェル コマンドを定義します。
- これがデフォルトである理由: ビルドコマンドとテストコマンドの設定は、検証ワークフローにとって不可欠です。これにより、CodeMender はプロジェクトをコンパイルし、分離されたサンドボックス環境で既存のテストスイートを実行して、生成されたセキュリティ パッチが既存のアプリケーション ロジックを壊すことなく脆弱性を軽減することを証明できます。
実行サンドボックス
ワークステーションを意図しないファイルの変更や予期しないツールの副作用から保護するため、CodeMender CLI はデフォルトで OS レベルのサンドボックス内で実行されます。サンドボックスは、構成で永続的に無効にするか、CLI フラグを使用してコマンドごとにバイパスできます。
このサンドボックスはワークステーションの最初の防御レイヤを提供しますが、完全に分離された仮想マシン(VM)でエージェントを実行する場合よりもセキュリティ保護が弱くなります。
- Linux: カーネル名前空間(
CLONE_NEWNS、CLONE_NEWUSERなど)とseccompフィルタを使用して、マウント ポイントを分離し、システムコールを制限します。 - macOS: 組み込みの
sandbox-exec(シートベルト)メカニズムを使用します。 - Windows(試験運用版):
AppContainer分離とアクセス制御リスト(ACL)を使用します。Windows でのサンドボックス化は試験運用版であり、管理者権限が必要になる場合や、一部のシステム構成と互換性がない場合があります。
サンドボックスの動作
サンドボックスがアクティブな場合:
- ファイル システムの分離: エージェントは、許可されたディレクトリ内のファイルのみを読み書きできます。サンドボックスは、これらのディレクトリ外への書き込みをホストシステムに影響を与えることなく、一時的なメモリ内ファイル システム(tmpfs)にリダイレクトします。
- ネットワーク分離: サンドボックスはデフォルトでアウトバウンド ネットワーク アクセスをブロックします。これにより、エージェント(またはエージェントが呼び出すビルドツール)が予期しない外部接続を行ったり、ワークスペース外にデータを送信したりすることを防ぐことができます。
ビルドと検証中のネットワーク アクセス
サンドボックスではデフォルトでネットワーク分離が有効になっているため(sandbox.network.profile のデフォルトは permissive-closed)、エージェントはツールの実行中にインターネットにアクセスできません。
これにより、ビルドまたは検証ステップで外部依存関係の取得が必要なプロジェクト(build.command の一部として npm install、pip install、go get を実行するなど)に制限が導入されます。ビルドプロセスで外部ウェブサービスにアクセスしようとすると、失敗します。
ネットワークの依存関係の処理
プロジェクトでビルドまたはテストにネットワーク アクセスが必要な場合は、次のオプションがあります。
- 依存関係をプリフェッチする:
cmコマンドを実行する前に、必要な依存関係をすべてホストシステムにインストールします。これにより、ビルドコマンドでネットワーク アクセスが不要になります。 サンドボックスでネットワーク アクセスを有効にする:
config.yamlでネットワーク プロファイルを変更して、アウトバウンド接続を許可します。sandbox: network: profile: "permissive-open"サンドボックスをバイパスする:
--unrestrictedフラグを指定してコマンドを実行すると、その実行に対してサンドボックスとファイル システムの境界が完全に無効になります。
サンドボックスの構成
次のオプションを使用して、サンドボックスを構成して制御できます。
- 永続構成(
config.yaml):config.yamlファイルにsandbox、execution、securityブロックを追加することで、サンドボックスの動作、ファイル システムのマウント、ネットワーク アクセス、セキュリティ ポリシーをカスタマイズできます。詳細については、構成パラメータをご覧ください。 - CLI(
--sandbox)を使用してサンドボックスを制御する:--sandbox=trueまたは--sandbox=falseをcm find、cm verify、またはcm fixに渡すことで、単一の実行に対してサンドボックスを明示的に有効または無効にできます。 - CLI(
--unrestricted)を使用して分離をバイパスする:--unrestrictedフラグを渡すことで、1 回の実行ですべてのサンドボックス保護を一時的にバイパスできます。これにより、ファイル システム パスの境界が無効になり(エージェントがホスト上の任意のパスにアクセスできるようになります)、OS レベルのコンテナ分離(ネットワーク分離を含む)が完全に無効になります。
分離レベルの選択
セキュリティ要件と開発環境に応じて、CodeMender CLI を実行する適切な分離レベルを選択できます。
| メソッド | 説明 | 利点 | 欠点 |
|---|---|---|---|
| 組み込みのサンドボックス(OS レベル) | デフォルトで有効になっています。config.yaml ファイルで無効にするか、CLI フラグを使用してバイパスできます。組み込みの OS 機能(名前空間/seccomp、sandbox-exec、AppContainer(試験運用版))を使用して実行を分離します。 |
軽量。起動時のオーバーヘッドがゼロ。きめ細かい制御でローカル ワークスペース ツールに直接アクセスできます。日常的なローカル開発におすすめします。 | セキュリティは OS カーネル機能に依存します。完全な VM よりも分離が少なく、Windows のサポートは試験運用版であり、管理者権限が必要になるか、一部の構成と互換性がない可能性があります。 |
| コンテナ | コンテナ(Docker など)でエージェントを実行する。 | 優れた隔離性、標準化された環境。 | コンテナ ランタイムが必要。負荷が高い可能性がある。ローカルマシンのツールとの直接的なやり取りができない。 |
| フル VM | 専用の VM でエージェントを実行する。 | 最大限のセキュリティ、完全な分離。 | リソースのオーバーヘッドが大きい、起動が遅い、ローカルマシンのツールとの直接的なやり取りができない。 |
テレメトリー
プロダクトの健全性をモニタリングして改善するために、CLI を介して匿名のテレメトリー データを収集します。収集されたすべてのデータ(基本的な使用状況の指標やパフォーマンス診断など)は完全に匿名化されます。テレメトリーがソースコード、ファイルの内容、調査結果、パッチ、ユーザー ID を収集または送信することはありません。
デフォルトでは、テレメトリーは有効になっています。テレメトリーを無効にする場合は、CM_TELEMETRY_OPT_OUT 環境変数を 1 または true に設定します。
CLI の更新
CodeMender には、CLI の最新バージョンを実行するための組み込みの更新メカニズムがあります。
自動更新のチェック
デフォルトでは、CodeMender CLI はコマンドの実行時にバックグラウンドで更新を自動的に確認します。
- スロットリング: オーバーヘッドを最小限に抑えるため、自動チェックは 24 時間に 1 回のみ実行されます。
- インタラクティブ ターミナル(TTY)が必要: CLI は、インタラクティブ ターミナルで実行されている場合にのみ更新を確認し、プロンプトを表示します。非対話型環境(CI/CD パイプラインやスクリプトなど)では、チェックはスキップされ、警告が
stderrに 1 日に 1 回まで記録されます。 - プロンプト: 新しいバージョンが利用可能な場合は、
stderrにプロンプトが表示されます。none 🆕 A new CodeMender release is available: 1.1.0 Update now? (y/N):「はい」(yまたはyes)を選択すると、CodeMender は更新をダウンロードしてバイナリを置き換え、終了します。新しいバージョンで実行するには、コマンドを再度実行する必要があります。[いいえ] を選択すると、更新はスキップされ、元のコマンドが実行されます。 - オフライン許容度: オフラインの場合や、リリース リポジトリにアクセスできない場合、チェックはエラーを返さずに失敗し、CodeMender はコマンドの実行を続行します。
- バイパス:
--yesフラグまたは-yフラグを任意のコマンドに渡すことで、自動更新チェックをバイパスできます。
手動更新(cm update)
update コマンドを実行すると、CodeMender が更新をすぐにチェックして適用するように強制できます。
cm update
cm update コマンド:
- 24 時間のスロットリングを無視します。
- プロンプトを表示せずに(非インタラクティブ)、アップデートをすぐにダウンロードして適用します。
- インタラクティブ ターミナルは必要ありません(スクリプトと構成管理に安全です)。
CLI が管理者権限を必要とするシステム ディレクトリにインストールされている場合は、sudo を使用して更新を実行します。
sudo cm update