Prevent · PR Guardrails

Your security policy, as a check on every pull request.

Every pull request, checked against your policy and the Context Engine's view of where the code runs. Developers see what broke the rule and fix it on the PR.

What the developer sees on the pull request
✕
Some checks were not successful1 failing check
✕HeelerGuardrail ViolationRequired
Guardrail Violations Summary
1 Block violation1 Warn violation1 auto-fixable
Block
Active Exploit · log4j-core 2.14.1 added in pom.xmlCVE-2021-44228 · fix 2.17.1Auto-fixable
Warn
Dependency Version Minimum Age · @acme/sdk 3.2.0published 2 days ago · policy is 7 days
Merging is blocked by branch protectionFix w/ Heeler ↓
Your policy, enforced

Write the rules your business already has. Heeler enforces them on every pull request.

Each guardrail pairs what to catch with where it matters, not everything that looks bad.

Your policyHow Heeler enforces itOn the PR
Nothing with a known exploit ships to an internet accessible Tier 1 service.
WhenActive exploit
WhereTier 1Internet accessible
Block
Legal approves permissive licenses only.
WhenUnapproved license
WhereEvery repository
Block
No live credential stays in a repository.
WhenLive secret, anywhere in the repo
WhereEvery repository
Block
Payments code never adds an injection flaw.
WhenSAST: InjectionHigh confidence
WhereApplication = Payments
Block
Teams past their SLO fix before they ship.
WhenFixes past SLO
WhereDefault branch
Block
Regulated apps take no abandoned packages.
WhenNew dependencyUnmaintained (OpenSSF)
WhereApplication in Claims, Billing
Warn
No package younger than a week reaches production.
WhenPublished under 7 days ago
WhereDefault branch
Warn
An agent cannot quietly rewrite its own instructions.
WhenNew or changed agent file
WhereEvery repository
Block
41kinds of check to build from
31on dependencies: exploits, CVSS, licenses, age, OpenSSF health
10on code, IaC, secrets, repos and agent files
7ways to scope: tier, app, exposure, repo, org, SCM, branch
Start from
A framework bundleOne guardrail per control, applied as a set.
OWASP ASVSEU CRADORA
Ready-made guardrailsCommon rules, set up in one click each.
Active exploitCompromised packageExposed secretOverdue SLONew SAST finding
Your own wordsDescribe the policy and Heeler drafts the guardrail.
“Warn when a package published in the last 7 days reaches the default branch.”↓ Minimum age 7 days · Default branch · Warn
Rollout

Measure a guardrail before it blocks anyone.

Start in Observe, where only AppSec sees hits. Then Warn developers. Then Block the merge.

Observe→Warn→BlockAppSec sees every hitIn Heeler: Pull Requests and ViolationsThe developer sees itSummary comment and line annotations on the PRThe merge is heldA required check fails in your SCMThe Heeler check on the PR✓HeelerGuardrail Scan Passed✓HeelerPassed with warnings✕HeelerGuardrail Violation
Guardrail auto-fix

Fix the violation on the same pull request.

  1. 1
    A guardrail fires
    Block or Warn
  2. 2
    Auto-fix available
    Marked Auto-fixable on the PR
  3. 3
    Developer clicks Fix w/ Heeler
    GitLab: /heeler fix
  4. 4
    Heeler fixes only what fired
    In that module, on the PR branch
  5. 5
    Build checked
    Before anything is pushed
  6. 6
    Fix pushed to the PR
    Or a new PR if pushes are blocked
  7. 7
    Check re‑runs and passes
    Violation resolved

If the build fails: nothing is pushed. Heeler comments on the PR, and the violation stays open for manual review.

Upgrades the package the PR addedNew direct dependency with a fixed version
Code fixes you can reviewHigh-confidence fixes, built before push
On every SCM you useGitHub, GitLab, Bitbucket and Azure DevOps
Native in your SCM

A standard check in the tools your developers already use.

A normal check on the PR. Make it required and Block holds the merge.

GitHubGitLabBitbucketAzure DevOps

Block holds the merge

With branch protection on, until fixed or excepted.

Every violation explained

Package, file or secret, the rule broken, the fix.

Errors never block

A guardrail that cannot run passes. The PR says what did not run.

The diff, or the whole repository

Check the diff for new risk, or the whole repository for existing risk.

Most guardrails check only the diff, so no one is blocked by debt they did not add. Live secrets and fixes past SLO are checked across the whole repository.

Check the diffBlocks only new riskClears when a later commit fixes itCheck the whole repositoryBlocks existing risk tooHolds new work until the risk is fixed or exceptedPR #482 adds+ log4j-core 2.14.1ACTIVE EXPLOITAlready in the repoLive AWS keyPR #482✓ Clean change✕ Blocked
Where it fits

A check on every pull request, before it merges into the branches you choose.

Earlier layers guide the agent and check each commit. Every change, from a developer or an agent, meets here. Scope it to the default branch, other branches or all. Hover a layer to explore.

Workstation Sensor →PromptTool callsshell · skills · MCPDiffSecret in a promptDangerous actionInjected instructionWORKSTATION SENSOR · AS THE AGENT ACTSWorkstation Sensor →MCP Server and Agent Skills →Coding agentClaude Code · Codex · CursorOpenCode · VS Code (Copilot)Guided as it writesMCP · AGENT SKILLSAgent Skills →Heeler CLI →CommitCommit blockedHEELER CLIHeeler CLI →Pull requestthe merge gateGated at mergePR GUARDRAILSYOU ARE HERE
Purpose-built for the AI SDLC

See what your guardrails would have caught this month.