Secrets leak into commits all the time. A test config copy-pasted from staging. A debugDocumentation Index
Fetch the complete documentation index at: https://docs.sigilix.ai/llms.txt
Use this file to discover all available pages before exploring further.
console.log of an auth header. A .env.local file accidentally committed. The LLM specialists might catch these — but might isn’t good enough for a credential that’s now in your git history.
Sigilix runs a dedicated regex sweep before the LLM specialists. It looks for the canonical patterns of major providers and surfaces matches as critical-severity findings.
What it catches
| Provider | Pattern surface |
|---|---|
| AWS | AKIA[0-9A-Z]{16} (access keys), ASIA[0-9A-Z]{16} (temporary credentials) |
| Stripe | sk_live_[0-9a-zA-Z]{24,} (live secret), sk_test_[0-9a-zA-Z]{24,} (test secret), rk_live_[0-9a-zA-Z]{24,} (restricted key) |
| GitHub | ghp_[0-9a-zA-Z]{36} (personal access token), gho_…, ghu_…, ghs_…, ghr_… |
| GCP | Private-key blocks in service-account JSON (-----BEGIN PRIVATE KEY-----) |
| Slack | xoxb-…, xoxp-…, xoxa-…, xoxr-… |
| OpenAI / Anthropic | sk-[a-zA-Z0-9]{32,}, sk-ant-[a-zA-Z0-9-]{40,} |
| Generic JWT | eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+ |
How findings appear
A secret-scanning hit posts as an inline finding at the matched line:Why it’s run before the LLM
Two reasons:- Determinism. A regex match on
AKIA[0-9A-Z]{16}is a fact, not a judgment call. The LLM doesn’t need to weigh whether it’s a “real” secret — the pattern is the pattern. - Token efficiency. The scanner runs in microseconds and finds the high-value catches. The LLM specialists are freed to reason about what to do (does this key get used? is it logged?) instead of scanning for syntactic patterns.
False positives
The scanner is tuned for precision over recall. The published patterns are narrow enough that pattern-only matches are real ~98% of the time on real codebases. Common false-positive sources and their handling:| Source | Handled by |
|---|---|
AKIAIOSFODNN7EXAMPLE (AWS docs placeholder) | Allowed — exact match suppressed |
sk_test_… keys committed to public sample apps | Still flagged — test keys are still credentials that should be in .env |
Hex-string lookalikes that match ghp_[0-9a-zA-Z]{36} | Practically nonexistent at 36-char length |
- Reply to the finding’s thread with “false positive: $reason” — that’s a feedback signal the review memory consumes.
- If it’s a stable pattern, file a Linear issue with the lookalike and the pattern that conflicts.
Repo-specific patterns
The built-in scanner covers major providers. For your own internal credentials (partner API keys, internal bearer tokens, etc.), usedeterministicChecks:
deterministicChecks runs in the same pre-LLM phase as the built-in scanner and produces findings of the same shape.
What it doesn’t do
| Concern | Reality |
|---|---|
Catch secrets renamed to fake-looking variables (const x = "AKIA...") | The pattern matches the secret regardless of the variable name — the value is what we scan. |
| Block the merge automatically | Sigilix can’t block a merge; GitHub branch protection does. But the verdict is Request changes, so a required-reviewers: sigilix rule will hold the PR. |
| Scan unchanged files / git history | Out of scope — Sigilix reviews PRs, not the repo. For history-wide scanning, use a dedicated tool like trufflehog. |
| Rotate the secret for you | Out of scope — you have to rotate it in the issuing provider’s console. The finding text reminds you. |
Disabling
Secret scanning cannot be disabled per-repo — it’s part of the core pipeline. If a specific pattern produces persistent false positives on your codebase, file a ticket; the built-in patterns are tuned upstream. (In the unlikely case you need to run Sigilix with secret scanning fully off — for example, on a repo whose entire purpose is to test secret-detection tools — contact support.)Read next
Deterministic Checks
The pre-LLM signal layer end-to-end.
Dependency Vulnerabilities
The other authoritative pre-LLM channel.

