Skip to content

Ignore Rules

VaultGuard provides two mechanisms to suppress findings: a .vaultguard.ignore file for persistent rules managed outside source code, and inline comments placed directly in your source files.

.vaultguard.ignore File

The ignore file uses TOML format and lives in your project root.

Create a Template

sh
vaultguard ignore init

This creates .vaultguard.ignore with a commented-out example rule.

Add a Rule

sh
vaultguard ignore add --file src/config.js --line 42 --reason "Test data, not a real secret"

The --line flag is optional. Without it, the rule suppresses all findings in the specified file.

Suppress all findings in a file:

sh
vaultguard ignore add --file test/fixtures/secrets.txt --reason "Test fixtures"

List Rules

sh
vaultguard ignore list

Output:

Ignore rules:
  1. src/config.js:42 - Test data, not a real secret
  2. test/fixtures/secrets.txt - Test fixtures

File Format

The .vaultguard.ignore file is TOML with a [[rules]] array:

toml
[[rules]]
file = "src/config.js"
line = 42
reason = "Test data, not a real secret"

[[rules]]
file = "test/fixtures/secrets.txt"
reason = "Test fixtures, not real credentials"

[[rules]]
file = "docs/examples/aws-setup.md"
reason = "Documentation example with placeholder keys"

Each rule has:

FieldRequiredDescription
fileYesFile path relative to project root. Matches if the finding's path ends with this value.
lineNoSpecific line number. If omitted, all findings in the file are suppressed.
reasonYesHuman-readable explanation for the suppression.

File path matching is suffix-based

The file field matches against the end of the finding's file path. config.js will match src/config.js, lib/config.js, and any other path ending in config.js. Use a more specific path like src/config.js to target a single file.

Inline Suppression

As of core v0.6.0, you can suppress findings directly in source code with inline comments.

Suppress All Finding Types

Add a vaultguard-ignore comment on the same line as the finding, or on the line immediately above it:

python
API_KEY = "AKIAIOSFODNN7EXAMPLE"  # vaultguard-ignore
python
# vaultguard-ignore
API_KEY = "AKIAIOSFODNN7EXAMPLE"

Scoped Suppression

Suppress only a specific finding type by appending the type name:

python
API_KEY = "AKIAIOSFODNN7EXAMPLE"  # vaultguard-ignore:secret

Valid scopes: secret, cve, misconfig, quality, integrity.

Prefer scoped suppression

Using vaultguard-ignore:secret instead of a bare vaultguard-ignore ensures that other finding types (like misconfigurations) on the same line are still reported. Scoped suppression is safer and more intentional.

Comment Styles

Inline suppression works with standard comment markers:

StyleLanguages
//Rust, Go, JavaScript, TypeScript, Java, C, C++
#Python, Ruby, Shell, YAML, TOML
--SQL, Lua, Haskell

Examples:

javascript
const key = "sk_live_example";  // vaultguard-ignore:secret
yaml
debug: true  # vaultguard-ignore:misconfig
sql
-- vaultguard-ignore
INSERT INTO users (password) VALUES ('test123');

Viewing Suppressed Findings

Inline-suppressed findings are hidden by default. Use --show-suppressed to include them in scan output:

sh
vaultguard scan --show-suppressed

The scan summary shows suppressed counts regardless of this flag.

Choosing Between Mechanisms

ApproachBest For
.vaultguard.ignore fileBulk suppression, test fixtures, generated files, rules managed by security teams
Inline commentsDeveloper-owned exceptions, one-off suppressions with context visible in code review

Both mechanisms stack. A finding suppressed by either method will not appear in default scan output.

Ignore rules vs. baselines

Ignore rules are permanent, targeted exceptions. Baselines are a point-in-time snapshot of all findings for "adopt now, fix later" workflows. See Baselines for when to use each approach.

VaultGuard -- Security scanning for AI-generated code