Platform engineering teams running SAST tools at scale face a common failure mode: the tools produce too many findings, and developers start ignoring all of them. This prompt analyzes historical finding outcomes—true positives, false positives, suppressed, fixed, ignored—to recommend concrete configuration changes that reduce noise without hiding real risk. The primary job-to-be-done is converting a CSV or JSON export of triaged findings into a structured tuning plan that specifies which rules to suppress, which severity levels to downgrade, and which code paths to exclude from scanning. The ideal user is a platform engineer, DevSecOps lead, or security tooling owner who owns SAST configuration and is measured on developer adoption and mean time to remediation, not just finding count.
Prompt
Static Analysis Noise Reduction Prompt

When to Use This Prompt
Defines the job-to-be-done, ideal user, required inputs, and explicit boundaries for the SAST noise reduction prompt.
Use this prompt when you have at least 90 days of triaged finding data with consistent outcome labels. The data must include the rule ID, severity, file path, and final disposition (true positive, false positive, suppressed, fixed, or ignored) for each finding. The prompt works best when findings have been triaged by humans or a trusted automated pipeline—garbage-in, garbage-out applies here. You should also use it after major tool upgrades or rule pack changes, when you need to recalibrate which rules are worth running in your specific codebase and threat model. The output is a configuration recommendation document, not a real-time decision engine; it is meant for periodic batch review, such as quarterly tuning sprints.
Do not use this prompt for real-time finding triage or for explaining why an individual rule fired. It is not a per-finding classifier and will not give you a yes/no decision on a single alert. Do not use it if your finding data lacks outcome labels or if findings have not been consistently triaged—the recommendations will be unreliable. Do not use it as a substitute for understanding your own risk tolerance; the prompt can recommend suppressing a rule that produces 95% false positives, but you must decide whether the remaining 5% true positives represent unacceptable risk. Finally, do not use this prompt on data that spans fundamentally different codebases or threat models without segmenting the analysis; a monorepo with mixed microservices and embedded firmware will produce misleading aggregate statistics. After reading this section, proceed to the prompt template to see the exact input format and output schema required.
Use Case Fit
Where the Static Analysis Noise Reduction Prompt delivers value and where it creates risk. Use this to decide whether the prompt fits your workflow before integrating it into a SAST tuning pipeline.
Good Fit: Historical Tuning Backlog
Use when: You have months of resolved SAST findings with outcomes (true positive, false positive, accepted risk). The prompt analyzes patterns in this history to recommend rule suppressions and severity adjustments. Guardrail: Require a minimum of 200 resolved findings with outcome labels before trusting the noise reduction metrics. Smaller datasets produce unreliable recommendations.
Bad Fit: Greenfield SAST Rollout
Avoid when: You are deploying a SAST tool for the first time and have no historical finding outcomes. The prompt cannot learn suppression patterns without data. Guardrail: Use the False Positive Filtering Prompt for initial triage instead. Switch to noise reduction analysis only after accumulating at least one quarter of resolved findings.
Required Inputs
Must provide: Historical finding records with rule ID, severity, file location, finding status (true positive, false positive, accepted risk), and resolution timestamp. Guardrail: Validate that finding statuses were assigned by humans, not auto-closed by tool defaults. Auto-closed findings create circular logic where the prompt recommends suppressing what the tool already suppressed.
Operational Risk: Over-Suppression
Risk: The prompt may recommend suppressing rules that catch rare but critical vulnerabilities because those rules have low true-positive rates in your history. Guardrail: Never auto-apply suppression recommendations. Require security lead approval for any rule suppression. Flag rules covering OWASP Top 10 categories for mandatory human review regardless of noise metrics.
Operational Risk: Context Blindness
Risk: The prompt cannot see code changes, new attack patterns, or evolving threat models. A rule that was noisy last quarter may become critical after a new dependency or API exposure. Guardrail: Re-run noise reduction analysis quarterly and invalidate prior suppression recommendations when the codebase adds new attack surfaces, authentication flows, or data handling paths.
Pipeline Integration Boundary
Risk: Teams may wire suppression recommendations directly into CI/CD configs, silently disabling rules across the organization. Guardrail: The prompt output is a recommendation document, not a deployable config. Route output to a review queue. Only after approval should changes flow to SAST config files. Log all suppression decisions with approver identity and justification for audit.
Copy-Ready Prompt Template
A reusable prompt template for analyzing historical SAST findings to recommend rule suppressions, severity adjustments, and scope restrictions.
This prompt template is designed to be pasted directly into your AI system. It instructs the model to act as a platform engineering analyst, consuming historical static analysis findings and their outcomes to produce a noise reduction configuration plan. The core job is to identify which rules, paths, or severity levels generate the most false positives or low-value alerts, and to recommend specific suppressions, severity downgrades, or scope restrictions with clear risk trade-offs.
textYou are a platform engineering analyst specializing in SAST noise reduction. Your task is to analyze a set of historical static analysis findings and their real-world outcomes to recommend configuration changes that reduce alert fatigue without materially increasing risk. ## INPUT DATA [FINDINGS_JSON] ## CONTEXT - Tool: [SAST_TOOL_NAME] - Repository/Project: [PROJECT_NAME] - Analysis Period: [DATE_RANGE] - Current Rule Set: [RULE_SET_VERSION] - Organizational Risk Appetite: [RISK_APPETITE] ## CONSTRAINTS - Do not suppress any rule that has caught a true positive in the last [TRUE_POSITIVE_WINDOW] days. - Severity downgrades are limited to one level (e.g., Critical to High, High to Medium). - Scope restrictions must not exclude code paths that handle [SENSITIVE_DATA_TYPES] or authentication/authorization logic. - All recommendations must be traceable to specific finding IDs in the input data. ## OUTPUT_SCHEMA Return a JSON object with the following structure: { "summary": { "total_findings_analyzed": <int>, "current_noise_rate_pct": <float>, "projected_noise_rate_pct": <float>, "projected_alert_reduction_pct": <float> }, "recommendations": [ { "action": "suppress" | "downgrade_severity" | "restrict_scope", "rule_id": "<string>", "rule_name": "<string>", "current_config": "<string>", "proposed_config": "<string>", "justification": "<string referencing specific finding IDs and outcomes>", "risk_tradeoff": "<string describing what signal might be lost>", "affected_finding_ids": ["<string>"] } ], "do_not_suppress": [ { "rule_id": "<string>", "reason": "<string>" } ] } ## EVALUATION CRITERIA - Every suppression recommendation must cite at least [MIN_FALSE_POSITIVE_COUNT] false positives for that rule in the input data. - No recommendation should contradict the constraints above. - Risk tradeoff statements must be specific, not generic.
To adapt this template, replace the square-bracket placeholders with your actual data. The [FINDINGS_JSON] field expects a structured array of finding objects, each containing at minimum a finding ID, rule ID, severity, file path, and a known outcome (true positive, false positive, or uncertain). If your SAST tool uses different terminology, adjust the field names in the output schema accordingly. Before deploying any AI-generated configuration changes, route the recommendations through a human review gate—especially for suppressions affecting security-critical rules or code paths handling sensitive data.
Prompt Variables
Inputs the prompt needs to work reliably. Validate these before sending. Missing or malformed variables are the most common cause of brittle output.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[FINDING_HISTORY] | Raw SAST findings with outcomes (true positive, false positive, ignored, fixed) over a defined time window | {"finding_id": "SAST-001", "rule_id": "java/ssrf", "severity": "HIGH", "outcome": "FALSE_POSITIVE", "resolution_date": "2024-11-15"} | Must be valid JSON array. Each record requires finding_id, rule_id, severity, and outcome fields. Reject if outcome field is missing or null for more than 5% of records. |
[TOOL_NAME] | Identifier for the SAST tool that produced the findings, used to scope rule suppression syntax | semgrep | Must match a supported tool enum: semgrep, codeql, sonarqube, checkmarx, fortify, veracode, eslint-security. Reject unknown values with a clear error asking for the correct tool name. |
[NOISE_THRESHOLD] | Maximum acceptable false positive rate (0-1) the team will tolerate before suppressing a rule | 0.30 | Must be a float between 0 and 1. Values above 0.5 should trigger a warning that high thresholds may mask true positives. Default to 0.20 if not provided but log the default. |
[SEVERITY_WEIGHTS] | Mapping of severity levels to numeric weights for risk-adjusted noise scoring | {"CRITICAL": 10, "HIGH": 5, "MEDIUM": 2, "LOW": 1} | Must be a valid JSON object with keys matching the severity values present in [FINDING_HISTORY]. Missing severity levels should cause a pre-flight error. Weights must be positive integers. |
[SUPPRESSION_SCOPE] | Granularity at which suppressions should be recommended: rule, rule+path, rule+file_pattern, or rule+repository | rule+path | Must be one of: rule, rule+path, rule+file_pattern, rule+repository. Reject invalid values. Broader scopes increase risk of masking true positives; log a warning for rule+repository scope. |
[OUTPUT_FORMAT] | Desired output structure for the recommendations | json | Must be json or yaml. If yaml, validate that the model output parses correctly before returning. Default to json if not provided. |
[MIN_FINDING_COUNT] | Minimum number of findings a rule must have before it is eligible for noise analysis | 10 | Must be a positive integer. Rules with fewer findings produce unreliable false positive rates. Reject values below 5 with a warning that sample size is too small for statistical confidence. |
[EXCLUDED_RULES] | Rule IDs to exclude from suppression recommendations regardless of noise metrics | ["java/deserialization-rce", "python/eval-injection"] | Must be a JSON array of strings. These rules are typically kept active for compliance or security posture reasons. Validate that each excluded rule ID exists in [FINDING_HISTORY]; warn if an excluded rule has no findings. |
Implementation Harness Notes
How to wire the Static Analysis Noise Reduction Prompt into a production SAST tuning workflow with validation, human review, and audit trails.
This prompt is designed to operate as a batch analysis step within a SAST tuning pipeline, not as a real-time chat interaction. The typical integration point is a scheduled job (weekly or per-sprint) that pulls historical finding outcomes from your SAST tool's API or data warehouse, feeds them through the prompt, and produces a configuration change proposal. The prompt expects a structured [FINDINGS_DATASET] containing finding IDs, rule IDs, severity, file paths, and final dispositions (true positive, false positive, accepted risk, fixed). Without this historical outcome data, the prompt cannot produce reliable noise reduction recommendations—it relies on actual developer triage decisions, not just finding metadata.
Validation and Guardrails: Before the prompt output reaches any configuration system, implement a validation layer that checks: (1) every recommended suppression or severity change references at least one specific finding ID from the input dataset as evidence, (2) no rule is recommended for global suppression if it has produced true positive findings in the review period, (3) predicted noise reduction percentages are internally consistent with the count of affected findings, and (4) the output schema matches the expected [OUTPUT_SCHEMA] exactly. Reject outputs that propose suppressing rules with zero false positive history or that lack per-recommendation risk justifications. For high-security codebases, add a hard block on any recommendation that would suppress a rule categorized as security-critical in your rule taxonomy, regardless of historical false positive rate.
Human Review Gate: This prompt's output must pass through a human approval step before any configuration changes are applied. The review interface should display each recommendation alongside: the count of suppressed findings, the false positive rate for that rule, examples of findings that would be suppressed, and the risk trade-off justification. Reviewers should be able to approve, reject, or modify each recommendation individually. Log all review decisions with reviewer identity and timestamp for audit purposes. Never auto-apply suppression recommendations from this prompt without human sign-off—the cost of suppressing a true positive security finding outweighs the benefit of noise reduction.
Model Choice and Retry Strategy: Use a model with strong structured output capabilities and a context window large enough to hold your full [FINDINGS_DATASET] plus the prompt. If the dataset exceeds ~80% of the context window, pre-aggregate findings by rule before passing them to the prompt. Set temperature=0 or the lowest available setting to maximize consistency across runs. Implement a retry loop: if the output fails schema validation, retry once with the validation errors appended to the prompt as [PREVIOUS_ERRORS]. If the second attempt also fails, log the failure and escalate to a human operator rather than silently dropping the analysis.
Integration with SAST Configuration: The prompt's output should map to your SAST tool's configuration format—whether that's a Semgrep rule board, a CodeQL query suite filter, a SonarQube quality profile, or a custom suppression file. Build a translation layer that converts the prompt's structured recommendations into the specific YAML, JSON, or UI operations your tool expects. Include a dry-run mode that shows what the configuration would look like without applying it, and a rollback mechanism that can revert changes if post-application monitoring reveals that true positive findings are being missed. Track the applied recommendations over time and feed the next cycle's [FINDINGS_DATASET] back into the prompt to measure whether the predicted noise reduction actually materialized.
Expected Output Contract
Defines the structure, types, and validation rules for the model response. Use this contract to parse, validate, and integrate the output into downstream configuration management and CI/CD systems.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
recommendations | Array of objects | Must be a non-empty array. If no recommendations exist, return an empty array. | |
recommendations[].rule_id | String | Must match the exact rule ID from the input [FINDING_DATA]. Regex: ^[A-Za-z0-9_-.]+$ | |
recommendations[].action | Enum: SUPPRESS | DEMOTE | RESTRICT_SCOPE | REMOVE | Must be one of the four allowed values. Case-sensitive. | |
recommendations[].justification | String | Must be 1-3 sentences referencing historical false-positive rate, severity mismatch, or scope relevance from [FINDING_DATA]. | |
recommendations[].predicted_noise_reduction_pct | Number (0.0 - 100.0) | Must be a float between 0.0 and 100.0. Check: value <= 100.0 AND value >= 0.0. | |
recommendations[].risk_tradeoff | String | Must explicitly state the risk of missing a true positive. Cannot be null or empty. Max 500 chars. | |
summary | Object | Must contain total_findings_analyzed, total_noise_reduction_pct, and high_risk_suppressions_count. | |
summary.high_risk_suppressions_count | Integer | Must be >= 0. If > 0, a human_approval_required flag in the top-level object must be set to true. |
Common Failure Modes
Static analysis noise reduction prompts fail in predictable ways. These are the most common failure modes when analyzing historical finding outcomes to recommend rule suppressions, severity adjustments, and scope restrictions—and how to guard against them before the recommendations reach production configuration.
Suppressing True Positives as Noise
What to watch: The prompt recommends suppressing rules that fire infrequently but catch real vulnerabilities. Low-volume, high-severity findings look like noise in aggregate statistics but represent the most dangerous defects. Guardrail: Require severity-weighted analysis before suppression. Flag any rule that has caught at least one Critical or High true positive in the analysis window, regardless of volume. Add a human-approval gate for suppressing rules with any historical true positive findings.
Recency Bias in Historical Analysis
What to watch: The prompt overweights recent finding outcomes and recommends suppressing rules that caught real issues in the past but have been quiet recently. This creates blind spots when code patterns re-emerge after refactors or dependency updates. Guardrail: Require the analysis window to span multiple release cycles. Include trend direction as a separate signal—rules with declining but non-zero true positive rates should not be suppressed. Add a minimum observation period before suppression eligibility.
Scope Restriction That Misses Cross-Repository Patterns
What to watch: The prompt recommends restricting rules to specific directories or file patterns based on where findings historically clustered, but vulnerabilities migrate as code is refactored, extracted into shared libraries, or copied across services. Guardrail: Require the prompt to analyze finding location drift over time. Flag rules where finding locations have moved across repository boundaries. Recommend scope restrictions only for rules with stable location patterns across multiple releases. Include a periodic scope review trigger.
Severity Downgrades That Hide Compliance Gaps
What to watch: The prompt recommends severity downgrades based on historical remediation velocity—findings that teams consistently ignore get downgraded because they appear low-priority, but they may represent compliance requirements that teams are simply neglecting. Guardrail: Separate compliance-mapped rules from discretionary rules before severity analysis. Never recommend severity downgrades for rules mapped to regulatory frameworks (PCI-DSS, SOC 2, HIPAA) regardless of remediation history. Include compliance impact notes in every severity adjustment recommendation.
Noise Reduction Metrics Without False Negative Risk
What to watch: The prompt reports impressive noise reduction percentages without quantifying what would be missed if the recommendations are applied. A 70% alert reduction that hides 3 critical vulnerabilities is a net loss. Guardrail: Require the prompt to produce paired metrics: predicted noise reduction alongside predicted false negative count, broken down by severity. Add a risk budget constraint—no recommendation set may exceed a configurable threshold of predicted missed findings per severity tier. Flag recommendations that exceed the risk budget for human review.
Configuration Drift After Initial Tuning
What to watch: The prompt produces a point-in-time recommendation that becomes stale as code, dependencies, and threat models evolve. Teams apply the configuration once and never revisit it, creating accumulating blind spots. Guardrail: Include an expiration or review cadence in the prompt output. Generate a monitoring query or dashboard definition that tracks when suppressed rules would have fired on new code. Recommend automated re-evaluation triggers based on repository change volume, new dependency introductions, or elapsed time since last tuning.
Evaluation Rubric
Run these checks on a golden dataset of 10 known SAST configurations with known outcomes before shipping the prompt. Each row tests a specific failure mode observed in static analysis noise reduction.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Rule Suppression Accuracy | All suppressed rules in output match known-safe suppression candidates from golden set; no critical rules suppressed | Critical security rule appears in suppression list OR known-safe rule missing from suppression list | Exact match against golden suppression set; count false positives and false negatives |
Severity Adjustment Validity | All severity changes move in correct direction (downgrade for noise, upgrade for missed risk) with valid justification | High-severity finding downgraded without reachability evidence OR low-severity finding upgraded without exploitability rationale | Compare each adjustment to golden expected adjustments; flag direction mismatches and missing justification |
Scope Restriction Correctness | Path/file scope restrictions match golden expected scopes; no over-broad exclusions that mask real findings | Scope restriction excludes a directory containing known true positives from golden set | Check each scope restriction against golden known-true-positive locations; verify no overlap |
Noise Reduction Metric Honesty | Predicted noise reduction percentage is within 10 percentage points of golden calculated reduction | Claimed 80% reduction when golden calculation shows 30% OR metric references findings not present in input | Calculate actual reduction from suppression/severity/scope changes; compare to prompt output claim |
Risk Trade-off Documentation | Every suppression or downgrade includes a risk trade-off statement referencing specific finding categories affected | Suppression recommendation present with no risk statement OR risk statement is generic boilerplate | Check each recommendation for non-empty risk field; verify risk statement references specific rule IDs or finding types |
Configuration Syntax Validity | All output configuration blocks parse correctly in target SAST tool's config format | Output contains malformed YAML/JSON/TOML that fails schema validation for target tool | Run output through target tool's config parser or schema validator; flag parse errors |
Historical Outcome Alignment | Recommendations align with historical outcomes in golden dataset (rules previously suppressed stay suppressed) | Prompt recommends re-enabling a rule that golden history shows was suppressed for valid reasons | Cross-reference recommendations against golden historical decisions; flag contradictions |
Edge Case Handling | Prompt handles empty finding history, single-finding input, and all-false-positive input without crashing or hallucinating | Output contains fabricated findings when input is empty OR recommends suppressing all rules when all findings are true positives | Test with edge case inputs from golden dataset; verify output is appropriate (empty recommendations, no suppression, etc.) |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with the base prompt and a single SAST tool's historical findings export. Use a frontier model with a generous token limit. Replace [TOOL_NAME] with your specific tool (e.g., CodeQL, Semgrep, Checkmarx). Simplify [OUTPUT_SCHEMA] to a flat JSON array of rule recommendations with just rule_id, action (suppress/demote/restrict), and rationale. Skip the noise reduction metric prediction until you validate the recommendations manually.
Watch for
- The model recommending suppression of rules it doesn't fully understand
- Over-reliance on finding count without considering severity distribution
- Missing context about why rules were originally enabled
- Recommendations that make sense statistically but violate compliance requirements

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us