ScanveilGitHub App security scanner on GCP
Repository policy
Advisory by default
Schema published

.scanveil/config.yml

リポジトリごとの検査ポリシーを 1 ファイルで調整します。未配置なら advisory mode で動作し、PR をブロックしません。YAML language server 用の JSON Schema は /schema/scanveil.config.schema.json で公開しています。

JSON Schema for YAMLField reference

PR を止めるか

導入直後は findings を可視化するだけにして、既存開発フローを止めません。

Default: advisory

何を検査するか

PR diff と lockfile を組み合わせ、コード由来と依存関係由来のリスクを分けて見ます。

Default: LLM + OSV

重複をどう扱うか

同じ箇所への表現違いを抑制し、Scan history と GitHub Checks を読みやすく保ちます。

Default: similarity 0.70

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: true

Check 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

既定値、型の意図、運用上の影響をまとめています。

FieldDefaultMeaning
version1設定ファイル形式のバージョンです。現在は 1 のみ対応します。
checks.conclusionModeadvisoryadvisory は PR をブロックしません。fail_on_threshold は threshold 以上の finding で Check を failure にします。
checks.failThreshold.osvcriticalOSV finding が Check を failure にする最小 severity です。
checks.failThreshold.llmcriticalLLM finding が Check を failure にする最小 severity です。
scan.llm.enabledtruePR scan の diff review と repository-wide Scan の source snapshot review を有効化します。
scan.llm.excludePathsdist/**, vendor/**LLM review から除外する path glob です。
scan.llm.agent.timeoutSeconds900LLM agent のアプリケーションレベル timeout です。最大 1800 秒です。
scan.llm.agent.skills/plugins/mcpskills: true, plugins: false, mcp: falseAgy runner が監査用の .scanveil/skills、.scanveil/plugins、.scanveil/mcp を読むかを制御します。
scan.osv.enabledtrue依存関係 lockfile を使った OSV scan を有効化します。
scan.osv.lockfileGlobs主要 package manager の lockfileOSV scan 対象として扱う lockfile path の glob です。
suppression.enabledtrue過去 finding との類似度に基づく重複抑制を有効化します。
suppression.similarityThreshold0.70重複扱いにする最小 similarity です。0 から 1 の範囲です。
suppression.maxNearestNeighbors10類似 finding 探索で参照する近傍件数です。
schedule.enabledtrue定期実行される scheduled Scan の対象にするかを制御します。false にするとこの repository の scheduled Scan をスキップします。PR scan と manual scan には影響しません。