Skip to content
Projects

awslabs/automated-security-helper

View on GitHub

awslabs/automated-security-helper has 710 GitHub stars and 95 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 20:08 UTC. Last push 2026-11-06.

How these counts are measured

ASH is an extensible, open source SAST, SCA, and IaC security scanner orchestration engine.

Measured star growth

in 24h
0
in 7 days
Update delayed
in 15 days
Update delayed
in 1 month
Update delayed

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

Automated Security Helper (ASH)

Open-source orchestration for code, infrastructure, secret, and dependency scanners.

Unified CI Install methods

Quick start · Reports · Integrations · Configuration · Documentation

Quick start

Use Python 3.10 to 3.14 and pipx. For container mode, also install an OCI-compatible runtime such as Docker, Finch, or Podman.

pipx install git+https://github.com/awslabs/[email protected]

# Run from the project you want to scan
ash --mode container

The first container run builds the image and prepares scanner dependencies. Open .ash/ash_output/reports/ash.html or run ash inspect findings.

Execution modes

Mode Command Requirements
Container ash --mode container OCI-compatible runtime
Local ash --mode local Local scanner dependencies
Pre-commit ash --mode precommit Python-based scanners with simplified output

Local and pre-commit workflows use uv for managed tool installation. The installation guide covers platform prerequisites and dependency setup.

Other installation methods

Run with uv:

uvx --from git+https://github.com/awslabs/[email protected] ash --help
uvx --from git+https://github.com/awslabs/[email protected] ash --mode container

Install in a Python environment:

pip install git+https://github.com/awslabs/[email protected]

Install with Homebrew:

brew tap awslabs/automated-security-helper https://github.com/awslabs/automated-security-helper.git
brew trust awslabs/automated-security-helper
brew install ash

Homebrew refuses to load a formula by its short name, as in brew install ash, from a tap you have not trusted, so the second line trusts this one; on a Homebrew without brew trust, skip that line. Naming the formula in full needs no brew trust: brew install awslabs/automated-security-helper/ash trusts that one formula as it installs it. The formula builds the tagged release on Homebrew's Python 3.12, with ASH's cdk extra, and installs the dependency versions locked in that release's uv.lock. It downloads them from PyPI during the install, so the install needs network access, and building with HOMEBREW_FORMULA_BUILD_NETWORK=deny is not supported. The formula also installs Node.js, which cdk-nag and npm-audit run on. grype, syft, opengrep and cfn-nag are separate programs that the formula does not install: ash dependencies install adds grype, syft and opengrep, and cfn-nag needs Ruby (gem install cfn-nag). Until they are installed, a default scan reports them MISSING and exits 1. In container mode, a Homebrew install builds its image from the commit the formula built, or, when Homebrew built it from a source tarball with no git metadata, from the release tag of its version, with a warning that this is a guess.

Install from source:

git clone --branch v3.7.1 https://github.com/awslabs/automated-security-helper.git
cd automated-security-helper
pip install .

Pin @v3.7.1 for a reproducible install. The floating @v3 tag follows stable v3 releases. See the installation guide for Windows and offline environments.

Reports

  • Check the outcome and scanner coverage.
  • Review findings by severity.
  • Inspect rule IDs, locations, and evidence.
ASH offline report with the scan outcome, finding counts, and explicit coverage notices.

Example scan results.

Offline HTML reports include search, filters, finding details, and printing.

ash inspect findings    # Open the terminal findings explorer
ash report              # Read the text summary of the latest scan
Terminal findings explorer

ASH terminal explorer with severity-first findings, scanner and suppression filters, selected finding context, and keyboard shortcuts.

Use the footer shortcuts to search, filter, inspect, and suppress.

Output files

Default output lives in .ash/ash_output/. Enabled reporters write into reports/.

Artifact Use it for
reports/ash.html Offline review, filtering, and printing
reports/ash.summary.md Pull request comments and Actions summaries
reports/ash.summary.txt A readable summary in a file or terminal
reports/ash.sarif IDE annotations and SARIF consumers
reports/ash.flat.json Scripts and dashboards
reports/ash.csv Spreadsheet analysis
ash_aggregated_results.json The complete scan record and validation data

ASH also supports JUnit XML, CycloneDX, SPDX, OCSF, GitLab, YAML, and AWS reporting destinations. See the complete format guide.

Exit status: 0 means no actionable findings, or findings are allowed by policy; 1 means execution needs attention; 2 means actionable findings with failure-on-findings enabled; 3 means a configuration ASH cannot use or an input it refuses; 4 means a workspace definition or policy error; 5 means a usage error. A scan with incomplete coverage needs follow-up. Filters change the view; configured thresholds determine the scan gate.

Integrations

Your workflow Next step
CI and pull requests Run ASH in CI
Before a commit Set up pre-commit
AI coding assistant Install an editor or agent integration
MCP client Connect a client
Multiple projects Scan a workspace over MCP
AWS reporting Choose an AWS destination
A custom scanner or report Build an ASH plugin

See integration options.

Connect an AI assistant

After installing ASH, add this server to your MCP client's configuration:

{
  "mcpServers": {
    "ash": {
      "command": "ash",
      "args": ["mcp"]
    }
  }
}

Stop polling on completed, incomplete, failed, or cancelled. Check scanner coverage before reviewing findings.

For agent instructions, install the ash-mcp skill:

npx skills add awslabs/automated-security-helper

The skill supplies workflow guidance. Configure the MCP server as above, or use a platform integration that includes server wiring. The MCP server guide covers client-specific setup. The HTTP transport guide covers remote source delivery, session handling, and deployment configuration.

MCP tools
Tool Action
get_scan_progress Read scan status and partial results
get_scan_results Read results after a completed or incomplete scan
list_active_scans List this session's active and recent scans
cancel_scan Cancel a running scan this session started
check_installation Check ASH and scanner dependencies
run_ash_scan Run a synchronous scan
get_scan_summary Read counts, severity, and scan status
get_scan_result_paths Locate generated report files
explain_finding Look up one finding by ID
get_config Read the resolved configuration
diff_scan_results Compare two aggregated result files
suggest_suppression Draft a suppression for review
resolve_ash_workspace Preview a workspace scan plan
run_ash_workspace_scan Scan workspace projects with their configurations
list_scanners List the built-in and community scanners ASH ships, with metadata
validate_config Check a configuration against the schema
list_profiles List registered configuration profiles
select_profile Apply a profile to the session
set_source_git Clone a repository from a host the operator allowed as the scan target
set_source_zip_chunk Upload a source archive chunk, up to 1 MiB
set_source_zip_finalize Verify and extract the uploaded archive
clear_source Delete the delivered source tree

See the tool reference for complete inputs and outputs. Source-delivery tools use the session the server issued on a network connection, never a client-chosen header; a stateless server issues no session unless started with --trust-upstream-session-id. A local stdio client can name local paths directly.

Add a pre-commit check

Add to .pre-commit-config.yaml:

repos:
  - repo: https://github.com/awslabs/automated-security-helper
    rev: v3.7.1
    hooks:
      - id: ash

Run pre-commit run ash --all-files to check the project.

The ash hook runs precommit mode (bandit, detect-secrets, checkov, cdk-nag and npm-audit) and installs the cdk extra into its environment. It needs pre-commit running on Python 3.10 to 3.14, and Node.js and npm on PATH for cdk-nag and npm-audit. ash-simple-scan is the same hook under its earlier id, and ash-full-scan scans in the ASH container image instead. See Run ASH with pre-commit for running without Node.js and for the container hook.

Configuration

Create .ashrc.yaml at the project root to name the project, set the severity gate, and choose scanner and reporter options (existing configs under the older .ash/.ash.yaml name keep loading). The schema provides editor validation.

# yaml-language-server: $schema=https://raw.githubusercontent.com/awslabs/automated-security-helper/refs/heads/main/automated_security_helper/schemas/AshConfig.json
project_name: my-project
global_settings:
  severity_threshold: MEDIUM
scanners:
  bandit:
    enabled: true
    options:
      confidence_level: high
reporters:
  markdown:
    enabled: true
    options:
      include_detailed_findings: true

Use the configuration guide for settings and overrides, the suppression guide for an accepted finding with a recorded reason, and plugin development for new capabilities.

Scanner coverage and local setup
Scanner Coverage Local setup
Bandit Python code Managed through uv tool isolation
Semgrep Application code across multiple languages Managed through uv tool isolation
Opengrep Application code with Semgrep-compatible rules Managed through uv tool isolation
detect-secrets Secrets in text files Included with ASH
Checkov Infrastructure and configuration Managed through uv tool isolation
cfn-nag CloudFormation Ruby and cfn-nag
cdk-nag CloudFormation ASH's cdk extra, and Node.js
npm-audit Node.js dependencies Node.js and npm
Grype Dependency vulnerabilities Grype
Syft Software bill of materials Syft
gitleaks Secrets in text files ash dependencies install (pinned release binary)
cfn-lint CloudFormation Managed through uv tool isolation
cfn-guard CloudFormation (AWS Guard Rules Registry rules) ash dependencies install (pinned binary and rules)
Trivy (trivy fs) Dependency vulnerabilities ash dependencies install (pinned release binary)
actionlint GitHub Actions workflows ash dependencies install (pinned release binary)
zizmor GitHub Actions workflows and composite actions Managed through uv tool isolation

Enabled scanners depend on your execution mode and configuration. Check the scanner catalog for capabilities and the language guide for coverage.

Documentation

Task Reference
Understand a command CLI reference
Recover from a setup or scan issue Troubleshooting
Understand scanner coverage Languages and frameworks
Read common answers FAQ
Contribute a change Contributing and development setup
Review the interfaces Design system and all-surface review

Report bugs and feature requests through GitHub issues. For security concerns, follow Security issue notifications.

Licensed under Apache 2.0. Bundled fonts and icons retain their respective licenses alongside their assets.

Build with <3 at Amazon Web Services

Explore related projects