Scanners reference
This page is generated from the scanner plugins in the ASH source code by scripts/generate_scanner_reference.py. Edits made to this file by hand are overwritten the next time it is generated.
ASH ships 19 scanners. The built-in ones are loaded on every scan. The others are community scanners, each in a plugin module that ash scan loads only when the configuration's ash_plugin_modules (or --ash-plugin-modules) names the module; for the MCP server, see What a plugin can do.
| Scanner |
Tool type |
Enabled by default |
Provided by |
Command |
Runs with --python-only |
actionlint |
IAC |
yes |
built in |
actionlint |
no |
bandit |
SAST |
yes |
built in |
bandit |
yes |
cdk-nag |
IAC |
yes |
built in |
python |
no |
cfn-guard |
IAC |
yes |
built in |
cfn-guard |
no |
cfn-lint |
IAC |
yes |
built in |
cfn-lint |
yes |
cfn-nag |
IAC |
yes |
built in |
cfn_nag_scan |
no |
checkov |
IAC |
yes |
built in |
checkov |
yes |
detect-secrets |
SECRETS |
yes |
built in |
detect-secrets |
yes |
gitleaks |
SECRETS |
yes |
built in |
gitleaks |
no |
grype |
SCA |
yes |
built in |
grype |
no |
npm-audit |
SCA |
yes |
built in |
npm |
no |
opengrep |
SAST |
yes on Linux and macOS; no on Windows |
built in |
opengrep |
no |
semgrep |
SAST |
yes on Linux and macOS; no on Windows |
built in |
semgrep |
yes |
syft |
SBOM |
yes |
built in |
syft |
no |
trivy |
SCA |
yes |
built in |
trivy |
no |
zizmor |
SAST |
yes |
built in |
zizmor |
yes |
ferret-scan |
SECRETS |
yes |
community module ash_ferret_plugins |
ferret-scan |
no |
snyk-code |
SAST |
yes |
community module ash_snyk_plugins |
snyk |
no |
trivy-repo |
SAST |
yes |
community module ash_trivy_plugins |
trivy |
no |
Tool type is the scanner's own ScannerToolType. --python-only keeps a scanner when its is_python_only() is true: the scanner class's own python_only when it states one; otherwise only when the scanner runs its tool through uv, declares no install commands, and has only pip dependencies. A scanner it does not keep is SKIPPED.
Environment in the sandbox
When sandbox.mode confines scanners, a scanner process receives only an allowlist of the environment ASH was started with. Every sandboxed scanner gets these names: COLUMNS, CURL_CA_BUNDLE, FORCE_COLOR, GEM_HOME, GEM_PATH, JAVA_HOME, LANG, LANGUAGE, NODE_EXTRA_CA_CERTS, NO_COLOR, PATH, REQUESTS_CA_BUNDLE, SSL_CERT_DIR, SSL_CERT_FILE, SYSTEMROOT, TERM, TZ, VIRTUAL_ENV; and names starting with LC_, ASH_, UV_, PYTHON. A scanner's own prefixes and names, listed with each scanner below, are added to that. A name containing TOKEN, PASSWORD, PASSWD, SECRET, CREDENTIAL, AUTH, APIKEY, API_KEY, PRIVATE_KEY, SESSION is dropped even under an allowed prefix, unless the scanner names it exactly. The proxy variables HTTPS_PROXY, HTTP_PROXY, NO_PROXY, http_proxy, https_proxy, no_proxy are passed only to a scanner that has a network. The lists are in automated_security_helper/utils/sandbox/policy.py.
The network entry of each scanner below is its default. sandbox.network_scanners, when it is set, replaces every scanner's declared need: only the scanners it names get a network. A config file inside a git checkout or the scanned directory can only take network away, and an offline scan gives no scanner a network.
actionlint
- Scanner page:
actionlint scanner page
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.actionlint_scanner.ActionlintScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: IAC
- Command:
actionlint
- Install: pinned, checksum-verified release of
actionlint by ash dependencies install, for darwin/amd64, darwin/arm64, linux/amd64, linux/arm64, windows/amd64, windows/arm64
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox: none beyond the baseline
- Environment set under sandbox-exec: none
Options, under scanners.actionlint.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
config_file |
string or null |
null |
Path to an actionlint config file. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Otherwise actionlint runs with an empty config, and a .github/actionlint.yaml in the scanned repository is not read. A path set here that does not exist fails the scan. |
shellcheck |
string or null |
null |
Command name or path of shellcheck, which actionlint runs on every run: script. Unset (the default) disables the integration so results do not depend on what is installed on the host. Any config may set 'shellcheck', looked up on PATH. Another program, or a path that resolves outside the scanned tree: Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. From such a config it is ignored with a warning. When set and not found, the scanner reports MISSING. |
pyflakes |
string or null |
null |
Command name or absolute path of pyflakes, which actionlint runs on 'shell: python' steps. Unset (the default) disables the integration. Any config may set 'pyflakes', looked up on PATH. Another program, or a path that resolves outside the scanned tree: Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. From such a config it is ignored with a warning. When set and not found, the scanner reports MISSING. |
bandit
Bandit is a Python source code security analyzer.
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.bandit_scanner.BanditScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: SAST
- Command:
bandit
- Install:
uv tool install on first use (bandit[sarif,toml]>=1.7.0,<2.0.0)
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox:
BANDIT_*
- Environment set under sandbox-exec: none
Options, under scanners.bandit.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
config_file |
path, string, or null |
null |
Path to Bandit configuration file. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. ASH does not look for one by name. A file named exactly .bandit is passed with bandit --ini, and any other file with bandit --configfile. Unless config_file names a .bandit file that exists, ASH passes bandit an empty config file with bandit --ini, so bandit does not read a .bandit file from the scanned tree. A path that is not a file is logged as a warning and ignored. |
confidence_level |
string, matches ^(all|low|medium|high)$ |
all |
Confidence level for bandit scan (all, low, medium, high) |
ignore_nosec |
boolean |
false |
Whether to ignore #nosec comments in the code |
excluded_paths |
list of mapping |
[] |
List of paths to exclude from the bandit scan |
additional_formats |
list of string |
[] |
Additional output formats to generate (e.g., html, csv, xml) |
tool_version |
string or null |
">=1.7.0,<2.0.0" |
Version constraint for bandit tool installation (e.g., '>=1.7.0'). If not specified, uses '>=1.7.0,<2.0.0' for stability. |
install_timeout |
integer |
300 |
Timeout in seconds for tool installation (default: 300) |
cdk-nag
CDK Nag is a security scanner for AWS CloudFormation templates that applies industry standard checks against AWS infrastructure-as-code.
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.cdk_nag_scanner.CdkNagScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: IAC
- Command:
python
- Install: none declared
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox:
JSII_*
- Environment set under sandbox-exec:
JSII_RUNTIME_PACKAGE_CACHE=disabled
Options, under scanners.cdk-nag.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
nag_packs |
mapping |
see the section |
CDK Nag packs to enable |
include_compliant_checks |
boolean |
false |
Include INFO-level findings for compliant resources in the report. |
cfn-guard
- Scanner page:
cfn-guard scanner page
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.cfn_guard_scanner.CfnGuardScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: IAC
- Command:
cfn-guard
- Install: pinned, checksum-verified release of
cfn-guard; custom command by ash dependencies install, for darwin/amd64, darwin/arm64, linux/amd64, linux/arm64, windows/amd64, windows/arm64
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox: none beyond the baseline
- Environment set under sandbox-exec: none
Options, under scanners.cfn-guard.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
rule_sets |
list of string |
["wa-Security-Pillar"] |
Rule sets from the bundled AWS Guard Rules Registry to evaluate, by file name without the .guard extension, e.g. ['wa-Security-Pillar', 'cis-aws-benchmark-level-1']. Defaults to the Well-Architected Security Pillar set. Set to [] to evaluate only rules_paths. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Set by such a config, it is ignored with a warning and the default set is evaluated. |
rules_paths |
list of string |
[] |
Your own cfn-guard rules: .guard files or directories of them. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Evaluated in addition to rule_sets. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. cfn-guard prints a rules file it cannot parse, so a path the scanned repository chose could put any file the scan can read into the report. Set by such a config, it is ignored with a warning, and an empty rule_sets falls back to wa-Security-Pillar. In a directory, the .guard and .ruleset files are read, recursively; one that resolves outside the directory, through a symlink, is refused. |
cfn-lint
- Scanner page:
cfn-lint scanner page
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.cfn_lint_scanner.CfnLintScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: IAC
- Command:
cfn-lint
- Install:
uv tool install on first use (cfn-lint[sarif]>=1.43.3,<2.0.0)
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox: none beyond the baseline
- Environment set under sandbox-exec: none
Options, under scanners.cfn-lint.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
config_file |
path, string, or null |
null |
Path to a cfn-lint configuration file (.cfnlintrc). A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. When unset, ASH gives cfn-lint an empty configuration, so a .cfnlintrc in the scanned repository or the home directory is NOT read: such a file can load Python rules (append_rules) and switch checks off. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. The file is used only when it is outside the scanned tree; otherwise it is ignored with a warning. |
regions |
list of string |
[] |
AWS regions to validate templates against, e.g. ['us-east-1', 'eu-west-1'], or ['ALL_REGIONS']. Empty validates against us-east-1, or the regions a template names in its own cfn-lint metadata or config_file names; AWS_REGION and AWS_DEFAULT_REGION are not read. |
ignore_checks |
list of string |
[] |
cfn-lint rule ids or prefixes to skip, e.g. ['W2001', 'W3']. Prefer ASH suppressions for individual findings; this removes the rule from every template. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Set by such a config, it is ignored with a warning. |
include_checks |
list of string |
[] |
cfn-lint rule ids or prefixes to enable in addition to the defaults, e.g. ['I'] for informational rules. |
honor_inline_ignores |
boolean |
false |
Honor the ignore_checks and configure_rules a template sets for itself in Metadata: cfn-lint: config (ignore_checks also at the resource level). Off by default: every rule outside ignore_checks and the config_file's ignore_checks is passed to cfn-lint as mandatory, and the config_file's configure_rules are passed on the command line, which cfn-lint takes instead of a template's, so a template cannot hide its own findings or the next template's parse errors, which reach ASH, where suppressions are reported and counted. A config_file setting the command line cannot carry (a list of more than one item, or a value with a comma, colon or equals sign) is then left out with a warning, and a config_file that sets merge_configs fails the scan. On, each template is linted by a cfn-lint run of its own, so its settings reach no other template; that adds a cfn-lint start-up per template. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Set by such a config, it is ignored with a warning. |
tool_version |
string or null |
">=1.43.3,<2.0.0" |
Version constraint for the cfn-lint installation, in pip requirement syntax. The default is the range the scanner's SARIF handling was verified against. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Set by such a config, it is ignored with a warning. |
install_timeout |
integer |
300 |
Timeout in seconds for tool installation |
cfn-nag
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.cfn_nag_scanner.CfnNagScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: IAC
- Command:
cfn_nag_scan
- Install: none declared
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox: none beyond the baseline
- Environment set under sandbox-exec: none
Options, under scanners.cfn-nag.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
checkov
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.checkov_scanner.CheckovScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: IAC
- Command:
checkov
- Install:
uv tool install on first use (checkov>=3.2.0,<4.0.0)
- Offline strategy:
cache_flags
- Network in the sandbox, by default: no
- Environment passed into the sandbox:
CHECKOV_*
- Environment set under sandbox-exec: none
Options, under scanners.checkov.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run in offline mode, disabling policy downloads. When true, this scanner runs offline even if ASH does not. ASH's own offline mode (--offline or ASH_OFFLINE) applies whatever this is set to; false follows it. |
config_file |
path, string, or null |
null |
Path to Checkov configuration file. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Defaults to searching for .checkov.yaml and .checkov.yml in the root of the source directory. |
skip_path |
list of mapping |
[] |
Path (file or directory) to skip, using regular expression logic, relative to current working directory. Word boundaries are not implicit; i.e., specifying "dir1" will skip any directory or subdirectory named "dir1". Ignored with -f. Can be specified multiple times. |
additional_formats |
list of one of cli, csv, cyclonedx, cyclonedx_json, json, junitxml, github_failed_only, gitlab_sast, sarif, spdx |
["cyclonedx_json"] |
List of additional formats to output. Defaults to including CycloneDX JSON |
frameworks |
list of one of all, ansible, argo_workflows, arm, azure_pipelines, bicep, bitbucket_pipelines, cdk, circleci_pipelines, cloudformation, dockerfile, github_configuration, github_actions, gitlab_configuration, gitlab_ci, bitbucket_configuration, helm, json, yaml, kubernetes, kustomize, openapi, sca_package, sca_image, secrets, serverless, terraform, terraform_json, terraform_plan, sast, sast_python, sast_java, sast_javascript, sast_typescript, sast_golang, 3d_policy |
["all"] |
Specific frameworks to include with Checkov. Defaults to all. |
skip_frameworks |
list of one of all, ansible, argo_workflows, arm, azure_pipelines, bicep, bitbucket_pipelines, cdk, circleci_pipelines, cloudformation, dockerfile, github_configuration, github_actions, gitlab_configuration, gitlab_ci, bitbucket_configuration, helm, json, yaml, kubernetes, kustomize, openapi, sca_package, sca_image, secrets, serverless, terraform, terraform_json, terraform_plan, sast, sast_python, sast_java, sast_javascript, sast_typescript, sast_golang, 3d_policy |
[] |
Specific frameworks to exclude with Checkov. Defaults to none. |
skip_ash_output_dir |
boolean |
true |
Tell Checkov to skip ASH's own output directories inside the scanned directory (this run's output directory and .ash/ash_output), so it does not parse ASH's previous reports. Defaults to true; set to false to let Checkov read them. Either way ASH drops the findings located there after the scan. Has no effect on Windows, where Checkov's --skip-path matching is unreliable. |
tool_version |
string or null |
null |
Version constraint for checkov installation, in pip requirement syntax. Leave unset to use the scanner's own default constraint. |
install_timeout |
integer |
300 |
Timeout in seconds for tool installation |
detect-secrets
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.detect_secrets_scanner.DetectSecretsScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: SECRETS
- Command:
detect-secrets
- Install: none declared
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox: none beyond the baseline
- Environment set under sandbox-exec: none
Options, under scanners.detect-secrets.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
baseline_file |
path, string, or null |
null |
Path to detect-secrets baseline file. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Defaults to searching for .secrets.baseline in the root of the source directory. The settings from the baseline will be overwritten if scan_settings is provided. |
scan_settings |
mapping |
see the section |
Settings to use with detect-secrets. Refer to the detect-secrets documentation for formatting information. By default, all plugins will be used and no filters are configured. scan_settings takes precedence over baseline_file |
skip_generated_lockfiles |
boolean |
true |
Skip machine-generated dependency lockfiles (package-lock.json, yarn.lock, poetry.lock, and similar) before scanning. These are dense with integrity hashes and are regenerated rather than hand-edited, so findings in them are usually noise. Hand-authored dependency declarations such as requirements.txt, Pipfile and environment.yml are always scanned and are not affected by this option. Set to false to scan generated lockfiles as well. |
max_worker_output_mib |
integer, greater than 0, at most 4,096 |
256 |
The most of the detect-secrets worker's output read back, in MiB, at most 4096. A finding is about 300 bytes of output, so the default of 256 holds about 900,000 findings. Reading the output costs about three times its size in memory (1024 MiB of output needs about 3 GiB). A scan whose output is larger fails and records no findings, with an error that names this option. Honored only from --config-overrides or a config file outside the scanned tree. |
gitleaks
- Scanner page:
gitleaks scanner page
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.gitleaks_scanner.GitleaksScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: SECRETS
- Command:
gitleaks
- Install: pinned, checksum-verified release of
gitleaks by ash dependencies install, for darwin/amd64, darwin/arm64, linux/amd64, linux/arm64, windows/amd64, windows/arm64
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox: none beyond the baseline
- Environment set under sandbox-exec: none
Options, under scanners.gitleaks.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
config_file |
path, string, or null |
null |
Path to a gitleaks TOML config. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Its rules and [[allowlists]] apply on top of ASH suppressions. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Unset, gitleaks uses GITLEAKS_CONFIG or GITLEAKS_CONFIG_TOML from the environment if one is set, else its default rules; a .gitleaks.toml in the scanned repository is not read. A path that does not exist fails the scan. |
baseline_path |
path, string, or null |
null |
Path to a gitleaks JSON report whose findings gitleaks ignores (gitleaks --baseline-path). A relative path is taken as for config_file. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. A path that does not exist fails the scan. |
honor_inline_ignores |
boolean |
false |
Honor gitleaks' inline gitleaks:allow comments. Off by default: ASH runs gitleaks --ignore-gitleaks-allow, so every finding reaches ASH, where suppressions are reported and counted. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Set by such a config, it is ignored with a warning. |
max_target_megabytes |
integer or null, at least 1 |
null |
Skip files larger than this many megabytes (gitleaks --max-target-megabytes). Unset scans every file. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Set by such a config, it is ignored with a warning. |
grype
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.grype_scanner.GrypeScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: SCA
- Command:
grype
- Install: pinned, checksum-verified release of
grype by ash dependencies install, for darwin/amd64, darwin/arm64, linux/amd64, linux/arm64, windows/amd64
- Offline strategy:
cache_flags
- Network in the sandbox, by default: yes, unless the scan is offline
- Environment passed into the sandbox:
GRYPE_*
- Environment set under sandbox-exec: none
Options, under scanners.grype.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
No description in the code. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run in offline mode, disabling database updates and validation. When true, this scanner runs offline even if ASH does not. ASH's own offline mode (--offline or ASH_OFFLINE) applies whatever this is set to; false follows it. |
config_file |
path, string, or null |
null |
Path to Grype configuration file. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. ASH does not look for one by name. Without one, grype gets an empty config, so it does not read .grype.yaml from the scanned tree. |
npm-audit
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.npm_audit_scanner.NpmAuditScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: SCA
- Command:
npm
- Install: none declared
- Offline strategy:
skip_offline
- Network in the sandbox, by default: yes, unless the scan is offline
- Environment passed into the sandbox:
npm_config_*, NPM_CONFIG_*, YARN_IGNORE_PATH, YARN_RC_FILENAME
- Environment set under sandbox-exec: none
Options, under scanners.npm-audit.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Treat this scanner as offline even if ASH is not. npm, yarn and pnpm audit by asking the registry, so offline npm-audit does not run: it is MISSING for a project with a lockfile and SKIPPED for one without. ASH's own offline mode (--offline or ASH_OFFLINE) applies whatever this is set to; false follows it. |
opengrep
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.opengrep_scanner.OpengrepScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes on Linux and macOS; no on Windows
- Tool type: SAST
- Command:
opengrep
- Install: pinned, checksum-verified release of
opengrep by ash dependencies install, for darwin/amd64, darwin/arm64, linux/amd64, linux/arm64, windows/amd64
- Offline strategy:
cache_flags
- Network in the sandbox, by default: yes, unless the scan is offline
- Environment passed into the sandbox:
OPENGREP_*, SEMGREP_*
- Environment set under sandbox-exec: none
Options, under scanners.opengrep.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run in offline mode, using locally cached rules. When true, this scanner runs offline even if ASH does not. ASH's own offline mode (--offline or ASH_OFFLINE) applies whatever this is set to; false follows it. |
config |
string |
p/ci |
YAML configuration file, directory of YAML files ending in .yml|.yaml, URL of a configuration file, or Opengrep registry entry name. Defaults to 'p/ci' for consistent results across online and offline modes. |
exclude |
list of string |
["*-converted.py", "*_report_result.txt"] |
Skip any file or directory whose path matches the pattern. |
exclude_rule |
list of string |
[] |
Skip any rule with the given id. |
severity |
list of one of INFO, WARNING, ERROR |
[] |
Report findings only from rules matching the supplied severity level. |
metrics |
one of auto, on, off |
auto |
Configures how usage metrics are sent to the OpenGrep server. Deprecated in Opengrep v1.7.0+. This configuration is ignored if the installed version is >= 1.7.0. |
patterns |
list of string |
[] |
Patterns to search for with OpenGrep. |
version |
string |
v1.30.2 |
Version of OpenGrep to use. |
sha256 |
mapping of one of linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64 to string |
{} |
SHA256 of the OpenGrep release asset for a custom version, keyed by platform/arch (e.g. linux/amd64). Required for any version other than the one ASH pins; ignored for the pinned version, whose digests ship with ASH. Get it from GitHub's per-asset digest for the release, or by running sha256sum on the downloaded asset. |
semgrep
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.semgrep_scanner.SemgrepScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes on Linux and macOS; no on Windows
- Tool type: SAST
- Command:
semgrep
- Install:
uv tool install on first use (semgrep>=1.125.0,<2.0.0)
- Offline strategy:
cache_flags
- Network in the sandbox, by default: yes, unless the scan is offline
- Environment passed into the sandbox:
SEMGREP_*
- Environment set under sandbox-exec: none
Options, under scanners.semgrep.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run in offline mode, using locally cached rules. When true, this scanner runs offline even if ASH does not. ASH's own offline mode (--offline or ASH_OFFLINE) applies whatever this is set to; false follows it. |
config |
string |
p/ci |
YAML configuration file, directory of YAML files ending in .yml|.yaml, URL of a configuration file, or Semgrep registry entry name. Defaults to 'p/ci' for consistent results across online and offline modes. |
exclude |
list of string |
["*-converted.py", "*_report_result.txt"] |
Skip any file or directory whose path matches the pattern. |
exclude_rule |
list of string |
[] |
Skip any rule with the given id. |
severity |
list of one of INFO, WARNING, ERROR |
[] |
Report findings only from rules matching the supplied severity level. |
metrics |
one of auto, on, off |
auto |
Configures how usage metrics are sent to the Semgrep server. |
tool_version |
string or null |
null |
Version constraint for semgrep installation, in pip requirement syntax. Leave unset to use the scanner's own default constraint. |
install_timeout |
integer |
300 |
Timeout in seconds for tool installation |
syft
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.syft_scanner.SyftScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: SBOM
- Command:
syft
- Install: pinned, checksum-verified release of
syft by ash dependencies install, for darwin/amd64, darwin/arm64, linux/amd64, linux/arm64, windows/amd64, windows/arm64
- Offline strategy:
cache_flags
- Network in the sandbox, by default: no
- Environment passed into the sandbox:
SYFT_*
- Environment set under sandbox-exec: none
Options, under scanners.syft.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run in offline mode, disabling update checks. When true, this scanner runs offline even if ASH does not. ASH's own offline mode (--offline or ASH_OFFLINE) applies whatever this is set to; false follows it. |
config_file |
path, string, or null |
null |
Path to Syft configuration file. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. ASH does not look for one by name. Without one, syft gets an empty config, so it does not read .syft.yaml from the scanned tree. |
exclude |
list of mapping |
[] |
Paths (files or directories) to skip, each a glob relative to the scanned directory and passed to syft as one --exclude. A glob must start with "./", "*/" or "**/", and syft fails the scan on any other. "*" does not match across "/" and "**" does: "./dir1/**" skips the top-level "dir1", and "**/dir1/**" skips every directory named "dir1". |
additional_outputs |
list of one of cyclonedx-json, cyclonedx-xml, github-json, spdx-json, spdx-tag-value, syft-json, syft-table, syft-text |
["syft-table"] |
List of additional formats to output. Defaults to syft-table. |
trivy
- Scanner page:
trivy scanner page
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.trivy_scanner.TrivyScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: SCA
- Command:
trivy
- Install: pinned, checksum-verified release of
trivy by ash dependencies install, for darwin/amd64, darwin/arm64, linux/amd64, linux/arm64, windows/amd64
- Offline strategy:
cache_flags
- Network in the sandbox, by default: yes, unless the scan is offline
- Environment passed into the sandbox:
TRIVY_*
- Environment set under sandbox-exec: none
Options, under scanners.trivy.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run in offline mode: skip database and check updates and use the vulnerability database already in trivy's cache. ASH still fails the scan when that database is past its 24h bound. When true, this scanner runs offline even if ASH does not. ASH's own offline mode (--offline or ASH_OFFLINE) applies whatever this is set to; false follows it. |
scanners |
list of one of vuln, misconfig, secret, license, length at least 1 |
["vuln"] |
Which trivy scanners to run. Defaults to vuln only: ASH's default scanners already cover secrets (detect-secrets) and IaC misconfigurations (checkov, cfn-nag, cdk-nag), and license findings are a compliance question. Add secret, misconfig or license to run trivy's checks for them as well. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Set by such a config, any set but the default is ignored with a warning. |
license_full |
boolean |
false |
Look for licenses in source file headers and license files too (trivy --license-full). Only used when scanners includes license. |
ignore_unfixed |
boolean |
false |
Report only vulnerabilities that have a fixed version (trivy --ignore-unfixed). Off by default: an unfixed vulnerability is still one, and turning this on withholds it from the report. |
disable_telemetry |
boolean |
true |
Disable sending anonymous usage data to Aqua (--disable-telemetry). Only the operator sets it to false, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, may set it to true but not to false. Offline, trivy sends none whatever this says. As for trivy-repo. |
config_file |
path, string, or null |
null |
A trivy config file (trivy.yaml), passed as --config. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. The file is used only when it is outside the scanned tree; otherwise it is ignored with a warning. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Unset or ignored, ASH passes TRIVY_CONFIG when that names a file outside the scanned tree (a relative path in it is taken from the working directory), and otherwise an empty config of its own, so a trivy.yaml in the scanned repository is not read: its settings (severity, scan.skip-files, db.repository, ...) can drop findings with nothing in the report saying so, and module.dir can load WASM modules. A path that does not exist fails the scan. |
ignore_file |
path, string, or null |
null |
A trivy ignore file, passed as --ignorefile. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. The file is used only when it is outside the scanned tree; a relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides and the environment variable. Unset, TRIVY_IGNOREFILE is used the same way, and otherwise trivy gets an empty one, so a .trivyignore in the scanned repository does not remove findings. As for trivy-repo. |
secret_config_file |
path, string, or null |
null |
A trivy secret scanning config (trivy-secret.yaml), passed as --secret-config. Only read when scanners includes secret. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. The file is used only when it is outside the scanned tree, and a relative path is taken as for ignore_file. Unset, TRIVY_SECRET_CONFIG is used the same way, and otherwise trivy gets an empty one, so a trivy-secret.yaml in the scanned repository does not disable secret rules. As for trivy-repo. |
zizmor
zizmor finds security issues in GitHub Actions workflows and composite actions.
- Scanner page:
zizmor scanner page
- Class:
automated_security_helper.plugin_modules.ash_builtin.scanners.zizmor_scanner.ZizmorScanner
- Provided by: built in, loaded on every scan
- Enabled by default: yes
- Tool type: SAST
- Command:
zizmor
- Install:
uv tool install on first use (zizmor>=1.29.0,<2.0.0)
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox: none beyond the baseline
- Environment set under sandbox-exec: none
Options, under scanners.zizmor.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
config_file |
path, string, or null |
null |
Path to a zizmor configuration file, passed as zizmor --config. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory; an absolute path is used as given. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Otherwise it runs zizmor --no-config, so a zizmor.yml or .github/zizmor.yml in the scanned repository is not read. |
persona |
one of regular, pedantic, auditor |
regular |
zizmor persona. regular reports the fewest false positives; pedantic adds code-smell findings; auditor reports everything, false positives included. |
online_audits |
boolean |
false |
Allow zizmor's online audits. Off by default: ASH runs zizmor --offline and any GH_TOKEN, GITHUB_TOKEN or ZIZMOR_GITHUB_TOKEN is removed from its environment. When true, ASH does not pass zizmor --offline, those variables reach zizmor unchanged, and zizmor may call the GitHub API with the token. ASH never reads or logs the token. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. It is ignored, with a warning, when ASH runs in offline mode. |
honor_inline_ignores |
boolean |
false |
Honor zizmor's inline # zizmor: ignore[...] comments and the ignore rules of the operator's config_file. Off by default: ASH runs zizmor --no-ignores, so every finding reaches ASH, where suppressions are reported and counted. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Set by such a config, it is ignored with a warning. |
tool_version |
string or null |
">=1.29.0,<2.0.0" |
Version constraint for zizmor installation, in pip requirement syntax. The default below is the constraint the scanner enforces. Another value: Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. Set by such a config, it is ignored with a warning and the default applies. |
install_timeout |
integer |
300 |
Timeout in seconds for tool installation |
ferret-scan
Ferret Scan is a sensitive data detection tool that scans files for potential sensitive information such as credit card numbers, passport numbers, SSNs, API keys, and other secrets.
- Scanner page:
ferret-scan scanner page
- Class:
automated_security_helper.plugin_modules.ash_ferret_plugins.ferret_scanner.FerretScanScanner
- Provided by: community module
ash_ferret_plugins, which ash scan loads when ash_plugin_modules names automated_security_helper.plugin_modules.ash_ferret_plugins
- Enabled by default: yes
- Tool type: SECRETS
- Command:
ferret-scan
- Install: none declared
- Offline strategy:
bundled
- Network in the sandbox, by default: no
- Environment passed into the sandbox:
FERRET_*
- Environment set under sandbox-exec: none
Options, under scanners.ferret-scan.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
confidence_levels |
one of all, high, medium, low, high,medium, high,low, medium,low |
all |
Confidence levels to display: 'high', 'medium', 'low', or combinations |
checks |
string |
all |
Specific checks to run, comma-separated. As of ferret-scan v2.4.5 through v2.5.2: BANK_ACCOUNT, CLOUD_RESOURCES, CREDIT_CARD, DATE_OF_BIRTH, DRIVERS_LICENSE, EMAIL, INTELLECTUAL_PROPERTY, IP_ADDRESS, MEDICAL_ID, METADATA, OTP, PASSPORT, PERSON_NAME, PHONE, PHYSICAL_ADDRESS, SECRETS, SOCIAL_MEDIA, SSN, VIN, or 'all'. The authoritative list for the installed version is 'ferret-scan --help checks'. |
recursive |
boolean |
true |
Recursively scan directories |
config_file |
path, string, or null |
null |
Path to Ferret configuration file (YAML). If not specified, uses the default config bundled with this plugin. Set to a custom path to override the default configuration. |
use_default_config |
boolean |
true |
Use the default ferret-config.yaml bundled with this plugin. Set to False to disable the default config and rely only on ferret-scan's built-in defaults. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. |
profile |
string or null |
null |
Profile name to use from config file (e.g., 'quick', 'ci', 'security-audit', 'comprehensive'). A profile can run fewer checks and report only higher-confidence findings. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. |
exclude_patterns |
list of string |
[] |
File patterns to exclude from scanning (glob patterns) |
show_match |
boolean |
false |
Display the actual matched text in findings. Note: This affects ferret-scan output, not ASH logging. |
enable_preprocessors |
boolean |
true |
Enable text extraction from documents (PDF, Office files). This allows scanning content within binary document formats. |
finding_limit |
integer, at least 0 |
0 |
Maximum number of findings ferret-scan will emit, passed as '--limit'. ferret-scan defaults to 200, which silently truncates results on large scans; ASH defaults this to 0 (unlimited) so no findings are dropped from the SARIF report. Set a positive integer to cap output. |
fail_on_incomplete |
boolean |
false |
Pass '--fail-on-incomplete' so ferret-scan exits 3 when a file could not be fully scanned (coverage cut short by a timeout/budget, or the file could not be opened). Findings may be missing in that case. The plugin still reports the (partial) findings, and counts the target as failed, so the scanner's row is ERROR and the completeness gate fails the scan. Off by default to match ferret-scan, which otherwise only warns on stderr. |
respect_gitignore |
boolean |
false |
Pass '--respect-gitignore' so ferret-scan honours .gitignore when scanning. Off by default: .gitignore commonly hides files with high secret-scanning value (.env, *.pem, credentials/), so honouring it can suppress exactly what a sensitive-data scan should see. |
disable_ip_types |
string or null |
null |
Comma-separated INTELLECTUAL_PROPERTY sub-types to skip, passed as '--disable-ip-types': copyright, patent, trademark, trade_secret, internal_url. Useful for codebases with a standard copyright header on every file. Only affects the INTELLECTUAL_PROPERTY check. |
explain |
boolean |
false |
Pass '--explain' so ferret-scan annotates each finding with a plain-language rationale, a verdict (likely real/test/uncertain), and a drafted suppression reason. Fully offline — no data leaves the host. |
validator_budget |
string or null |
null |
Per-validator time budget passed as '--validator-budget', e.g. 'SSN=500ms,IP_ADDRESS=2m' or 'all=2m'. Over-budget validators are stopped and the scan is marked incomplete (see fail_on_incomplete). Default: no budget. |
max_live_bytes |
string or null |
null |
Cap on total extracted content held in memory across concurrently scanned files, passed as '--max-live-bytes', e.g. '256MB' or '1GB' (units: B, KB, MB, GB; bare number = bytes). Bounds peak memory on constrained hosts. Default: no cap. |
ferret_debug |
boolean |
false |
Enable ferret-scan's debug logging (shows preprocessing and validation flow). This controls ferret-scan's own output, not ASH logging. |
ferret_verbose |
boolean |
false |
Enable ferret-scan's verbose output (detailed finding info). This controls ferret-scan's own output, not ASH logging. |
tool_version |
string or null |
null |
Version constraint for ferret-scan installation (e.g., '>=1.0.0,<2.0.0', '==1.2.0'). If not specified, uses the plugin's default compatible version range: >=2.4.5,<2.6.0. Supported versions: 2.4.5 to 2.6.0 (exclusive). |
skip_version_check |
boolean |
false |
Skip version compatibility check. Use with caution - incompatible versions may cause unexpected behavior or errors. |
snyk-code
- Scanner page:
snyk-code scanner page
- Class:
automated_security_helper.plugin_modules.ash_snyk_plugins.snyk_code_scanner.SnykCodeScanner
- Provided by: community module
ash_snyk_plugins, which ash scan loads when ash_plugin_modules names automated_security_helper.plugin_modules.ash_snyk_plugins
- Enabled by default: yes
- Tool type: SAST
- Command:
snyk
- Install: none declared
- Offline strategy:
skip_offline
- Network in the sandbox, by default: yes, unless the scan is offline
- Environment passed into the sandbox:
SNYK_*, SNYK_TOKEN
- Environment set under sandbox-exec: none
Options, under scanners.snyk-code.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run this scanner offline even when ASH runs online. False follows ASH's own mode; it never puts a scanner online under --offline. |
honor_tree_exclusions |
boolean |
false |
Let snyk code test apply the exclusion files it finds in the scanned tree: the exclude.code and exclude.global entries of a .snyk file and the rules of a .dcignore file, which leave the files they name out of the analysis. snyk has no option that stops it reading them, so while this is false and the tree has one, snyk-code does not run and its error names the files. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. |
trivy-repo
- Scanner page:
trivy-repo scanner page
- Class:
automated_security_helper.plugin_modules.ash_trivy_plugins.trivy_repo_scanner.TrivyRepoScanner
- Provided by: community module
ash_trivy_plugins, which ash scan loads when ash_plugin_modules names automated_security_helper.plugin_modules.ash_trivy_plugins
- Enabled by default: yes
- Tool type: SAST
- Command:
trivy
- Install: pinned, checksum-verified release of
trivy by ash dependencies install, for darwin/amd64, darwin/arm64, linux/amd64, linux/arm64, windows/amd64
- Offline strategy:
cache_flags
- Network in the sandbox, by default: yes, unless the scan is offline
- Environment passed into the sandbox:
TRIVY_*
- Environment set under sandbox-exec: none
Options, under scanners.trivy-repo.options. An option not listed here refuses the configuration.
| Option |
Type |
Default |
Description |
severity_threshold |
one of ALL, LOW, MEDIUM, HIGH, CRITICAL, or null |
null |
Minimum severity level to consider findings as failures. This is a scanner-level override of the default severity-level within ASH of MEDIUM. |
scan_timeout |
integer or null, at least 1 |
1800 |
Maximum time in seconds to allow this scanner's tool invocation to run before it is killed. Set to null to leave the scanner unbounded, which risks a scan that never completes. |
offline |
boolean |
false |
Run in offline mode, skipping DB updates and check-update calls. When true, this scanner runs offline even if ASH does not. ASH's own offline mode (--offline or ASH_OFFLINE) applies whatever this is set to; false follows it. |
scanners |
list of one of vuln, misconfig, secret, license |
["vuln", "secret", "misconfig", "license"] |
List of what security issues to detect with Trivy Repo specifically |
license_full |
boolean |
true |
Eagerly look for licenses in source code headers and license files |
ignore_unfixed |
boolean |
true |
Display only fixed vulnerabilities |
disable_telemetry |
boolean |
true |
Disable sending anonymous usage data to Aqua (--disable-telemetry). Only the operator sets it to false, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, may set it to true but not to false. Offline, trivy sends none whatever this says. |
config_file |
path, string, or null |
null |
A trivy config file (trivy.yaml), passed as --config. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. The file is used only when it is outside the scanned tree; otherwise it is ignored with a warning. A relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides, not from the source directory. Unset or ignored, ASH passes TRIVY_CONFIG when that names a file outside the scanned tree (a relative path in it is taken from the working directory), and otherwise an empty config of its own, so trivy does not load a trivy.yaml from the directory it runs in. A path that does not exist fails the scan. |
module_dir |
path, string, or null |
null |
A directory of trivy modules, passed as --module-dir. Unset, ASH passes an empty directory of its own. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. The directory is used, and a relative path taken, as for config_file. A path that is not a directory fails the scan. |
ignore_file |
string or null |
null |
A trivy ignore file, passed as --ignorefile. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. The file is used only when it is outside the scanned tree; a relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides and the environment variable. Unset, TRIVY_IGNOREFILE is used the same way, and otherwise trivy gets an empty one, so a .trivyignore in the scanned repository does not remove findings. |
secret_config_file |
string or null |
null |
A trivy secret scanning config (trivy-secret.yaml), passed as --secret-config. Used only when the operator sets it, with --config-overrides or in a config file outside every git checkout and the scanned directory: a config file inside one, or one an MCP client delivered, does not choose it. The file is used only when it is outside the scanned tree; a relative path is taken from the directory of the config file that sets it, or from the working directory for --config-overrides and the environment variable. Unset, TRIVY_SECRET_CONFIG is used the same way, and otherwise trivy gets an empty one, so a trivy-secret.yaml in the scanned repository does not disable secret rules. |