Skip to main content

An open source Model Context Protocol (MCP) server and command-line tool that helps your AI coding assistants quickly create baseline IAM policies that you can refine as your application evolves, so you can build faster. IAM Policy Autopilot analyzes your application code locally to generate identity-based policies for application roles, enabling faster IAM policy creation and reducing access troubleshooting time. IAM Policy Autopilot supports applications built in Python, Go, and TypeScript.

Project description

IAM Policy Autopilot

An open source Model Context Protocol (MCP) server and command-line tool that helps your AI coding assistants quickly create baseline IAM policies that you can refine as your application evolves, so you can build faster. IAM Policy Autopilot analyzes your application code locally to generate identity-based policies for application roles, enabling faster IAM policy creation and reducing access troubleshooting time. IAM Policy Autopilot supports applications built in Python, Go, and TypeScript.

Table of Contents

Who is IAM Policy Autopilot for?

IAM Policy Autopilot is for builders on AWS using AI coding assistants, including developers, product managers, technical experimenters, and business leaders.

How is IAM Policy Autopilot helpful?

IAM Policy Autopilot is:

Fast

IAM Policy Autopilot accelerates development by generating baseline identity-based IAM policies. Your AI coding assistant can call IAM Policy Autopilot to analyze AWS SDK calls within your application. IAM Policy Autopilot then automatically creates the baseline IAM permissions for your application roles.

Reliable

IAM Policy Autopilot's deterministic code analysis helps create reliable and valid IAM policies that reduce policy troubleshooting. By using valid policies created with the MCP server, you reduce time spent on policy-related debugging and accelerate application deployment by avoiding permission-related delays.

Up-to-date

IAM Policy Autopilot stays up to date with the latest AWS services and features so that builders and coding assistants have access to the latest AWS IAM permissions knowledge. It helps keep your application role's permissions current with AWS's evolving capabilities.

Best Practices and Considerations

Review and refine policies generated by IAM Policy Autopilot

IAM Policy Autopilot generates policies to provide a starting point that you can refine as your application matures. Review the generated policies so that they align with your security requirements before deploying them.

Understand the IAM Policy Autopilot scope

IAM Policy Autopilot produces IAM identity-based policies, but doesn't support resource-based policies such as S3 bucket policies or KMS key policies, Resource Control Policies (RCPs), Service Control Policies (SCPs), and permission boundaries. These are the limitations that you need to keep in mind. For example, if your code calls s3.getObject(bucketName) where bucketName is determined at runtime, IAM Policy Autopilot currently doesn't predict which bucket will be accessed.

Understand the boundary between IAM Policy Autopilot and your coding assistant

IAM Policy Autopilot generates policies with specific actions based on deterministic analysis of your code. When you use the MCP server integration, your AI coding assistant receives this policy and might modify it when creating infrastructure-as-code templates. For example, you might see the assistant add specific resource Amazon Resource Names (ARNs) or include KMS key IDs based on additional context from your code. These changes come from your coding assistant's interpretation of your broader code context, not from the static analysis provided by IAM Policy Autopilot. Always review content generated by your coding assistant before deployment to verify that it meets your security requirements.

Getting Started

Installation

Option 1: Using uv (Recommended)

Install uv from Astral.

No additional installation needed - you can run IAM Policy Autopilot directly using uvx iam-policy-autopilot.

Option 2: Using pip

Install pip.

pip install iam-policy-autopilot

AWS Configuration

IAM Policy Autopilot requires AWS credentials to apply policy fixes and upload policies for AccessDenied debugging.

Install AWS CLI and configure your AWS credentials.

For more information on AWS credential configuration, see the AWS CLI Configuration Guide.

MCP Server Configuration

Configure the MCP server in your MCP client configuration to enable your AI coding assistant to generate IAM policies.

For Kiro

Get Kiro from https://kiro.dev/

If using uv/uvx:

Add the following configuration to your project-level .kiro/settings/mcp.json:

{
  "mcpServers": {
    "iam-policy-autopilot": {
      "command": "uvx",
      "args": ["iam-policy-autopilot", "mcp-server"],
      "env": {
        "AWS_PROFILE": "your-profile-name",
        "AWS_REGION": "us-east-1"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

If using pip:

{
  "mcpServers": {
    "iam-policy-autopilot": {
      "command": "iam-policy-autopilot",
      "args": ["mcp-server"],
      "env": {
        "AWS_PROFILE": "your-profile-name",
        "AWS_REGION": "us-east-1"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

For Kiro CLI

Get Kiro CLI from https://kiro.dev/cli

Kiro Cli uses the same configuration as Kiro mentioned above, additionally, MCPs for Kiro CLI can also be setup via:

If using uv/uvx:

kiro-cli mcp add \
  --name iam-policy-autopilot \
  --command "uvx" \
  --args "iam-policy-autopilot","mcp-server"

If using pip:

kiro-cli mcp add \
  --name iam-policy-autopilot \
  --command "iam-policy-autopilot" \
  --args "mcp-server"

For Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

Linux: ~/.config/Claude/claude_desktop_config.json

If using uv/uvx:

{
  "mcpServers": {
    "iam-policy-autopilot": {
      "command": "uvx",
      "args": ["iam-policy-autopilot", "mcp-server"],
      "env": {
        "AWS_PROFILE": "your-profile-name",
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

If using pip:

{
  "mcpServers": {
    "iam-policy-autopilot": {
      "command": "iam-policy-autopilot",
      "args": ["mcp-server"],
      "env": {
        "AWS_PROFILE": "your-profile-name",
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

CLI Usage

The iam-policy-autopilot CLI tool provides three main commands:

Generate IAM policies from source code and fix AccessDenied errors

Usage: iam-policy-autopilot <COMMAND>

Commands:
  fix-access-denied  Fix AccessDenied errors by analyzing and optionally applying IAM policy changes
  generate-policies    Generates complete IAM policy documents from source files
  mcp-server         Start MCP server
  help               Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help (see more with '--help')
  -V, --version  Print version

Commands

generate-policies - Generates complete IAM policy documents from source files

iam-policy-autopilot generate-policies <source_files> [OPTIONS]

Example:

iam-policy-autopilot generate-policies \
  ./src/app.py \
  --region us-east-1 \
  --account 123456789012 \
  --pretty

Options:

  • --region <REGION> - AWS region for resource ARNs
  • --account <ACCOUNT> - AWS account ID for resource ARNs
  • --upload-policies <PREFIX> - Upload generated policies to AWS IAM with the specified prefix
  • --pretty - Pretty-print JSON output

fix-access-denied - Fix AccessDenied errors by analyzing and optionally applying IAM policy changes

iam-policy-autopilot fix-access-denied <access-denied-error-message> [OPTIONS]

Example:

iam-policy-autopilot fix-access-denied \
  "User: arn:aws:iam::123456789012:user/test is not authorized to perform: s3:GetObject on resource: arn:aws:s3:::my-bucket/file.txt"

Options:

  • --yes - Auto-apply policy changes without confirmation

mcp-server - Start MCP server locally

iam-policy-autopilot mcp-server [OPTIONS]

Options:

  • --transport <TRANSPORT> - Transport type: stdio (default) or http

Example with HTTP transport:

# Start server at http://127.0.0.1:8001/mcp
iam-policy-autopilot mcp-server --transport http

Build Instructions

Prerequisites

  • Rust (latest stable version)
  • Git
  • CMake (Windows only)

Setup

Clone the repository with submodules:

git clone --recurse-submodules https://github.com/awslabs/iam-policy-autopilot.git
cd iam-policy-autopilot

Build the project:

cargo build --release

The compiled binary will be located at target/release/iam-policy-autopilot.

Using the Built Binary with MCP

If you build from source, you can configure MCP clients to use the compiled binary:

{
  "mcpServers": {
    "iam-policy-autopilot": {
      "command": "/path/to/iam-policy-autopilot",
      "args": ["mcp-server"]
    }
  }
}

Workspace Structure

This workspace contains several crates that work together:

  • iam-policy-autopilot-policy-generation/ - Core library providing SDK extraction and enrichment capabilities
  • iam-policy-autopilot-access-denied/ - Core library for parsing AccessDenied errors and synthesizing IAM policies
  • iam-policy-autopilot-tools/ - Policy upload utilities and AWS integration tools
  • iam-policy-autopilot-cli/ - Unified CLI tool providing all commands
  • iam-policy-autopilot-mcp-server/ - MCP server integration for IDE and tool integration

Development

Running Tests

# Run all tests
cargo test --workspace

# Run tests for specific crate
cargo test -p iam-policy-autopilot-cli
cargo test -p iam-policy-autopilot-access-denied
cargo test -p iam-policy-autopilot-policy-generation

# Run integration tests
cargo test -p iam-policy-autopilot-cli --test integration_tests

Building Release Version

cargo build --release

The compiled binary will be located at target/release/iam-policy-autopilot.

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

iam_policy_autopilot-0.1.1-py3-none-win_arm64.whl (13.6 MB view details)

Uploaded Python 3Windows ARM64

iam_policy_autopilot-0.1.1-py3-none-win_amd64.whl (14.1 MB view details)

Uploaded Python 3Windows x86-64

iam_policy_autopilot-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

iam_policy_autopilot-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

iam_policy_autopilot-0.1.1-py3-none-macosx_11_0_arm64.whl (14.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

iam_policy_autopilot-0.1.1-py3-none-macosx_10_12_x86_64.whl (14.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file iam_policy_autopilot-0.1.1-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for iam_policy_autopilot-0.1.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 3fb3a213a006d0ceec12095bea2c97e6a308ad79539dc75a40e9d419431e984c
MD5 98b6475013d3e8272a1af6a927fff828
BLAKE2b-256 11e3b52f0aad4ac41dae299663a9460c8ce881720f882ca470ad2b48c5d711a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for iam_policy_autopilot-0.1.1-py3-none-win_arm64.whl:

Publisher: build_and_publish.yml on awslabs/iam-policy-autopilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iam_policy_autopilot-0.1.1-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for iam_policy_autopilot-0.1.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 686e440227eebef3c0f40dc782b263adc868761c37b492620909bb76441368f9
MD5 d68a93576851f94e19e762d6be80cae1
BLAKE2b-256 57d879dfa2dddfc5d9883398ff12787ac69d6e3ecfa2804fc47457f0c848f6ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for iam_policy_autopilot-0.1.1-py3-none-win_amd64.whl:

Publisher: build_and_publish.yml on awslabs/iam-policy-autopilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iam_policy_autopilot-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for iam_policy_autopilot-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d4d5ed4e86c65a62170b5dc396434c1dd6688a35870142b8ae07c8d9edda160c
MD5 58293e45f38307b68217707fe80ab2e7
BLAKE2b-256 86395314df73f13508b14d1d2abf690b850e8177fb704d5ea4fb90ff0f77d561

See more details on using hashes here.

Provenance

The following attestation bundles were made for iam_policy_autopilot-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on awslabs/iam-policy-autopilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iam_policy_autopilot-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for iam_policy_autopilot-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 99358d9e276e1c8b04b6212ea79339b56cc1ece2de0b47d25e19e7d6fb6d6c21
MD5 3d225aa9105db0869a5ca918eda5d87f
BLAKE2b-256 49ce90c5e2ac1f9f1cd0ad9b5d0c8af4bebd4548de9d5d3070d2467ef0b2e685

See more details on using hashes here.

Provenance

The following attestation bundles were made for iam_policy_autopilot-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: build_and_publish.yml on awslabs/iam-policy-autopilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iam_policy_autopilot-0.1.1-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for iam_policy_autopilot-0.1.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb2436cc8f7fd84b94ff14356a7f3645bda19ec6ca0e45d0dd61722f6f088295
MD5 994d0ad431172c9cc147379ac783f40b
BLAKE2b-256 639418fbdf4dcd5970da98fec8a8c0f3c793d3413580571299ab67d033c184a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for iam_policy_autopilot-0.1.1-py3-none-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on awslabs/iam-policy-autopilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iam_policy_autopilot-0.1.1-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for iam_policy_autopilot-0.1.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d629b3d53cbf3ff92b6de689c6dd59af1f175cf284ffc66c61378eb94179acdf
MD5 bc500e930e5bce21c42aeca04271eeff
BLAKE2b-256 25f21a48c88614bef7e7f60d192926b85a6b606572d3480c0f5cf0ef4eeb0e3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for iam_policy_autopilot-0.1.1-py3-none-macosx_10_12_x86_64.whl:

Publisher: build_and_publish.yml on awslabs/iam-policy-autopilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page