Documents
suppression
suppression
Type
External
Status
Published
Created
Mar 25, 2026
Updated
Mar 25, 2026

Finding Suppression Guide#

Pipelock has three layers for suppressing false positives, from most precise to broadest:

  1. Inline comments: suppress one rule on one line
  2. Config suppress entries: suppress a rule across matching paths
  3. --exclude flag: remove entire paths from results

All three work in pipelock audit, pipelock git scan-diff, and the GitHub Action.

Layer 1: Inline Comments#

Add // pipelock:ignore to a source line to suppress findings on that line.

// Suppress a specific rule:
url := buildTestURL("token", testToken) // pipelock:ignore Credential in URL

// Suppress all rules on this line (use sparingly):
testValue := loadFixture("fake-key.txt") // pipelock:ignore

Supported comment styles:

LanguageSyntax
Go, JS, TS, Java, C// pipelock:ignore [RuleName]
Python, YAML, Bash# pipelock:ignore [RuleName]

Rule names are case-insensitive. pipelock:ignore credential in url works.

When to use: Test files with fake credentials, documentation examples with placeholder tokens, assignments that look like credentials but aren't.

Layer 2: Config Suppress Entries#

Add suppress entries to your pipelock config file to silence findings across file paths:

suppress:
  - rule: "Credential in URL"
    path: "docs/"
    reason: "Documentation examples use placeholder tokens"

  - rule: "Social Security Number"
    path: "test/fixtures/*.csv"
    reason: "Test data with synthetic SSNs"

  - rule: "JWT Token"
    path: "*.test.ts"
    reason: "Test JWTs with no real claims"

  - rule: "Jailbreak Attempt"
    path: "*/robots.txt"
    reason: "robots.txt content triggers developer mode regex"

Path matching supports five styles:

StyleExampleMatches
Exact pathapp/config.goOnly that file
Directory prefixvendor/All files under vendor/
Full path globconfig/initializers/*.rbconfig/initializers/auth.rb
Basename glob*.generated.gopkg/api/types.generated.go
URL suffixrobots.txthttps://example.com/robots.txt

The reason field is optional but recommended. It appears in audit logs and helps future maintainers understand why the suppression exists.

When to use: Directories with known false positives, third-party code, generated files, documentation directories.

Layer 3: --exclude Flag#

Remove entire paths from scan results. Available on pipelock git scan-diff and pipelock audit:

pipelock git scan-diff --exclude vendor/ --exclude "*.generated.go"
pipelock audit --exclude node_modules/ --exclude dist/

Path patterns use the same matching rules as config suppress entries (exact, directory prefix, glob, basename glob).

When to use: Third-party code, build artifacts, generated files, and anything else you don't control.

GitHub Action#

Exclude paths#

Use the exclude-paths input (one pattern per line):

- uses: luckyPipewrench/pipelock@v2
  with:
    exclude-paths: |
      vendor/
      *.generated.go
      node_modules/

Config-level suppression#

Use the config input to provide inline YAML config with suppress entries:

- uses: luckyPipewrench/pipelock@v2
  with:
    config: |
      suppress:
        - rule: "Credential in URL"
          path: "docs/"
          reason: "Documentation examples"
        - rule: "JWT Token"
          path: "test/"
          reason: "Test tokens"

Inline comments#

Inline // pipelock:ignore comments work automatically with no action config needed.

Available Rule Names#

DLP (Secret Detection)#

Rule NameWhat It DetectsSeverity
Anthropic API Keysk-ant-*critical
OpenAI API Keysk-proj-*critical
OpenAI Service Keysk-svcacct-*critical
Fireworks API Keyfw_*critical
Google API KeyAIza*high
Google OAuth Client SecretGOCSPX-*critical
Google OAuth Tokenya29.*critical
Google OAuth Client ID*.apps.googleusercontent.commedium
Stripe Keysk_live_* / rk_live_*critical
GitHub Tokenghp_ / ghs_ / gho_ / ghu_ / ghr_critical
GitHub Fine-Grained PATgithub_pat_*critical
AWS Access IDAKIA* / ASIA* / AROA* + 6 more prefixescritical
Slack Tokenxox[bpras]-*critical
Slack App Tokenxapp-*critical
Discord Bot TokenBase64 three-segment tokencritical
Twilio API KeySK + 32 hexhigh
SendGrid API KeySG.*.*critical
Mailgun API Keykey- + 32 charshigh
Private Key Header-----BEGIN * PRIVATE KEY-----critical
JWT TokeneyJ*.eyJ*.* (three base64url segments)high
Social Security Number###-##-####low
Credential in URLpassword=, token=, apikey=, etc.high

Injection Detection#

Rule NameWhat It Detects
Prompt Injection"ignore previous instructions" patterns
System Overridesystem: at line start
Role Override"you are now DAN/evil/unrestricted"
New Instructions"new instructions/directives/rules"
Jailbreak Attempt"DAN", "developer mode", "sudo mode"
Hidden Instruction"do not reveal this to the user"
Behavior Override"from now on you will/must"
Encoded Payload"decode from base64 and execute"
Tool Invocation"you must call/execute the function"
Authority Escalation"you now have admin access"
Instruction Downgrade"treat previous instructions as outdated"
Instruction Dismissal"set the previous instructions aside"
Priority Override"prioritize the current request"

Precedence#

When multiple layers apply to the same finding:

  1. Inline comments win first. Checked before anything else.
  2. Config suppress entries. Checked if no inline match.
  3. --exclude flag. Applied last, removes from output entirely.

What NOT to Do#

  • Don't remove patterns from config to suppress findings. That disables detection everywhere, including for real secrets.
  • Don't lower severity to avoid emission. Use min_severity on emit sinks instead.
  • Don't use blanket // pipelock:ignore without a rule name. It is too broad and suppresses all detection on that line.
  • Don't suppress findings you haven't investigated. Every suppression is a risk acceptance decision.