Skip to main content

Overview

Annie can execute read-only cloud CLI commands against your live infrastructure during investigations and chat sessions. This complements the knowledge graph — while the graph maps relationships and topology, CLI commands verify live state in real time.

Enable CLI Access

CLI access is enabled per credential from your cloud integration settings. For each AWS role, AWS IAM user, or GCP service account you’ve connected, you can choose whether Annie is allowed to run CLI commands with those credentials.
1

Go to your cloud integration settings

Navigate to Integrations and select the cloud credential you want to configure (AWS or GCP).
2

Enable the toggle

On the credential edit page, toggle “Allow read-only CLI access” to on. This grants Annie permission to run whitelisted CLI commands using this specific credential.
3

Save

Save the credential. Annie will now use it for CLI operations during investigations and chat sessions.
You can enable CLI access on some credentials and not others. For example, enable it on your production AWS role for incident investigation, but leave it off on staging credentials.

When Does Annie Use CLI Commands?

Annie decides to use cloud CLI commands when she needs information that goes beyond what the knowledge graph snapshot provides. Here are common scenarios:
During an RCA, Annie found an EC2 instance i-0abc123 in the knowledge graph but needs to check if it’s still running and healthy.She runs aws ec2 describe-instance-status to verify the current state matches what the graph shows — catching cases where the graph snapshot is stale or a resource was recently modified.
A user asks “How many Lambda functions do we have in production?”Annie runs aws lambda list-functions to get an accurate real-time count rather than relying on the last graph snapshot. For simple counts and listings, CLI is often more direct than a graph query.
During an incident, Annie sees connection timeout errors in application logs. She uses dig and curl to verify DNS resolution and endpoint reachability — something monitoring dashboards can’t directly check.This is especially useful when logs reference external dependencies or network issues that need verification beyond what observability tools show.
Annie is investigating a security group change flagged by the knowledge graph. She runs aws ec2 describe-security-groups to compare the current rules against what the graph recorded, confirming whether a recent change caused the issue.
An alert reports 5xx errors from an ALB. Annie checks aws elbv2 describe-target-health to identify which targets are unhealthy and correlates with ECS task status via aws ecs describe-tasks.By combining live health data with the knowledge graph’s dependency map, Annie can trace the issue from the load balancer down to the root cause.

How Credentials Work

Annie uses the cloud credentials you’ve already configured in Anyshift — only those with “Allow read-only CLI access” enabled.
1

Connect your cloud account

Connect your cloud account to Anyshift via the existing integrations — AWS (IAM Assume Role or IAM User) or GCP (Service Account).
2

Enable CLI access

On the credential’s edit page, toggle “Allow read-only CLI access” to on. Only credentials with this toggle enabled are available for CLI operations.
3

Annie selects the right credentials

When Annie needs to run a CLI command, it selects the appropriate credential set for the target account. If you have multiple CLI-enabled accounts (e.g., prod-aws, staging-gcp), Annie picks the one relevant to the investigation.
4

Credentials are injected securely

Credentials are injected server-side into the command execution environment. They are never exposed to the AI model, never logged, and never included in responses.
Cloud ProviderCredential TypeWhat’s Used
AWSIAM Assume Role / IAM UserTemporary STS credentials (access key, secret key, session token)
GCPService AccountShort-lived access token + project ID
AzureAzure CLI authComing soon
The same credentials you configured for infrastructure graph ingestion are used for CLI operations. Just enable the “Allow read-only CLI access” toggle on each credential you want Annie to use.

The Whitelist — Security by Design

Every CLI command Annie can execute is explicitly allowlisted. This is a strict security model — if a command is not on the allowlist, it is rejected.

How It Works

  • Strict allowlisting: Only commands that have been explicitly reviewed and approved can run. Unknown commands are blocked by default.
  • Read-only operations only: The allowlist only includes describe, list, and get commands. No create, update, delete, or terminate operations are permitted.
  • Pagination limits: Commands that return large datasets enforce pagination via --max-items to prevent runaway queries and excessive costs.
  • Restricted utility flags: Tools like curl and dig have a strict subset of allowed flags — for example, curl can only access HTTPS URLs and cannot send custom headers.

What Gets Validated

Every command goes through multiple validation checks before execution:
ValidationWhat It ChecksExample
BinaryThe tool must have a registered validatorrm, chmod, wget → rejected
CommandThe specific subcommand must be allowlistedaws ec2 terminate-instances → rejected
FlagsEvery flag must be explicitly permittedcurl -H "Authorization: ..." → rejected
URLsMust be HTTPS, no internal/metadata endpointscurl http://169.254.169.254/ → rejected
PaginationLarge-output commands must include limitsaws ec2 describe-instances without --max-items → enforced
Annie cannot modify your infrastructure through CLI commands. All access is strictly read-only. If a command isn’t on the allowlist, it’s rejected with a clear error and Annie falls back to the knowledge graph.

Supported Operations

AWS CLI

ServiceCommands
EC2describe-instances, describe-instance-status, describe-images, describe-volumes, describe-snapshots
ECSlist-clusters, describe-clusters, list-services, describe-services, list-tasks, describe-tasks, describe-task-definition
EKSlist-clusters, describe-cluster, list-nodegroups, describe-nodegroup, list-addons, describe-addon-versions
Lambdalist-functions, get-function, get-policy, list-event-source-mappings, get-function-concurrency, get-function-url-config, get-function-code-signing-config, list-provisioned-concurrency-configs
ServiceCommands
EC2 (VPC)describe-vpcs, describe-subnets, describe-security-groups, describe-route-tables, describe-nat-gateways, describe-internet-gateways, describe-network-interfaces
ELBv2describe-load-balancers, describe-listeners, describe-target-groups, describe-target-health
CloudFrontlist-distributions, get-distribution
API Gatewayget-integration, get-stage
ServiceCommands
S3ls
S3 APIlist-buckets, get-bucket-encryption, get-bucket-lifecycle-configuration, get-bucket-policy, get-bucket-replication, get-bucket-versioning, get-public-access-block
RDSdescribe-db-instances, describe-db-clusters, describe-db-log-files
DynamoDBdescribe-table, describe-continuous-backups, describe-time-to-live
ElastiCachedescribe-cache-clusters, describe-replication-groups
ServiceCommands
IAMlist-roles, list-users, list-policies, list-attached-role-policies, get-role, get-policy, get-account-summary
STSget-caller-identity, get-access-key-info
ServiceCommands
CloudWatchdescribe-alarms, describe-alarm-history, get-metric-statistics
CloudWatch Logsdescribe-log-groups, describe-log-streams, filter-log-events
EventBridgelist-rules, describe-rule, list-targets-by-rule

Google Cloud CLI (gcloud)

ServiceCommands
Compute Instanceslist, describe, get-serial-port-output
Compute Diskslist, describe
Instance Groupslist, managed describe
GKE Clusterslist, describe
GKE Node Poolslist
Cloud Run Serviceslist, describe
Cloud Run Revisionslist
ServiceCommands
Networkslist, peerings list, subnets list
Firewall Ruleslist
Forwarding Ruleslist
Routeslist
Addresseslist
Backend Serviceslist, get-health
ServiceCommands
Cloud SQLinstances list, instances describe, databases list, backups list, operations list
Spannerinstances list, instances describe, databases list, operations list
Memorystore (Redis)instances list, instances describe
ServiceCommands
Cloud Storagebuckets list, buckets describe
Pub/Subtopics list, subscriptions list, subscriptions describe
Dataprocclusters list, clusters describe, jobs list
ServiceCommands
Projectslist, describe, get-iam-policy
IAM Service Accountslist, describe, keys list
ServiceCommands
Monitoringdashboards list, policies list
Loggingread

Azure CLI

Azure CLI support is coming soon. The allowlist is currently being built.

Utility Tools

In addition to cloud CLIs, Annie has access to a set of utility tools for diagnostics and data processing:
ToolPurposeExample Use Case
curlHTTP endpoint checks (HTTPS only, no custom headers)Check if an API endpoint is reachable and responding
digDNS lookups and diagnosticsVerify DNS resolution for a service endpoint during connectivity issues
jqJSON processing and filteringParse and filter complex CLI output
yqYAML processingParse Kubernetes manifests or configuration files
base64Encode/decode dataDecode base64-encoded configuration values
dateDate/time operationsConvert timestamps between formats during log analysis
opensslCertificate inspectionCheck TLS certificate expiry and chain validity

Get Started