CLI Defenderインストールして実行する (プレビュー)

Defender CLIは、Microsoft DefenderのMDASHおよびその他のセキュリティスキャナー用のコマンドラインツールです。 マルチモデルのエージェントAIシステムを用いて、セキュリティおよびエンジニアリングチームがコードの脆弱性を検出し、修正するのを支援します。 Defender CLIを通じて、エージェントティックなコードスキャンを実行し、ローカルやCI/CDパイプライン内で修正を適用できます。 Defender CLIはWindows、macOS、Linux向けにスタンドアロン実行ファイルとして配布されています。

Prerequisites

Defender CLI をインストール

プラットフォーム用の CLI バイナリをダウンロードします。

# Windows x64
Invoke-WebRequest ` 
    -Uri "https://cli.dfd.security.azure.com/public/v2/latest/Defender_win-x64.exe" ` 
    -OutFile "defender.exe"

スキャン

デフォルトではスキャンは非同期で実行されます。 つまり、スキャンを送信してもスキャナーは完了を待つことはありません。 すぐに終了し、 ジョブIDを返します。 ジョブIDは永続的な参照として機能し、その後スキャン結果アーティファクトのダウンロード、ジョブのキャンセル、ジョブ完了の待機、または現在の状態の照会に利用できます。

以下のコマンドでは、 <TARGET_SOURCE> のプレースホルダーをターゲットのソースコードディレクトリへのパスのいずれかに置き換えます。例えば my-code\project1。 コードのディレクトリ内でDefender CLIを実行している場合は、.を現在のディレクトリを参照してください。

# Step 1: Submit and get a job ID
./defender scan ai-scan submit <TARGET_SOURCE>
# Output: Job submitted: <JOB_ID>

# Step 2: Check job status
./defender status <JOB_ID>

# Step 3: (Optional) Wait for completion and download results
./defender status wait <JOB_ID> -o results.sarif

スキャン設定を使用してスキャン(プレビュー)

スキャン構成は、どのAIモデルがスキャンを実行するかを選択します。 2つの構成が利用できます:

コンフィギュレーション モデル 次の場合に使用します。
Standard GPT-5.4、GPT-5.3-Codex、GPT-5.4-Mini 汎用エージェントコードスキャン(標準構成)。
mai-cyber (プレビュー) GPT-5.4、GPT-5.3-Codex、GPT-5.4-Mini + MAI-Cyber-1-Flash サイバー特化の MAI-Cyber-1-Flash モデルで拡張されたベースライン モデルが必要です。

利用可能な構成と現在のデフォルトを参照してください:

./defender scan profile model list
./defender scan profile model show-default

特定の設定で1回スキャンを実行してください(このスキャンのデフォルト設定のみを上書きします):

# Standard:
./defender scan ai-scan submit <TARGET_SOURCE> --model-profile standard

# May Cyber:
./defender scan ai-scan submit <TARGET_SOURCE> --model-profile mai-cyber

重大度で絞り込む

スキャンを提出する際は、返送される結果を重症度の高い場合や重大な所見に限定できます。 これにより、リスクが最も大きい問題に出力が絞られ、トリアージが迅速化され、チームが最も重要な箇所で修復の優先順位をつけることができます。 --severityフラグを使って閾値を設定し、low(デフォルト)、medium、high、criticalの許容値を設定します。

./defender scan ai-scan submit <TARGET_SOURCE> --severity high

ジョブを管理する

Defender CLIのstatusコマンドは、コードネームMDASHで追跡されるジョブへの迅速なアクセスを提供します。 現在追跡中のすべてのジョブを一覧表示したり、特定のジョブの詳細を閲覧したり、SARIFファイルをブロックしてダウンロードしたり、特定のランごとにSARIFを再ダウンロードしたり、その他多くの機能が可能です。

./defender status                         # List all tracked jobs
./defender status <JOB_ID>                # Show details of a job
./defender status result <JOB_ID>         # Download a finished report
./defender status log <JOB_ID>            # Print the path of the auto-saved debug log for a run

結果をダウンロードしてください

スキャンはデフォルトで非同期で動作し、完了までに時間がかかります。 ジョブの状況を繰り返しチェックする代わりに、 wait コマンドはジョブ完了を待ち、結果をSARIFファイルにダウンロードします。 詳細は、 端末からのエージェントティックコードスキャン結果のレビューを参照してください。

次のコマンドはスキャン <JOB_ID> が終わるのを待ってから、結果を results.sarifに保存します。

./defender status wait <JOB_ID> -o results.sarif

結果を再ダウンロードしてください

ジョブが終端状態(完了 または 失敗)に達したら、以下のコマンドで結果をダウンロードします。 このコマンドは、ローカルのSARIFファイルをクリアした場合、元の wait コマンドが終了する前に中断された場合、あるマシンからジョブを送信したが別のマシンから結果を取り出したい場合に特に有用です。 <JOB_ID>を実際の職種IDに置き換えてください。

./defender status result <JOB_ID>

ジョブをキャンセル

スキャンをキャンセルしても、既に使用されているトークンは払い戻されません。 MDASH は、スキャン中に、作業の処理時にトークンを使用するライブ LLM 呼び出しを行います。 既に実行されているスキャンを取り消すと、MDASH は新しい作業のスケジュールを停止しますが、キャンセルが有効になるまでに使用されたトークンに対して課金されます。 スキャンをキャンセルすると、将来の作業から追加のトークン消費を防ぐことができますが、既に使用されているトークンは払い戻されません。

./defender status cancel <JOB_ID>

Troubleshooting

Defender CLIの問題をトラブルシューティングする際、管理者やサポートチームから自動保存ログの提供を求められることがあります。 特定の実行のログパスを見つけるには、スキャンが行われた同じマシンで以下のコマンドを使い、 <JOB_ID> をスキャンのジョブIDに置き換えます。

./defender status log <JOB_ID>

予期しないCLIの挙動をトラブルシューティングする際、一つの選択肢として、より高いログレベル(例えばdebug)でコマンドを再実行し、デフォルトの情報レベルよりも詳細な診断出力を表示します。 これにより原因を特定するのに役立ちます。 ただし、この方法はコマンドを再度実行して問題を再現できる場合にのみ機能します。 以下の例をあなたのシナリオに合わせて適応させるために:

  • <failing-command>のプレースホルダーを失敗しているコマンドに置き換えてください。 例えば: scan ai-scan submit .
  • --log-level適切なレベルに設定してください。 期待値は trace、 debug、 info (デフォルト)、 warn、 error。
  • 必要に応じて、--log-file をファイル パスに設定します。 このフラグを使用すると、CLIはデバッグ出力をコンソール内だけでなく指定されたファイルに書き込みます。
./defender <failing-command> --log-level debug --log-file ./defender-debug.log

例えば、スキャンが失敗した場合はコマンドを再実行し、以下の通りに --log-level フラグをコマンドに追加します。

./defender scan ai-scan submit <TARGET_SOURCE> --log-level debug