Reference · Troubleshooting

Troubleshooting common errors.

Every error Axiom surfaces has a specific cause and a specific fix. This page collects the issues we see most often, grouped by where they happen.

Faster path

Every error message in the product is a clickable link back to its troubleshooting entry on this page. If you arrived from an error, scroll to the section matching your scenario.

AWS connection

AccessDenied (sts:AssumeRole)

Cause

Trust policy points at the wrong Axiom AWS account, or the role doesn't exist.

Fix

Re-copy the trust policy from /operator/onboarding exactly. Confirm the role appears in IAM → Roles.

InvalidExternalId

Cause

The External ID in your trust policy condition doesn't match what Axiom sends.

Fix

Re-paste the External ID from the onboarding screen. It must match character-for-character. If you rotated, re-onboard to get a fresh ID.

Cannot assume role: TokenSignatureInvalid

Cause

Clock skew on the role's account, or a permissions boundary blocks sts:AssumeRole.

Fix

Check the role has no Permissions Boundary that excludes sts:AssumeRole. Confirm AWS account-level clock is in sync.

MalformedPolicyDocumentException

Cause

JSON syntax error in the trust or permission policy.

Fix

Use AWS Console's built-in JSON validator. Common issues: trailing commas, missing quotes, copy-paste line breaks.

Scanning

Scan returns 0 resources

Cause

Role has no permission to describe resources in the selected regions, or the regions truly have no resources.

Fix

Run aws sts get-caller-identity --profile axiom-role in CloudShell to confirm assumption works. Try a region with known resources.

Partial scan — some services missing

Cause

Specific service Describe permission missing, or service not available in the region.

Fix

Confirm the permission policy includes all Describe* actions for the service. Check service availability for the region in AWS docs.

Scan stuck at 'queued'

Cause

Background worker is offline or queue is saturated.

Fix

Wait 60 seconds and refresh. If still queued, disconnect/reconnect the cloud account to retrigger.

Scan takes > 5 minutes

Cause

Large account (thousands of resources) — normal. Or rate limiting from AWS.

Fix

Initial scans on accounts with 1000+ resources can take 10-15 minutes. Subsequent scans are incremental and complete in 1-3 minutes.

Execution + approvals

Plan blocked: blast radius too broad

Cause

Plan affects more resources than the configured blast-radius threshold.

Fix

Split the plan into smaller phases. Or raise the blast-radius threshold in governance settings (requires approval).

Plan blocked: rollback path unverified

Cause

Axiom can't construct a pre-verified rollback for at least one item.

Fix

Review the plan items — usually a missing AWS backup, snapshot, or version. Enable the missing capability and re-plan.

Approval expired

Cause

Plan items expire after 24 hours if not approved.

Fix

Re-run the scan to generate a fresh plan with current state. Approve within the window.

Apply failed mid-execution

Cause

Network, AWS API throttling, or pre-flight condition changed between approval and apply.

Fix

Rollback fires automatically. Check audit log for the exact failure. Re-plan and re-approve.

ReleaseOps

GitHub connector won't authorize

Cause

Org-level OAuth restriction or missing scopes.

Fix

Confirm the GitHub App installation has 'Read access to actions, contents, deployments, metadata, pull requests'. Org admin may need to approve.

Pipelines not appearing

Cause

Connector connected but webhook delivery failing.

Fix

Check GitHub App → Advanced → Recent Deliveries for failure reason. Re-deliver from there to retry.

Readiness score shows N/A

Cause

Not enough deployment history (< 5 deploys) to compute the trend.

Fix

Wait for additional deploys. Or import historical data from your CI/CD system.

Dashboard + UI

Activity feed empty

Cause

No real activity yet — feed falls back to sample events for orientation.

Fix

Run your first scan. After the first scan, the feed automatically switches to live data and shows a 'Live data' badge in the footer.

Charts show '—' or zero

Cause

Insufficient scan history to render trends.

Fix

At least 2-3 scans are needed to render trend lines. After a week of recurring scans, all charts populate fully.

Still stuck?

If your issue isn't here, the cause is non-obvious, or you suspect a bug:

  • Open the relevant scan in the dashboard and inspect the audit log — every action is logged with the exact failure reason
  • Check the FAQ for known edge cases
  • Reach out via /contact — include the run ID, scan ID, or error code shown in the dashboard

Need a human?

Most flows are documented — but we'll help if anything is unclear.

Talk to Vision XIX Labs