Skip to content
Skip to content
Documentation

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.