# Security Review

Run security-focused PR reviews and full-codebase audits with Droid using STRIDE, OWASP, and supply-chain methodology.

Droid security review is a dedicated security workflow for finding high-confidence vulnerabilities in pull requests or across an entire repository. It can run locally from the CLI or automatically in GitHub Actions.

<CardGroup cols={2}>
  <Card title="PR security review" icon="shield-halved">
    Review only the pull request diff, trace changed data flows, and post inline security findings with severity and suggested fixes.
  </Card>
  <Card title="Full-codebase audit" icon="magnifying-glass">
    Audit every source file in the repository, group files for parallel review, and produce a structured report of validated findings.
  </Card>
</CardGroup>

## Run a full-codebase audit

For the most thorough security results, run the audit inside a [Mission](/missions/overview). Missions plan the audit upfront, fan out work across orchestrated agents, and validate findings at each milestone, which produces dramatically deeper coverage than a single-session run.

From any Droid session, enter a mission and kick off the security review:

```text
/missions
/security-review deep audit
```

### Periodic scan in CI

Run the same mission-based audit on a schedule by invoking `droid exec --mission` from a workflow. The audit writes its full output under `~/security-audits/<slug>-<YYYYMMDD>/` on the runner, so add an `actions/upload-artifact` step to preserve findings after the runner exits:

```yaml
on:
  schedule:
    - cron: '0 6 * * 1'

jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Droid CLI
        run: |
          curl -fsSL https://app.factory.ai/cli | sh
          echo "$HOME/.local/bin" >> "$GITHUB_PATH"
      - name: Run deep security review
        env:
          FACTORY_API_KEY: ${{ secrets.FACTORY_API_KEY }}
        run: |
          droid exec --mission --auto high -m claude-opus-4-7 \
            "/security-review across the entire repository"
      - name: Upload security review output
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: deep-security-review-${{ github.run_id }}
          path: ~/security-audits/
          if-no-files-found: warn
          retention-days: 90
```

## Run locally on a diff

To review the current diff in your working tree or branch from the CLI, run the built-in skill in any Droid session:

```text
/security-review local diff
```

When invoked on a diff, Droid traces changed data flows across authentication, authorization, validation, database, network, filesystem, and LLM boundaries, and reports validated findings inline with severity and suggested fixes.

## Run in GitHub CI on pull requests

With [Droid Action](https://github.com/Factory-AI/droid-action), comment on a pull request to trigger an on-demand security review:

```text
@droid security
```

To run security review automatically on every non-draft PR, add `automatic_security_review: true` to your review workflow:

```yaml
- name: Run Droid Auto Review
  uses: Factory-AI/droid-action@main
  with:
    factory_api_key: ${{ secrets.FACTORY_API_KEY }}
    automatic_review: true
    automatic_security_review: true
```

When `automatic_review` and `automatic_security_review` are both enabled, Droid runs the security pass alongside the standard code review and includes the security summary in the PR feedback.

## Configuration

These are the Droid Action security inputs currently wired for the workflows documented on this page:

| Input | Default | Description |
| --- | --- | --- |
| `automatic_security_review` | `false` | Run security review automatically on PRs without requiring `@droid security`. |
| `security_model` | `""` | Override the model used for security review candidate generation and full-repository scans. Falls back to `review_model` if unset. |

## Methodology

Security review uses the built-in `security-review` skill. In PR automation, Droid Action runs a dedicated `security-reviewer` subagent that loads this methodology before reading files, then traces changed data flows across authentication, authorization, validation, database, network, filesystem, and LLM boundaries.

The methodology applies multiple security frameworks together:

{/* sweep-allow: term-bullets */}

- **STRIDE threat modeling**: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege.
- **OWASP Top 10:2021**: Broken access control, cryptographic failures, injection, insecure design, misconfiguration, vulnerable components, authentication failures, integrity failures, logging failures, and SSRF.
- **OWASP Top 10 for LLM Applications:2025**: prompt injection, sensitive information disclosure, insecure LLM output handling, excessive agency, vector/embedding weaknesses, and other AI-specific risks when the codebase uses LLMs.
- **Supply-chain analysis**: dependency manifest and lockfile review, including typosquatting signals, install scripts, overly broad version ranges, and newly published packages.
- **Repository threat-model context**: if `.factory/threat-model.md` exists, Droid uses it as the attack-surface map.

### Review pipeline

Security review uses a two-pass workflow:

1. **Candidate generation**: Droid reads the diff or codebase, identifies security-relevant areas, traces untrusted input across trust boundaries, and produces candidate vulnerabilities.
2. **Validation**: Droid re-checks each candidate for reachability, exploitability, existing controls, and false positives before reporting it.

Findings are reported only when there is a realistic exploit path, such as an injection vulnerability, missing authentication or authorization on a sensitive operation, hardcoded secret, data exposure, unsafe LLM output handling, or risky supply-chain change.

### Severity levels

| Severity | Priority | Examples |
| --- | --- | --- |
| Critical | `P0` | RCE, hardcoded production secret, auth bypass, unauthenticated admin endpoint |
| High | `P1` | SQL injection behind auth, stored XSS, sensitive-data IDOR, very new dependency |
| Medium | `P2` | CSRF on state-changing operations, information disclosure, prompt injection behind auth |
| Low | `P3` | Minor security hardening with a concrete but low-impact exploit path |

<RelatedLinks>
  <RelatedLink href='/missions/overview' title='Missions'>
    Plan and orchestrate large multi-step work, including thorough audits.
  </RelatedLink>
  <RelatedLink href='/harness/skills' title='Skills'>
    How to invoke and customize skills.
  </RelatedLink>
  <RelatedLink href='/enterprise/compliance-audit-and-monitoring' title='Compliance & Audit'>
    Security architecture and controls for the GitHub Action integration.
  </RelatedLink>
  <RelatedLink href='/software-factory/code-review' title='Code Review'>
    Pair security review with day-to-day correctness and quality checks.
  </RelatedLink>
</RelatedLinks>
