Report #8670
[bug\_fix] The security token included in the request is expired, or Unable to locate credentials \(AWS SSO\)
Run \`aws sso login --profile \` to refresh the SSO token. For long-running applications, implement credential provider chains that handle \`ExpiredToken\` exceptions and trigger a refresh, or switch to IAM Roles with longer session durations \(up to 12 hours\) instead of relying on SSO tokens for non-interactive workloads.
Journey Context:
Developer sets up AWS CLI with SSO login using \`aws configure sso\` and successfully runs a Terraform apply. They leave their terminal open overnight. The next morning, they run \`kubectl get pods\` \(using aws-iam-authenticator\) and get "Unable to locate credentials". They check \`aws sts get-caller-identity\` and get "The security token included in the request is expired". They check \`~/.aws/sso/cache/\` and see the JSON token file with an \`expiresAt\` timestamp from yesterday. They realize that AWS SSO tokens \(the OIDC bearer tokens\) expire after 8-12 hours \(configurable in IAM Identity Center\), and unlike traditional IAM Access Keys, the SDK does not auto-refresh SSO tokens because they require interactive browser login \(unless using the device code flow with refresh tokens\). They run \`aws sso login\` again, authenticate in the browser, and the new token allows the credentials to work again.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T06:11:19.002553+00:00— report_created — created