> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
> Use this file to discover all available pages before exploring further.

# セキュリティスキャン

> Qoder CLI のレイヤー化されたセキュリティスキャン機能と、自動チェックおよび手動セキュリティスキャンの設定方法を説明します。

Qoder CLI には、コード生成やコード変更の過程で高リスクなセキュリティ問題の発見を支援するセキュリティスキャン機能が組み込まれています。日常的な開発に継続的なチェックを追加し、危険な関数呼び出し、インジェクションリスク、機密情報漏えい、データフロー上の問題を早期に見つけるのに役立ちます。

セキュリティスキャンは、セキュリティチームによる完全な監査を置き換えるものではありません。主に現在のタスクで生成されたコードと増分のコード変更を対象にし、コミット前に対処可能な問題を見つけることを目的としています。

## 入口

インタラクティブ TUI で次のコマンドを入力します：

```text theme={null}
/security-settings
```

このコマンドはセキュリティスキャン設定パネルを開きます。パネルでは、各スキャンレベルの状態を確認し、オン／オフを切り替えることができます。

セキュリティスキャンはデフォルトで有効です。設定はユーザー設定に保存され、各スキャンレベルの有効／無効を制御します。L1 Static Check は無料です。L2 Lightweight Scan と L3 Deep Scan は、製品内の表示および現在のアカウントの課金ルールに応じて Credits を消費する場合があります。

## スキャンレベル

Qoder CLI のセキュリティスキャンは 3 つのレベルに分かれています。各レベルは個別に有効化または無効化できます。

### L1 Static Check

L1 は現在のタスクで生成されたコードを対象にします。高リスクなパターンマッチングにより、危険な関数呼び出し、明らかな機密情報漏えいパターン、生成コードで発生しやすいその他のリスクを素早く検出します。

L1 Static Check は無料の基本チェックです。現在のタスク中に高リスクなコードパターンを素早く検出するため、デフォルトで有効にしておくことをおすすめします。

### L2 Lightweight Scan

L2 は増分のコード変更を対象にします。コードの意味をより深く理解し、SQL インジェクション、リモートコマンド実行、機密データ漏えいなどのリスクを識別します。

日常的なコーディング中により深いセキュリティフィードバックが必要な場合は、L2 を有効にしてください。

### L3 Deep Scan

L3 は増分のコード変更に対して、より深い分析を行います。ファイルや関数をまたいでデータフローを追跡し、単一ファイルの視点では見つけにくい隠れた脆弱性の発見を支援します。

L3 は、コミットの準備ができた後、レビュー、push、PR、リリース、デプロイなどの引き渡し前に使うのに適しています。作業ツリーの変更だけがある場合は、L2 にフォールバックすることがあります。

## スキャンレベルの設定

`/security-settings` を開いた後、矢印キーでスキャンレベル間を移動し、Enter または Space でオン／オフを切り替えます。`q` または Esc でパネルを閉じます。

パネル内の各項目には現在の状態が表示されます：

* `on` はそのレベルが有効であることを示します。
* `off` はそのレベルが無効であることを示します。
* `default` はデフォルト値が使用されていることを示します。
* `saved` は値がユーザー設定に保存されていることを示します。

設定パネルはユーザー設定のみを書き込みます。プロジェクト設定は変更しません。

## 設定ファイルを使用する

ユーザーレベルの `settings.json` でもセキュリティスキャンを設定できます。設定項目は `securityScan` の下にあります：

```json theme={null}
{
  "securityScan": {
    "l1StaticCheck": true,
    "l2LightweightScan": true,
    "l3DeepScan": true
  }
}
```

3 つの設定項目はいずれもデフォルトで `true` です。特定のレベルを無効にするには、対応するフィールドを `false` に設定します：

```json theme={null}
{
  "securityScan": {
    "l1StaticCheck": true,
    "l2LightweightScan": false,
    "l3DeepScan": false
  }
}
```

## 自動スキャンの仕組み

セキュリティスキャンが有効な場合、Qoder CLI は設定に応じて組み込みのセキュリティ機能を読み込み、どのチェックを有効にするかを決定します。

L1 が有効な場合、Qoder CLI は関連するツール呼び出しの後に静的チェックを実行します。L1 が無効な場合、この自動チェックは読み込まれません。

L1、L2、L3 のいずれか 1 つでも有効な場合、Qoder CLI は統合されたセキュリティスキャン機能を保持します。3 つすべてが無効な場合、セキュリティスキャン関連の機能は読み込まれません。

## 手動セキュリティスキャン

自動スキャン設定に加えて、Qoder CLI は手動セキュリティスキャン用の Skill も提供します：

```text theme={null}
/security-scan
```

このコマンドは、意図に応じて次の 3 つのワークフローのいずれかにルーティングします：

* **プロジェクト/ファイルスキャン**：リポジトリ全体、または明示的に指定したファイルやディレクトリをスキャンします。
* **L2 軽量レビュー**：現在の作業ツリーの変更をレビューします。
* **L3 深層レビュー**：push、PR、リリース、デプロイ、その他の引き渡し前に、まだレビューされていないコミット済み変更をレビューします。

単に `/security-scan` と入力すると、L3 深層スキャン、L2 軽量スキャン、プロジェクト/ファイルスキャンを選ぶピッカーが開きます。プロジェクト/ファイルスキャンを選び、スコープを指定していない場合、Qoder CLI はリポジトリ全体をスキャンするか、特定のファイルやディレクトリをスキャンするかを確認します。

モードやスコープをコマンドに直接含めることもできます：

```text theme={null}
/security-scan L2 軽量レビュー
/security-scan L3 深層レビュー
/security-scan リポジトリ全体をスキャン
/security-scan src/auth と src/export をスキャン
```

いずれかのセキュリティスキャンレベルが有効であれば、プロジェクト/ファイルスキャンを使用できます。L2 と L3 はそれぞれ個別の設定スイッチに従います。明示的に要求した L2 または L3 が無効な場合、Qoder CLI は `/security-settings` で有効化するよう案内します。暗黙的な引き渡し時の L3 チェックは、L3 が無効な場合は何も表示しません。

## 利用に適した場面

セキュリティスキャンは、次のような場面で役立ちます：

* Qoder CLI が認証、決済、データエクスポート、ファイルアップロード、コマンド実行など、セキュリティ上重要なコードを生成または変更した後。
* コミット前またはコードの引き渡し前に、現在の変更が高リスクな問題を導入していないかを素早く確認したい場合。
* コードレビュー前に、セキュリティ観点のフィードバックを得たい場合。
* 自動化モードを使用しながら、継続的な安全チェックを有効にしておきたい場合。

## 注意事項

セキュリティスキャンは、現在のタスクと増分変更に重点を置きます。プロジェクト/ファイルスキャンではリポジトリ全体または指定したパスをスキャンできますが、それでも完全なセキュリティ監査ではなく、すべての脆弱性を検出することを保証するものでもありません。

結果は、現在のコードコンテキスト、アクセス可能なファイル、有効なスキャンレベルに依存します。重要な業務コードでは、人によるセキュリティレビュー、テスト、依存関係スキャン、組織内のセキュリティプロセスと組み合わせて使用することをおすすめします。

セキュリティスキャンが期待どおりに動作しない場合は、次を確認してください：

* `/security-settings` で対象のスキャンレベルが `on` になっているか。
* ユーザーレベルの `settings.json` で `securityScan` の項目が明示的に無効化されていないか。
* 設定ファイルを手動で編集した場合、JSON が正しく、ユーザー設定に保存されているか。
* 現在のタスクでスキャン対象となる新規または変更コードが生成されているか。

## 関連ドキュメント

* [権限](/ja/cli/permissions)：ツール承認、権限モード、allow/deny ルールについて説明します。
* [Hooks](/ja/cli/hooks)：Qoder CLI がツール呼び出しやセッションライフサイクル中に自動化ロジックを実行する仕組みを説明します。
* [Skills](/ja/cli/Skills)：Skill によって Qoder CLI に専門的な能力を追加する方法を説明します。
