Excluding files from review

Skip generated code, build artifacts, and vendored dependencies with file exclusion patterns. Excluded lines do not consume review credits.

Last updated

You exclude files from review with file exclusion patterns. Lines in excluded files never reach the AI reviewer and never count against your review credit (RC) usage. ADO Pilot ships a default exclusion list covering binary formats and files ending in .lock; you add your own patterns for generated code, build outputs, and vendored dependencies.

What the setting controls

FieldTypeDefaultScope merge
fileExclusionPatternsarray of glob patterns[]Additive

Patterns are evaluated against the path of each file in the PR diff. A file is excluded if its path matches any pattern in the merged list (defaults plus your custom patterns).

Default exclusions

These exclusions are always applied — you do not need to add them yourself.

ADO Pilot always excludes these file types from review. Lines in these files do not count toward review credit (RC) usage.

Binary formats

  • Images: .png, .jpg, .jpeg, .gif, .bmp, .ico, .webp, .svg, .tif, .tiff, .avif, .heic, .heif
  • Archives: .zip, .tar, .gz, .rar, .7z, .bz2, .xz, .cab
  • Audio: .mp3, .wav, .flac, .aac, .m4a, .wma
  • Video: .mp4, .mov, .avi, .mkv, .webm, .m4v
  • Executables and libraries: .exe, .dll, .so, .dylib, .a, .lib
  • Compiled bytecode: .class, .pyc, .wasm
  • Fonts: .woff, .woff2, .ttf, .otf, .eot
  • Office documents: .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx
  • Design files: .sketch, .fig, .xd
  • 3D model files: .stl, .fbx, .blend, .gltf, .glb
  • Database files: .db, .sqlite, .mdb, .accdb
  • Mobile app bundles: .apk, .ipa, .aab
  • Disk images: .iso, .dmg, .img

Generated and machine-maintained files

  • Lock files ending in .lock: yarn.lock, poetry.lock, Gemfile.lock, composer.lock
  • Source maps: *.map

The default matcher uses the file's last-dot extension only. Lock files with a different extension — most importantly package-lock.json and pnpm-lock.yaml — are not excluded by default. If you do not want lock-file changes consuming review credits, add them to your org-level fileExclusionPatterns:

fileExclusionPatterns:
  - "**/package-lock.json"
  - "**/pnpm-lock.yaml"

The complete default list covers more than 130 extensions. Custom exclusion patterns you add stack on top of these defaults.

Glob pattern syntax

The same glob syntax used for branch filters:

PatternMeaningMatches
**/*.generated.csAny file ending .generated.cs, at any depthModels/User.generated.cs
build/**Anything under build/build/output.js, build/intermediate/foo.o
**/vendor/**vendor/ at any depthvendor/foo, services/api/vendor/lib/x.go
dist/**Anything under dist/dist/index.js, dist/assets/main.css

Example: .NET / C#

Skip Roslyn-generated partials, designer files, and the obj/ and bin/ build directories.

fileExclusionPatterns:
  - "**/*.generated.cs"
  - "**/*.Designer.cs"
  - "**/obj/**"
  - "**/bin/**"
  - ".vs/**"

Example: Node.js / TypeScript

Skip dependencies, build outputs, and minified bundles.

fileExclusionPatterns:
  - "node_modules/**"
  - "dist/**"
  - "build/**"
  - ".next/**"
  - "**/*.min.js"
  - "**/*.bundle.js"

Example: Python

Skip virtualenvs, bytecode caches, and packaging artifacts.

fileExclusionPatterns:
  - "venv/**"
  - ".venv/**"
  - "__pycache__/**"
  - "**/*.egg-info/**"
  - "build/**"
  - "dist/**"

Example: Go

Skip vendored modules and generated protobuf bindings.

fileExclusionPatterns:
  - "vendor/**"
  - "**/*.pb.go"
  - "gen/**"

Additive merge across scopes

Exclusions from every scope combine. If your organization excludes **/*.generated.cs and a repository adds **/*.min.js, both patterns apply to that repository.

Organization:  ["**/*.generated.cs", "**/package-lock.json"]
Project:       ["build/**"]
Repository:    ["**/*.min.js", "dist/**"]
Effective:     ["**/*.generated.cs", "**/package-lock.json", "build/**", "**/*.min.js", "dist/**"]

In the example above the organization has explicitly added **/package-lock.json to its exclusions — package-lock.json is not excluded by default (see Default exclusions).

A file is excluded if it matches any pattern in the effective set, plus the default exclusions. See Org, project, and repo settings hierarchy.

Cost impact: excluded lines are free

Excluded lines never reach the AI reviewer, so they do not count when ADO Pilot calculates RC usage for a PR. This is the single biggest lever for controlling cost on PRs that touch generated or vendored content.

ChangeWithout exclusionWith exclusion
200 lines of code plus 800 lines of package-lock.json (added to exclusions)2 RC1 RC
50 lines of code plus 20,000 lines of minified JS40+ RC1 RC

Long lines bill higher than the raw line count suggests: a line longer than 200 characters counts as more than one billing line, so genuinely minified JS (a few very long lines rather than 20,000 short ones) typically costs more without exclusion than a simple per-line count implies.

For details on how ADO Pilot calculates RC consumption, see the billing documentation.

What happens when every file is excluded

If every file in the PR matches an exclusion pattern, ADO Pilot detects an empty effective diff and skips the AI review. No inline comments are posted and no RCs are charged — but ADO Pilot still posts a succeeded adopilot/ai-pr-review status check, so a required branch policy on that status doesn't block the PR.

Interaction with other settings

  • Branch does not match the filter — Whole PR is skipped before exclusions are evaluated.
  • Branch matches, all files excluded — Empty-diff skip path; 0 RC charged, but a succeeded status check is still posted.
  • Branch matches, some files excluded — Review runs on the remaining files; only those lines count toward RC.