Filter the noise from bug bounty reports.
A program-aware AI triage assistant that evaluates report quality, scope alignment, and impact — so researchers submit better reports and triagers focus on real vulnerabilities.

--model flag--json output + exit codes (0=PASS, 1=WARN, 2=FAIL, 3=error) for automation and pipelines| Verdict | Meaning | Researcher action | Triager action |
|---|---|---|---|
| PASS | In scope, real impact, clear writeup | Submit it | Triage it |
| WARN | Real finding, incomplete writeup | Fix the report | Ask for more info |
| FAIL | Out of scope, no real impact, non-qualifying | Don’t submit | Close it |
Requires Python 3.12+.
pip install noisegate # Anthropic (default)
pip install "noisegate[openai]" # + OpenAI
pip install "noisegate[google]" # + Gemini
Or from source:
git clone https://github.com/sgmurphy/noisegate.git
cd noisegate
pip install -e ".[dev]"
playwright install chromium
1. Configure your LLM provider:
noisegate llm
2. Import a bug bounty program:
noisegate program add acme --url https://hackerone.com/acme
3. Triage a report against the program:
noisegate triage report.md
# Uses the default program
noisegate triage report.md
# Override the program for this run
noisegate triage report.md --program acme
# Machine-readable JSON (for CI/scripts)
noisegate triage report.md --json
# Use a specific model
noisegate triage report.md --model openai:gpt-4o
noisegate triage report.md --model google-gla:gemini-2.0-flash
noisegate triage report.md --model ollama:llama3
Exit codes: 0=PASS, 1=WARN, 2=FAIL, 3=error
NoiseGate uses pydantic-ai for LLM abstraction.
Pass --model <provider>:<model-id> to switch providers:
| Provider | Model string | API key env var |
|---|---|---|
| Anthropic (default) | anthropic:claude-sonnet-4-6 |
ANTHROPIC_API_KEY |
| OpenAI | openai:gpt-4o |
OPENAI_API_KEY |
| Gemini | google-gla:gemini-2.0-flash |
GOOGLE_API_KEY |
| Ollama (local) | ollama:llama3 |
(none) |
{
"checks": [
{
"check_id": "asset_in_scope",
"passed": true,
"reason": "The reported target matches the in-scope asset *.example.com."
},
{
"check_id": "finding_ineligible",
"passed": true,
"reason": "The finding type is not listed as ineligible."
},
{
"check_id": "required_sections_present",
"passed": false,
"reason": "No proof-of-concept is included, which the program requires."
}
],
"summary": "The report targets an in-scope asset with real impact, but is missing a required proof-of-concept.",
"verdict": "WARN",
"model_used": "anthropic:claude-sonnet-4-6",
"prompt_tokens": 1234,
"completion_tokens": 567
}