Skip to main content
Glama

Quick Start

pip install cloud-audit
cloud-audit scan          # uses your default AWS credentials and region

No AWS account handy? Run a full sample report offline:

cloud-audit demo

cloud-audit is read-only. It never modifies your infrastructure; SecurityAudit is enough (permissions).

Related MCP server: agent-bom

Example Output

+---- Attack Chains (5 detected) -----------------------------------+
|  CRITICAL  Internet-Exposed Admin Instance                        |
|            i-0abc123 - public SG + admin IAM role + IMDSv1        |
|  CRITICAL  IAM Privilege Escalation via iam:PassRole              |
|            ci-deploy-role - 3-step path to admin                  |
|  CRITICAL  CI/CD to Admin Takeover                                |
|            github-deploy - OIDC without sub + admin policy        |
+-------------------------------------------------------------------+

+---- Remediation Plan ---------------------------------------------+
|  Fix 4 root causes, break 22 attack chains                        |
|  Quick wins (effort LOW, 14 chains):                              |
|    1. Restrict SG ingress on sg-0abc123   -> breaks 8 chains      |
|    2. Add OIDC sub condition              -> breaks 6 chains      |
+-------------------------------------------------------------------+

Preview a fix before you touch anything:

cloud-audit simulate --fix aws-vpc-002
# Score 34 -> 58 (+24)  |  Chains broken 8 of 22  |  Findings resolved 11

What You Get

  • Attack chains // 31 rules correlate individual findings into exploitable paths (MITRE ATT&CK + pathfinding.cloud). docs

  • Root-cause fixes // groups findings by shared cause and ranks them: "fix 4 things, break 22 chains," with a what-if simulate to preview impact. docs

  • IAM privilege escalation // 64 methods across 9 categories, including lateral movement through the AssumeRole graph. docs

  • Blast radius // walk outward from any resource to see what an attacker reaches; export JSON to the live visualizer. docs

  • Proof Mode // scan --verify checks each escalation path against the IAM policy simulator (read-only) and flags the ones the principal can actually perform. docs

  • Data perimeter // resource-policy checks for confused-deputy and cross-org exposure, evaluating condition values (not just their presence). docs

  • AgentCore security // checks for Amazon Bedrock AgentCore AI agents: network mode, MMDSv2, memory encryption, gateway authorizer. docs

  • Threat Feed // 10 detectors for active-abuse patterns from 2025-2026 incidents, each with a primary-source citation. docs

  • Remediation on every finding // copy-paste AWS CLI + reviewable Terraform you apply yourself; security findings also carry a USD breach-cost estimate with sources.

  • Trend & drift // cloud-audit diff catches ClickOps drift between scans; cloud-audit trend tracks posture over time.

Reports

cloud-audit scan --format html  -o report.html    # client-ready
cloud-audit scan --format sarif -o results.sarif  # GitHub Code Scanning
cloud-audit scan --format json  -o report.json    # machine-readable
cloud-audit scan --format markdown -o report.md   # PR comments

CI/CD

- run: pip install cloud-audit
- run: cloud-audit scan --format sarif --output results.sarif
- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: results.sarif

--quiet exits with a code only: 0 clean, 1 findings, 2 error. Gate on severity with --min-severity high. Ready-made workflows: basic scan, daily diff, post-deploy.

Installation

pip install cloud-audit                              # pip (recommended)
pipx install cloud-audit                             # isolated
docker run ghcr.io/gebalamariusz/cloud-audit scan   # Docker

Docker with credentials:

docker run -v ~/.aws:/home/cloudaudit/.aws:ro ghcr.io/gebalamariusz/cloud-audit scan

AWS Permissions

Read-only. Attach the AWS-managed SecurityAudit policy (covers every check, including IAM escalation analysis):

aws iam attach-role-policy --role-name auditor \
  --policy-arn arn:aws:iam::aws:policy/SecurityAudit

cloud-audit never modifies your infrastructure. simulate runs locally against scan data and makes no AWS calls.

What's Checked

110 checks across 25 AWS services - IAM, S3, EC2, VPC, RDS, KMS, CloudTrail, GuardDuty, Lambda, Secrets Manager, Bedrock, SageMaker, Bedrock AgentCore, DynamoDB, and more. Run cloud-audit list-checks, or see the full check reference.

6 compliance frameworks via scan --compliance <id>: CIS AWS v3.0 and SOC 2 Type II (stable), plus ISO 27001:2022, HIPAA, NIS2, and BSI C5:2020 (beta). docs

MCP server for AI agents - 6 read-only tools (scan_aws, get_findings, get_attack_chains, get_remediation, get_health_score, list_checks):

claude mcp add cloud-audit -- uvx --from cloud-audit cloud-audit-mcp
cloud-audit scan -R                                      # show remediation inline
cloud-audit scan --profile prod --regions eu-central-1   # profile / region
cloud-audit scan --regions all                           # all enabled regions
cloud-audit scan --role-arn arn:aws:iam::...:role/audit  # cross-account
cloud-audit scan --export-fixes fixes.sh                 # export all fixes

Configure defaults in .cloud-audit.yml (regions, min_severity, exclude_checks, time-boxed suppressions). Environment variables (CLOUD_AUDIT_REGIONS, CLOUD_AUDIT_MIN_SEVERITY, ...) override the file; CLI flags override everything. See the configuration guide.

Documentation

Full documentation at haitmg.pl/cloud-audit: getting started, attack chains, IAM escalation, blast radius, Proof Mode, data perimeter, AgentCore, compliance, and the full check reference.

Commercial Support

cloud-audit is free and stays free. If you want a human on the findings, the author offers professional services:

  • Scanner output review (free) - send your cloud-audit / Prowler / Security Hub output, get a short written review of what actually matters and what to fix first

  • AWS security audit - full account audit with a prioritized report and ready-to-apply fixes

  • Remediation support - Terraform and IAM changes, verified against your workloads

  • Palo Alto VM-Series on AWS - architecture and security review (GWLB/TGW, HA, routing)

Details: haitmg.pl/cloud-audit-support or email kontakt@haitmg.pl.

Development

git clone https://github.com/gebalamariusz/cloud-audit.git
cd cloud-audit
pip install -e ".[dev]"
pytest -q && ruff check src/ tests/ && mypy src/

See CONTRIBUTING.md to add a check. Past releases in CHANGELOG.md.

License

MIT - Mariusz Gebala / HAIT

Available Tools

6 tools
get_attack_chainsA

Get all detected attack chains from the last scan.

Attack chains are correlated findings that form exploitable attack paths. Each chain includes a narrative, priority fix, and breach cost estimate.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description bears full burden. It discloses the return contents but does not mention any behavioral traits like temporary exclusivity, authorization requirements, or potential staleness. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. Front-loads the core action and then clarifies what attack chains are. Very efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, presence of output schema, and no annotations, the description covers the return value sufficiently. Minor gaps: no mention of ordering, limit, or whether chains from multiple scans are aggregated, but 'from the last scan' provides temporal context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. Baseline for zero parameters is 4, and description adds no extra param info, which is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it gets all detected attack chains from the last scan, defines attack chains as correlated findings forming exploitable paths, and distinguishes from siblings like get_findings by specifying the unique content (narrative, priority fix, breach cost estimate).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage after a scan but does not provide explicit guidance on when to use this tool instead of siblings like get_findings or scan_aws. No exclusions or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_findingsA

Get findings from the last scan, optionally filtered.

Each finding includes check ID, severity, resource, description, and estimated breach cost.

Args: severity: Filter by severity (critical, high, medium, low) service: Filter by AWS service prefix (e.g. "iam", "s3", "ec2", "vpc") limit: Maximum number of findings to return (default: 20)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
serviceNo
severityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes output fields but does not disclose behavioral traits such as whether results are cached, what happens if no scans exist, or read-only nature. Mutation or destructive potential is not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description includes a docstring-style Args section which is clear but slightly verbose. It could be more concise by integrating parameter info into a single sentence. Still, it is structured and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is an output schema, the description need not explain return format entirely, but it does list output fields. It lacks details on pagination, error handling, or behavior when filters are omitted. Overall, it is mostly complete for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description explains each parameter: severity filter, service filter, and limit with default. This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves findings from the last scan with optional filters, and lists specific data fields. This distinguishes it from sibling tools like get_health_score or list_checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating optional filters but provides no explicit guidance on when to use this tool versus alternatives like get_attack_chains or get_remediation. Sibling tools are listed but not compared.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_health_scoreA

Get the current health score and risk exposure summary.

Returns the 0-100 health score, finding counts by severity, attack chain count, and total estimated risk exposure in USD.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description acknowledges it is a read operation returning data, but does not disclose potential side effects or requirements (e.g., authentication, data freshness). It is acceptable for a simple read-only tool but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundant information. Front-loaded with the action, then specifies outputs. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and presence of output schema, the description covers basic purpose and returns. However, it misses context like whether the health score is real-time or cached, or if prior scanning (via 'scan_aws') is necessary. Adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%, so the description cannot add param info. It does add value by explaining the return structure, which is helpful given an output schema exists, earning a baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the current health score and risk exposure summary, listing specific outputs (score, finding counts, attack chain count, estimated risk). This distinguishes it from sibling tools that focus on individual components.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus siblings like 'get_findings' or 'get_attack_chains'. It does not mention prerequisites, such as whether a scan is required first, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_remediationA

Get remediation details (CLI command + Terraform code) for a specific check.

Returns copy-paste ready AWS CLI command and Terraform HCL snippet to fix the finding.

Args: check_id: The check ID (e.g. "aws-iam-001", "aws-s3-001", "aws-vpc-002")

ParametersJSON Schema
NameRequiredDescriptionDefault
check_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description details the output format (copy-paste ready CLI and HCL). It does not disclose error handling, authentication needs, or behavior on invalid IDs, but it is adequate for a straightforward read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loads the purpose, and provides examples without superfluous information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (not shown), the description sufficiently explains what the tool returns. It covers the essential context for a simple retrieval tool, though it could mention the output format types.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds concrete examples for check_id (e.g., 'aws-iam-001'), clarifying the expected format beyond the schema's type definition alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool's purpose: retrieving remediation details (CLI command + Terraform code) for a specific check. It distinguishes from sibling tools like list_checks and get_findings by focusing on remediation actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates the tool is used for a specific check ID, providing examples. While it does not explicitly state when not to use it or compare to alternatives, the context is clear for a simple retrieval tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_checksA

List all available security checks (no AWS credentials needed).

Returns check IDs with their categories and services.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states that no AWS credentials are needed (auth requirement) and that the return includes check IDs, categories, and services. This is fairly transparent for a read-only list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The key information is front-loaded, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no annotations, and an output schema (not detailed here but exists), the description is largely complete. It covers purpose, auth requirements, and return content. Could potentially mention that the response is not paginated or that results are static, but these are minor omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and 100% coverage, so the description need not add parameter information. Baseline 3 applies, and the description does not add meaningful parameter semantics beyond what the schema shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all available security checks, specifies no AWS credentials are needed, and indicates the return content (check IDs, categories, services). It distinguishes from sibling tools like scan_aws or get_findings by being a simple listing operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for browsing available checks but does not explicitly provide when-to-use or when-not-to-use guidance, nor does it compare with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_awsA

Run an AWS security scan and return a summary.

Scans your AWS account for security misconfigurations, detects attack chains, and estimates breach cost risk.

Args: profile: AWS CLI profile name (default: "default") regions: Comma-separated AWS regions to scan (default: profile region) min_severity: Minimum finding severity: critical, high, medium, low

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNodefault
regionsNo
min_severityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses the scan scope (misconfigurations, attack chains, breach cost) but omits potential side effects, authentication needs, or rate limits. It implies a read-only operation but does not explicitly state it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with purpose and includes an Args section. It is relatively concise, though the Args list could be integrated into a single paragraph to reduce redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (not shown) and 0 required parameters, the description covers the main purpose well. However, it lacks details on the summary content and how it relates to sibling tools, slightly reducing completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds full meaning: profile as AWS CLI profile, regions as comma-separated, min_severity with value list. This compensates completely for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Run an AWS security scan and return a summary', specifying it scans for misconfigurations, attack chains, and breach cost. This differentiates from siblings like get_findings or get_attack_chains which are more granular.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs siblings. The description implies it's for a broad scan, but does not mention when not to use it or suggest alternatives like get_findings for specific details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv2.2.1
    • Addedget_attack_chains
    • Addedget_findings
    • Addedget_health_score
    • Addedget_remediation
    • Addedlist_checks
    • Addedscan_aws
  2. 6 tool updatesv2.2.0
    • Removedget_attack_chains
    • Removedget_findings
    • Removedget_health_score
    • Removedget_remediation
    • Removedlist_checks
    • Removedscan_aws
  3. 6 tool updatesv1.0.1
    • First observedget_attack_chains
    • First observedget_findings
    • First observedget_health_score
    • First observedget_remediation
    • First observedlist_checks
    • First observedscan_aws

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct aspect of cloud audit: scanning, findings, attack chains, health score, remediation, and check listing. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (get_*, list_*, scan_*) using snake_case, making them predictable and easy to understand.

Tool Count5/5

With only 6 tools, the server is well-scoped for its purpose—covering the full security audit workflow without unnecessary redundancy.

Completeness5/5

The tool set covers all essential operations: scanning, retrieving findings, attack chains, health summary, remediation details, and listing available checks. No obvious gaps.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A local-first AWS security tool that uses graph theory to discover attack paths (e.g., Internet → Role → DB) and prioritize remediations. It allows agents to perform read-only security audits and generate Terraform fixes without data exfiltration.
    15
    4
    Apache 2.0
  • A
    license
    B
    quality
    A
    maintenance
    AI supply chain security scanner for MCP servers and AI agents. 18 tools for CVE scanning, blast radius mapping, CIS benchmarks, SBOM generation, and compliance enforcement across OWASP LLM Top 10, MITRE ATLAS, NIST AI RMF, and EU AI Act.
    86
    31
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Security MCP server with 300+ rules for AI-generated code. Scans Next.js, Supabase, Clerk, Stripe, Prisma, Hono, GraphQL and 20+ modules. Zero config, runs locally.
    39
    393
    5
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gebalamariusz/cloud-audit'

If you have feedback or need assistance with the MCP directory API, please join our Discord server