.scanveil/config.yml
リポジトリごとの検査ポリシーを 1 ファイルで調整します。未配置なら advisory mode で動作し、PR をブロックしません。YAML language server 用の JSON Schema は /schema/scanveil.config.schema.json で公開しています。
PR を止めるか
導入直後は findings を可視化するだけにして、既存開発フローを止めません。
何を検査するか
PR diff と lockfile を組み合わせ、コード由来と依存関係由来のリスクを分けて見ます。
重複をどう扱うか
同じ箇所への表現違いを抑制し、Scan history と GitHub Checks を読みやすく保ちます。
Recommended baseline
最初は advisory で導入し、false positive を見てから threshold failure に切り替えるのが安全です。
# yaml-language-server: $schema=https://www.scanveil.kexi.dev/schema/scanveil.config.schema.json
version: 1
checks:
conclusionMode: advisory
failThreshold:
osv: critical
llm: critical
scan:
llm:
enabled: true
scope: pr_diff
excludePaths:
- "dist/**"
- "vendor/**"
agent:
timeoutSeconds: 900
skills:
enabled: true
plugins:
enabled: false
mcp:
enabled: false
osv:
enabled: true
scope: changed_lockfiles
lockfileGlobs:
- "**/pnpm-lock.yaml"
- "**/package-lock.json"
- "**/yarn.lock"
- "**/bun.lock"
- "**/bun.lockb"
- "**/Cargo.lock"
- "**/go.sum"
- "**/requirements*.txt"
- "**/poetry.lock"
- "**/Pipfile.lock"
- "**/uv.lock"
- "**/composer.lock"
- "**/Gemfile.lock"
suppression:
enabled: true
similarityThreshold: 0.70
maxNearestNeighbors: 10
schedule:
enabled: trueCheck policy
GitHub Checks の結論を制御します。advisory は finding があっても success です。
Recommended start
advisory
Blocking mode
fail_on_threshold
Initial threshold
critical
Scan scope
LLM review は source diff/snapshot、OSV は lockfile を対象にします。
PR scan
PR diff + changed lockfiles
Repository scan
default branch snapshot + lockfiles
Common excludes
dist/**, vendor/**
Suppression
LLM finding を正規化し、repository 内の過去 finding と比較します。
Similarity
0.70
Neighbors
10
Storage
Firestore scanFindings
Field reference
既定値、型の意図、運用上の影響をまとめています。
| Field | Default | Meaning |
|---|---|---|
version | 1 | 設定ファイル形式のバージョンです。現在は 1 のみ対応します。 |
checks.conclusionMode | advisory | advisory は PR をブロックしません。fail_on_threshold は threshold 以上の finding で Check を failure にします。 |
checks.failThreshold.osv | critical | OSV finding が Check を failure にする最小 severity です。 |
checks.failThreshold.llm | critical | LLM finding が Check を failure にする最小 severity です。 |
scan.llm.enabled | true | PR scan の diff review と repository-wide Scan の source snapshot review を有効化します。 |
scan.llm.excludePaths | dist/**, vendor/** | LLM review から除外する path glob です。 |
scan.llm.agent.timeoutSeconds | 900 | LLM agent のアプリケーションレベル timeout です。最大 1800 秒です。 |
scan.llm.agent.skills/plugins/mcp | skills: true, plugins: false, mcp: false | Agy runner が監査用の .scanveil/skills、.scanveil/plugins、.scanveil/mcp を読むかを制御します。 |
scan.osv.enabled | true | 依存関係 lockfile を使った OSV scan を有効化します。 |
scan.osv.lockfileGlobs | 主要 package manager の lockfile | OSV scan 対象として扱う lockfile path の glob です。 |
suppression.enabled | true | 過去 finding との類似度に基づく重複抑制を有効化します。 |
suppression.similarityThreshold | 0.70 | 重複扱いにする最小 similarity です。0 から 1 の範囲です。 |
suppression.maxNearestNeighbors | 10 | 類似 finding 探索で参照する近傍件数です。 |
schedule.enabled | true | 定期実行される scheduled Scan の対象にするかを制御します。false にするとこの repository の scheduled Scan をスキップします。PR scan と manual scan には影響しません。 |