loops!
BrowseSign in
Back to loops
Security
manual
CursorClaude Code

IaC Security Review

Diff your branch's Terraform and IAM changes against main, send them to Flare's AI security review API, get findings with severity scores and fix suggestions, apply fixes, and re-scan — repeating until zero critical and high findings remain.

8 copies · 31 views

by Ariel Smoliar

Use loop copies the kickoff. Share copies the loop link. Open in Cursor / Claude Code only pre-fill that prompt — they do not install hook files. Download loop saves a README and kickoff into .cursor/loops/iac-security-review-mq6r1k5a/ — no hooks required. Full install guide

Guardrails
Custom
Anti-gaming rules
Rules the agent must follow so it cannot cheat the exit condition.
  • Guardrails:
  • - Do not modify the check command or exit criteria to force success
  • - Do not delete or rename security-relevant files to avoid scanning
  • - Only modify files that are already changed on this branch
  • - Choose the least-privilege fix when multiple options exist
  • - Do not suppress findings by adding inline ignore comments (e.g. tflint-ignore, checkov:skip)
  • - Do not weaken security posture to pass the check (e.g. switching from deny to allow)
What it produced
Real results
Examples of features shipped or code generated with this loop.

Branch clean: 4 critical IAM findings fixed

Scanned 3 Terraform files on feature/new-pipeline branch. Found 4 critical findings (2 overly broad roles, 1 public access rule, 1 missing encryption). Fixed all 4 in 3 iterations. Final scan: 0 critical, 0 high.

Try Flare
curl -s -X POST "https://www.tryflare.ai/api/webhooks/pr-check" \                                                                                                                                                                                                   
    -H "Authorization: Bearer $FLARE_API_KEY" \                                                                                                                                                                                                                       
    -H "Content-Type: application/json" \
    -d "{\"diff\": \"$(git diff main -- '*.tf' '*.tfvars' | jq -Rs .)\"}" \                                                                                                                                                                                           
    | jq '.findings[] | {severity, file, line, title, fix}'
How to run this loop
Prompt only
Run “IaC Security Review” in your agent
Deeplinks and “Open in Cursor” only paste the kickoff prompt. They do not install hook files — your agent cannot tell whether files are on disk until you add them yourself.

Two separate pieces

  • Kickoff prompt — tells the agent the goal, check command, exit condition, and how to self-pace between passes.
  1. 1

    Copy or open the kickoff prompt

    Click Use loop to copy the kickoff into your clipboard. Open in Cursor and Open in Claude Code only open the agent with that prompt — they do not configure automation for you.

  2. 2

    Paste into your coding agent

    Start a chat in Cursor, Claude Code, Codex, or any agent. Paste the kickoff. The prompt includes the goal, iteration limit, shell check, and first step.

  3. 3

    Agent self-paces until done

    The agent runs the loop: act → run check command → read output → repeat until the exit condition is met or max iterations is reached. No install step is required for prompt-only loops.

Full guide with Cursor /loop notes: How to install loops

manual trigger
Security
Manual start
Run loop
Loop goal achieved
Rendering diagram…
Steps
What the agent does on each pass.

1. Run loop

/loop Start the loop. Goal: Review all infrastructure-as-code changes on the current branch for security issues using the Flare PR Security Check API, then fix every critical and high finding until the branch is clean. Between iterations run: git diff main --name-only -- '*.tf' '*.tfvars' '*-policy.json' '*-role.json' '*.sentinel' | head -1 Prerequisites: - A free Flare account (https://tryflare.ai) - An API key from Settings → Create API key - Set env var: export FLARE_API_KEY=flr_pr_... Step 1 — Collect the diff. Run `git diff main -- '*.tf' '*.tfvars' '*-policy.json' '*-role.json' '*.sentinel'` to get the full IaC diff on this branch. Step 2 — Send to Flare. POST the diff to the Flare PR check API: curl -s -X POST "https://www.tryflare.ai/api/webhooks/pr-check" \ -H "Authorization: Bearer $FLARE_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"diff\": \"$(git diff main -- '*.tf' '*.tfvars' '*-policy.json' '*-role.json' '*.sentinel' | jq -Rs .)\"}" \ | jq . Read the response. Note the total findings count and the critical + high counts. Step 3 — Fix findings. For each critical or high finding: - Read the file and line referenced in the finding - Apply the fix suggested by Flare (replace overly broad roles, add conditions, remove public access, etc.) - If the fix is ambiguous, choose the least-privilege option Step 4 — Re-check. Go back to Step 1 and re-run the diff + API call. Compare the new findings count to the previous iteration. If critical + high == 0, the loop is done. If findings remain, continue fixing.

Kickoff prompt
Copy this into your coding agent to start the loop.
/loop Start the loop.                                         
                                  
  Goal: Review all infrastructure-as-code changes on the current branch for security issues using the Flare PR Security Check API, then fix every critical and high finding until the branch is clean.                                                                
   
  Between iterations run: git diff main --name-only -- '*.tf' '*.tfvars' '*-policy.json' '*-role.json' '*.sentinel' | head -1                                                                                                                                         
                                                                
                                                                                                                                                                                                                                                                      
  Prerequisites:         
  - A free Flare account (https://tryflare.ai)                                                                                                                                                                                                                        
  - An API key from Settings → Create API key                   
  - Set env var: export FLARE_API_KEY=flr_pr_...                                                                                                                                                                                                                      
                                                
  Step 1 — Collect the diff.                                                                                                                                                                                                                                          
  Run `git diff main -- '*.tf' '*.tfvars' '*-policy.json' '*-role.json' '*.sentinel'` to get the full IaC diff on this branch.
                                                                                                                              
  Step 2 — Send to Flare.                                                                                                                                                                                                                                             
  POST the diff to the Flare PR check API:
                                                                                                                                                                                                                                                                      
    curl -s -X POST "https://www.tryflare.ai/api/webhooks/pr-check" \
      -H "Authorization: Bearer $FLARE_API_KEY" \                                                                                                                                                                                                                     
      -H "Content-Type: application/json" \      
      -d "{\"diff\": \"$(git diff main -- '*.tf' '*.tfvars' '*-policy.json' '*-role.json' '*.sentinel' | jq -Rs .)\"}" \                                                                                                                                              
      | jq .                                                                                                            
                                                                                                                                                                                                                                                                      
  Read the response. Note the total findings count and the critical + high counts.
                                                                                                                                                                                                                                                                      
  Step 3 — Fix findings.                                        
  For each critical or high finding:                                                                                                                                                                                                                                  
    - Read the file and line referenced in the finding          
    - Apply the fix suggested by Flare (replace overly broad roles, add conditions, remove public access, etc.)
    - If the fix is ambiguous, choose the least-privilege option                                               
                                                                
  Step 4 — Re-check.                                                                                                                                                                                                                                                  
  Go back to Step 1 and re-run the diff + API call. Compare the new findings count to the previous iteration. If critical + high == 0, the loop is done. If findings remain, continue fixing.

Related loops

Security
manual
13 copies
Fix high/critical npm audit findings one at a time with test verification — not a blind npm audit fix --force.

Start the "npm Audit Fix Loop" loop. Goal: no high or critical npm audit vulnerabilities Max iterations: 10 Between iterations run: npm audit --audit-level=high && npm test Exit when: npm audit reports no high/critical issues Step 1: Pick one high/critical advisory, apply the safest fix, run tests, and repeat. Self-pace this loop. After each iteration, run the check command, read the output, and only continue if the exit condition is not met. Stop when the exit condition passes or max iterations is reached. Give a short status update each pass.

CursorClaude Code
security
npm
audit
by loops!
View
Maintenance
interval
12 copies
Weekly npm audit scan, triage vulnerabilities by severity, and propose or apply safe patches.

/loop 7d Start the "Security Audit Weekly" loop. Goal: deliver a weekly npm audit summary with a remediation plan. Between iterations run: npm audit --json Exit when: summary is posted with prioritized fixes. Step 1: Run npm audit, triage by severity, and propose safe remediation steps.

Claude CodeCursor
security
npm
audit
maintenance
by loops!
View
Maintenance
interval
5 copies
Weekly loop to check outdated dependencies, propose safe upgrades, and open a summary.

/loop 7d Start the "Dependency Audit Weekly" loop. Goal: deliver a weekly dependency audit summary. Between iterations run: npm outdated || true Exit when: summary is posted with recommended upgrades. Step 1: Run npm outdated, categorize updates, and propose a safe upgrade plan.

Claude CodeCursor
dependencies
maintenance
security
by loops!
View