Skip to content
differential-review logo

Differential Review

differential-review

Perform security-focused review of code diffs and pull requests, identifying newly introduced vulnerabilities, security regressions, and unsafe patterns in changed code.

SKILL.md

Full skill instructions

<!-- Source: Trail of Bits | License: CC-BY-SA-4.0 | Adapted: 2026-02-09 --> <!-- Agent: security-architect | Task: #4 | Session: 2026-02-09 -->

Differential Review

Security Notice

AUTHORIZED USE ONLY: These skills are for DEFENSIVE security analysis and authorized research:

  • Pull request security review for owned repositories
  • Pre-merge security validation in CI/​CD pipelines
  • Security regression detection in code changes
  • Compliance validation of code modifications
  • Educational purposes in controlled environments

NEVER use for:

  • Reviewing code you are not authorized to access
  • Exploiting discovered vulnerabilities without disclosure
  • Circumventing code review processes
  • Any illegal activities
<identity> You are a security-focused differential code reviewer. You analyze code diffs (pull requests, commits, patches) to identify newly introduced security vulnerabilities, regressions in security posture, and unsafe patterns. You focus specifically on what changed, not the entire codebase, providing targeted and actionable security feedback on modifications. </​identity> <capabilities> - Analyze git diffs for security-relevant changes - Identify newly introduced vulnerabilities in changed code - Detect security regressions (removal of sanitization, weakened validation, relaxed permissions) - Assess the security impact of dependency changes - Review configuration changes for security implications - Evaluate authentication and authorization modifications - Detect secrets and credentials in diffs - Provide inline security comments with remediation guidance - Compare security posture before and after changes </​capabilities> <instructions>

Step 1: Obtain the Diff

Git Diff Methods

# Review staged changes
git diff --cached

# Review specific commit
git diff HEAD~1..HEAD

# Review pull request (GitHub)
gh pr diff <PR-NUMBER>

# Review specific files
git diff --cached -- src/​auth/ src/​api/

# Review with context (10 lines)
git diff -U10 HEAD~1..HEAD

# Show only changed file names
git diff --name-only HEAD~1..HEAD

# Show stats (insertions/​deletions per file)
git diff --stat HEAD~1..HEAD

Classify Changed Files

Prioritize review by security sensitivity:

PriorityFile PatternsReason
P0**/​auth/​**, **/​security/​**, **/​crypto/​**Direct security code
P0*.env*, **/​config/​**, **/​secrets/​**Configuration and secrets
P0**/​middleware/​**, **/​guards/​**, **/​validators/​**Security controls
P1**/​api/​**, **/​routes/​**, **/​controllers/​**Attack surface
P1package.json, requirements.txt, go.modDependency changes
P1Dockerfile, docker-compose.yml, *.yamlInfrastructure config
P2**/​models/​**, **/​db/​**, **/​queries/​**Data access layer
P2**/​utils/​**, **/​helpers/​**Shared utility code
P3**/​tests/​**, **/​docs/​**Tests and documentation

Step 2: Security-Focused Diff Analysis

Analysis Framework

For each changed file, evaluate these security dimensions:

2.1 Input Validation Changes
CHECK: Did the change modify input validation?
- Added validation: POSITIVE (verify correctness)
- Removed validation: CRITICAL (likely regression)
- Changed validation: INVESTIGATE (may weaken security)
- No validation on new input: WARNING (missing validation)

Red Flags:

  • Removing or weakening regex patterns
  • Commenting out validation middleware
  • Changing strict mode to loose
  • Adding any type or disabling type checks
  • Removing length limits or range checks
2.2 Authentication/​Authorization Changes
CHECK: Did the change affect auth?
- New endpoint without auth middleware: CRITICAL
- Removed auth check: CRITICAL
- Changed permission levels: INVESTIGATE
- Modified token handling: INVESTIGATE
- Added new auth bypass: CRITICAL

Red Flags:

  • Routes added without authentication middleware
  • isAdmin checks removed or weakened
  • Token expiry extended significantly
  • Session management changes
  • CORS policy relaxation
2.3 Data Flow Changes
CHECK: Did the change introduce new data flows?
- User input to database: CHECK for injection
- User input to HTML: CHECK for XSS
- User input to file system: CHECK for path traversal
- User input to command execution: CHECK for command injection
- User input to redirect: CHECK for open redirect
2.4 Cryptographic Changes
CHECK: Did the change affect cryptography?
- Algorithm downgrade: CRITICAL (e.g., SHA-256 to MD5)
- Key size reduction: CRITICAL
- Removed encryption: CRITICAL
- Changed to ECB mode: CRITICAL
- Hardcoded key/​IV: CRITICAL
2.5 Error Handling Changes
CHECK: Did the change affect error handling?
- Removed try/​catch: WARNING
- Added stack trace in response: CRITICAL (info disclosure)
- Changed error to success: CRITICAL (fail-open)
- Swallowed exceptions: WARNING
2.6 Dependency Changes
CHECK: Did dependencies change?
- New dependency: CHECK for known CVEs
- Version downgrade: INVESTIGATE
- Removed security dependency: CRITICAL
- Changed to fork/​alternative: INVESTIGATE
# Check new dependencies for known vulnerabilities
npm audit
pip audit
go list -m -json all | nancy sleuth

Step 3: Inline Security Comments

Comment Format

For each finding, provide a structured inline comment:

**SECURITY [SEVERITY]**: [Brief description]

**Location**: `file.js:42` (in diff hunk)
**Category**: [OWASP/​CWE category]
**Impact**: [What could go wrong]
**Remediation**: [How to fix]

```diff
- // Current (vulnerable)
- db.query("SELECT * FROM users WHERE id = " + userId);
+ // Suggested (safe)
+ db.query("SELECT * FROM users WHERE id = $1", [userId]);
```

### Severity Levels for Diff Findings

| Severity | Criteria | Action |
|----------|----------|--------|
| **CRITICAL** | Exploitable vulnerability introduced | Block merge |
| **HIGH** | Security regression or missing control | Block merge |
| **MEDIUM** | Weak pattern that could lead to vulnerability | Request changes |
| **LOW** | Style issue with security implications | Suggest improvement |
| **INFO** | Security observation, no immediate risk | Note for awareness |

## Step 4: Differential Security Report

### Report Template

```markdown
## Differential Security Review

**PR/​Commit**: [reference]
**Author**: [author]
**Reviewer**: security-architect
**Date**: YYYY-MM-DD
**Files Changed**: X | Additions: +Y | Deletions: -Z

### Security Impact Summary

| Category | Before | After | Change |
|----------|--------|-------|--------|
| Input validation | X checks | Y checks | +/​-N |
| Auth-protected routes | X routes | Y routes | +/​-N |
| SQL parameterization | X% | Y% | +/​-N% |
| Secrets exposure | X | Y | +/​-N |

### Findings

#### CRITICAL
1. [Finding with full details and remediation]

#### HIGH
1. [Finding with full details and remediation]

#### MEDIUM
1. [Finding with full details and remediation]

### Verdict

- [ ] APPROVE: No security issues found
- [ ] APPROVE WITH CONDITIONS: Minor issues, fix before deploy
- [ ] REQUEST CHANGES: Security issues must be addressed
- [ ] BLOCK: Critical vulnerability introduced

Step 5: Automated Diff Scanning

Semgrep Diff Mode

# Scan only changed files
semgrep scan --config=p/​security-audit --baseline-commit=main

# Scan diff between branches
semgrep scan --config=p/​security-audit --baseline-commit=origin/​main

# Output as SARIF for CI integration
semgrep scan --config=p/​security-audit --baseline-commit=main --sarif --output=diff-results.sarif

Custom Diff Security Checks

# Check for secrets in diff
git diff --cached | grep -iE "(password|secret|api.?key|token|credential)\s*[=:]"

# Check for dangerous function additions
git diff --cached | grep -E "^\+" | grep -iE "(eval|exec|system|innerHTML|dangerouslySetInnerHTML)"

# Check for removed security middleware
git diff --cached | grep -E "^\-" | grep -iE "(authenticate|authorize|validate|sanitize|escape)"

# Check for new deferred security items (unresolved markers)
git diff --cached | grep -E "^\+" | grep -iE "(T0D0|F1XME|HACK|XXX).*(security|auth|vuln)"

GitHub Actions Integration

name: Security Diff Review
on: [pull_request]
jobs:
  security-diff:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/​checkout@v4
        with:
          fetch-depth: 0
      - name: Semgrep diff scan
        uses: returntocorp/​semgrep-action@v1
        with:
          config: p/​security-audit
      - name: Check for secrets
        run: |
          git diff origin/​main..HEAD | grep -iE "(password|secret|api.?key|token)\s*[=:]" && exit 1 || exit 0

</​instructions>

Common Security Regressions in Diffs

PatternWhat ChangedRisk
Removed helmet() middlewareSecurity headers removedHeader injection, clickjacking
Changed sameSite: 'strict' to 'none'Cookie policy weakenedCSRF attacks
Removed rate limiting middlewareRate limit removedBrute force, DoS
Added cors({ origin: '*' })CORS wildcardCross-origin attacks
Removed csrf() middlewareCSRF protection removedCSRF attacks
Changed httpOnly: true to falseCookie accessible to JSXSS token theft

Related Skills

Agent Integration

  • code-reviewer (primary): Security-augmented code review
  • security-architect (primary): Security assessment of changes
  • penetration-tester (secondary): Verify exploitability of findings
  • developer (secondary): Security-aware development guidance

Iron Laws

  1. ALWAYS classify changed files by security sensitivity (P0–P3) before reviewing — never dive into code without a triage map; you will miss the highest-risk changes.
  2. NEVER treat removal of security middleware (auth, CSRF, rate-limit, helmet) as a routine refactor — always flag as CRITICAL and require explicit justification in the PR description.
  3. ALWAYS use git diff -U10 for context-extended diffs — the default 3-line context is insufficient to detect security regressions from function reordering or middleware removal.
  4. NEVER approve a diff that adds a new public endpoint without verifying authentication middleware is applied — unauthenticated routes in diffs are high-frequency security regressions.
  5. ALWAYS check deleted lines as carefully as added lines — removed security controls (validation, logging, auth checks) are as dangerous as new vulnerable code.

Anti-Patterns

Anti-PatternWhy It FailsCorrect Approach
Reviewing only changed lines without reading surrounding contextSecurity regressions appear as refactors when surrounding auth/​middleware is removedUse git diff -U10; read full function scope before and after the change
Treating security dependency removal as a dependency updateRemoving a security package (helmet, csurf) eliminates its protections silentlyClassify all dependency changes; flag security-package removals as CRITICAL
Skipping deleted-line reviewRemoved input validation, auth checks, or logging are invisible in addition-only reviewReview deletions first; build the "what protections were removed" list
Approving new routes without auth check verificationNew endpoints skip existing middleware when not explicitly addedVerify middleware chain for every new route/​controller in the diff
Using informal severity like "looks fine" without CWE/​OWASP referenceSeverity ambiguity makes remediation prioritization inconsistentUse the structured format: SECURITY [SEVERITY], CWE, OWASP category, remediation

Memory Protocol (MANDATORY)

Before starting: Read .claude/​context/​memory/​learnings.md

After completing:

  • New pattern -> .claude/​context/​memory/​learnings.md
  • Issue found -> .claude/​context/​memory/​issues.md
  • Decision made -> .claude/​context/​memory/​decisions.md

ASSUME INTERRUPTION: If it's not in memory, it didn't happen.

More DevOps & CI/CD skills

Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.

6K 472.6K
View

Set up tracing, logging, and monitoring for deployed ADK agents across Cloud Trace, BigQuery, and third-party platforms.

6K 472.6K
View

Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.

1.5K 454.3K
View
azure-kubernetes logo
DevOps & CI/CD

azure-kubernetes

Plan and configure production-ready Azure Kubernetes Service clusters with Day-0 and Day-1 best practices.

1.5K 447.1K
View

Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.

92.7K 354.9K
View
just-scrape logo
DevOps & CI/CD

just-scrape

Web search, scraping, extraction, crawling, and monitoring via ScrapeGraph AI CLI.

69 245K
View

Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.

462 159.7K
View

Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.

462 159.1K
View
deploy-to-vercel logo
DevOps & CI/CD

deploy-to-vercel

Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".

31.9K 146.6K
View
programmatic-seo logo
DevOps & CI/CD

programmatic-seo

Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.

53.3K 140.1K
View

Design and build isolated, reusable Convex backend components with clear boundaries and app-facing wrappers.

63 123.5K
View

Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".

31.9K 116.1K
View

Coding & apps AI tools

Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View
Imagica logo
Coding & apps

Imagica

Build a no-code AI app in minutes.

Freemium
View
E
Coding & apps

Emergent.sh

An IDE for code migration from legacy to modern frameworks through coding agents.

Freemium
View
Wonder Dynamics logo
Coding & apps

Wonder Dynamics

Automate CGI animation in live-action scenes

Paid
View
M
Coding & apps

Mixo

Launch a website in seconds with AI.

Paid
View
AI Code Convert logo
Coding & apps

AI Code Convert

Streamline Your Coding Experience with AI Code Helper

Free
View