Methodology: exactly what we read from your account
The complete list of API calls we make, by access path. Not one of them writes, changes or deletes anything.
Why we publish this
Granting access to a company's AWS account is a security decision, and a security decision needs verifiable detail rather than a promise. This page lists every call we make. Neither list below is written by hand: both are read from the same code that performs the calls — the role's CloudFormation template and the open-source CLI's action list — so they cannot drift from what the product actually does.
Path 1: assumed role
You deploy a read-only role via CloudFormation and we assume it with an ExternalId unique to your account. These are the permissions that role grants, grouped as they appear in the template. Every action is List, Read or Describe, enumerated one by one — there is no wildcard anywhere.
CostExplorerRead
Cost Explorer — commitment coverage / spend (rule COMMIT-C001).
ce:GetCostAndUsagece:GetReservationUtilizationce:GetReservationCoveragece:GetSavingsPlansUtilizationce:GetSavingsPlansCoverage
EC2Read
EC2 inventory — idle instances, orphan volumes, snapshots, EIPs, NAT. DescribeRegions lets us scan every enabled region, not just one.
ec2:DescribeRegionsec2:DescribeInstancesec2:DescribeVolumesec2:DescribeAddressesec2:DescribeSnapshotsec2:DescribeNatGatewaysec2:DescribeRouteTables
RDSRead
RDS inventory — idle databases, snapshots, reservations.
rds:DescribeDBInstancesrds:DescribeDBSnapshotsrds:DescribeReservedDBInstances
S3Read
S3 — bucket list + lifecycle config only (never object contents).
s3:ListAllMyBucketss3:ListBuckets3:GetLifecycleConfigurations3:ListBucketMultipartUploadss3:ListMultipartUploadParts
CloudWatchRead
CloudWatch — utilization metrics for "idle resource" rules.
cloudwatch:GetMetricDatacloudwatch:GetMetricStatistics
LambdaRead
Lambda — function inventory.
lambda:ListFunctions
CloudFrontRead
CloudFront — cross-check before recommending an S3 bucket removal (never suggest deleting a bucket that serves a live distribution).
cloudfront:ListDistributions
ELBRead
Load balancers — detect idle ALB/NLB with no healthy targets.
elasticloadbalancing:DescribeLoadBalancerselasticloadbalancing:DescribeTargetGroupselasticloadbalancing:DescribeTargetHealth
LogsRead
CloudWatch Logs — log groups with no retention accumulate forever.
logs:DescribeLogGroups
DynamoDBRead
DynamoDB — provisioned tables sitting idle versus their capacity.
dynamodb:ListTablesdynamodb:DescribeTable
Route53Read
Route 53 — hosted zones billing a flat fee while hosting nothing.
route53:ListHostedZones
SelfPolicySimulation
Self-diagnosis of a missing permission, scoped to this role only.
iam:SimulatePrincipalPolicy
Path 2: open-source CLI
If you would rather not create a role at all, the CLI runs on your machine with credentials you already hold, collects a snapshot, and uploads only the snapshot. The source is open and auditable, and these are the only calls it makes.
ce:GetCostAndUsageec2:DescribeRegionsec2:DescribeInstancesec2:DescribeVolumesec2:DescribeSnapshotsec2:DescribeAddressesec2:DescribeNatGatewaysec2:DescribeRouteTablesrds:DescribeDBInstancesrds:DescribeDBSnapshotss3:ListAllMyBucketss3:GetBucketLocations3:GetLifecycleConfigurations3:ListBucketMultipartUploadss3:ListMultipartUploadPartscloudfront:ListDistributionscloudwatch:GetMetricStatisticselasticloadbalancing:DescribeLoadBalancerselasticloadbalancing:DescribeTargetGroupselasticloadbalancing:DescribeTargetHealthlogs:DescribeLogGroupsdynamodb:ListTablesdynamodb:DescribeTableredshift:DescribeClustersroute53:ListHostedZonessts:GetCallerIdentity
Why the two lists are not identical
They are different access paths with different capabilities, and the difference is deliberate. The assumed role can query reservation and savings plan data through Cost Explorer, which feeds the commitment coverage analysis; the local CLI does not request those permissions. The CLI, in turn, needs to identify itself and resolve bucket regions, which the role obtains by other means. Listing them separately is more honest than presenting a union that matches neither case.
What we never do
- No write, modify or delete action — on either path.
- We do not read the contents of your objects, databases or logs: configuration metadata and usage metrics only.
- We do not run the fix commands for you. The report shows the command; running it is your call.