This Nuclei Action makes it easy to orchestrate Nuclei with GitHub Action. Integrate all of your Nuclei Templates into powerful continuous security workflows and make it part of your secure software development life cycle.
Warning
The v2* references are deprecated and (main) will be unsupported (replaced by v3) on 1 March 2026.
Please update workflows to use projectdiscovery/nuclei-action@v3.
| name | description | required | default |
|---|---|---|---|
version |
Setup with specific version ("latest" or in format "vX.Y.Z"). |
true |
latest |
install-only |
Install Nuclei without running scans. |
false |
false |
args |
Arguments to pass to Nuclei. |
false |
"" |
config |
Nuclei configuration file content. |
false |
"" |
config-path |
Path to Nuclei configuration file. |
false |
"" |
cache |
Enable caching of Nuclei caches, configs, templates, and browser. |
false |
true |
token |
GitHub Token. It is used to fetch Nuclei releases from GitHub. |
true |
${{ github.token }} |
Important
configandconfig-pathmust not be set together.argsalways take precedence overconfigorconfig-path.
Note
When debug logging is enabled, this action automatically adds -debug and -verbose flags to Nuclei.
| name | description |
|---|---|
stdout |
The standard output from running Nuclei |
stderr |
The standard error from running Nuclei |
This action is a node24 action.
- uses: projectdiscovery/nuclei-action@v3
with:
version:
# Setup with specific version ("latest" or in format "vX.Y.Z").
#
# Required: true
# Default: latest
install-only:
# Install Nuclei without running scans.
#
# Required: false
# Default: false
args:
# Arguments to pass to Nuclei.
#
# Required: false
# Default: ""
config:
# Nuclei configuration file content.
#
# Required: false
# Default: ""
config-path:
# Path to Nuclei configuration file.
#
# Required: false
# Default: ""
cache:
# Enable caching of Nuclei caches, configs, templates, and browser.
#
# Required: false
# Default: true
token:
# GitHub Token. It is used to fetch Nuclei releases from GitHub.
#
# Required: true
# Default: ${{ github.token }}Default setup (latest Nuclei)
- uses: projectdiscovery/nuclei-action@v3
with:
args: -u http://scanme.shSetup with specific version
- uses: projectdiscovery/nuclei-action@v3
with:
version: v3.6.0
args: -u http://scanme.shSetup or install Nuclei without running scans
- uses: projectdiscovery/nuclei-action@v3
with:
version: v3.6.0
install-only: true
- run: nuclei -versionor install only and without cache:
- uses: projectdiscovery/nuclei-action@v3
with:
version: v3.6.0
install-only: true
cache: false
- run: nuclei -versionSetup with Nuclei configuration
- uses: projectdiscovery/nuclei-action@v3
with:
version: latest
config: |
target:
- http://scanme.sh
sarif-export: results.sarifor pass it via variables:
- uses: projectdiscovery/nuclei-action@v3
with:
version: latest
config: ${{ vars.NUCLEI_CONFIG }}or via repo-managed config file:
- uses: projectdiscovery/nuclei-action@v3
with:
version: latest
config-path: path/to/nuclei.yamlSetup with GitHub code scanning
- uses: projectdiscovery/nuclei-action@v3
with:
version: latest
config: |
target:
- http://scanme.sh
sarif-export: results.sarif
- uses: github/codeql-action/upload-sarif@v3
if: success()
with:
sarif_file: results.sarif
category: nuclei-resultsSetup with reporting
- uses: projectdiscovery/nuclei-action@v3
with:
args: -u http://scanme.sh
config: |
report-config: issue-tracker-config.yaml
env:
GITHUB_BASE_URL: https://localhost:8443/github
GITHUB_USERNAME: test-username
GITHUB_OWNER: test-owner
GITHUB_TOKEN: ${{ secrets.GITHUB_PAT }}
GITHUB_PROJECT_NAME: test-projectExample issue-tracker-config.yaml (repository file):
github:
# base-url is the optional self-hosted GitHub application url
base-url: $GITHUB_BASE_URL # read from environment variable
# username is the username of the GitHub user
username: $GITHUB_USERNAME # read from environment variable
# owner is the owner name of the repository for issues
owner: $GITHUB_OWNER # read from environment variable
# token is the token for GitHub account
token: $GITHUB_TOKEN # read from environment variable
# project-name is the name of the repository
project-name: $GITHUB_PROJECT_NAME # read from environment variable
# issue-label is the label of the created issue type
issue-label: bug
# allow-list sets a tracker level filter to only create issues for templates with
# these severity labels or tags (does not affect exporters. set those globally)
allow-list:
severity: high, critical
tags: network
# deny-list sets a tracker level filter to never create issues for templates with
# these severity labels or tags (does not affect exporters. set those globally)
deny-list:
severity: low
# duplicate-issue-check flag to enable duplicate tracking issue check.
duplicate-issue-check: falseRefer to https://github.com/projectdiscovery/nuclei/blob/dev/cmd/nuclei/issue-tracker-config.yaml.
We welcome contributions! Please see our Contributing Guide for details on how to get started.
MIT. See LICENSE for more details.
