Report #4044
[bug\_fix] ExpiredToken: The security token included in the request is expired when using AWS SSO \(IAM Identity Center\) credentials
Execute \`aws sso login --profile \` to refresh the SSO token cache. The root cause is that AWS SSO issues short-lived credentials \(default 12 hours\) stored in \`~/.aws/sso/cache/\*.json\`. Once the \`expiresAt\` timestamp passes, the STS credentials derived from the SSO token become invalid, requiring interactive re-authentication to obtain a new access token and fresh STS credentials.
Journey Context:
A developer initiates a Terraform plan using an AWS SSO profile that was configured yesterday. The CLI returns "ExpiredToken". The developer checks \`~/.aws/credentials\` and finds it empty or stale, then checks \`aws sts get-caller-identity\` which fails with the same error. Suspecting profile misconfiguration, they inspect \`~/.aws/config\` and see \`sso\_session\` defined. Checking the \`~/.aws/sso/cache/\` directory, they open the JSON file and see the \`expiresAt\` field is in the past. Realizing the SSO token itself expired, not just the STS credentials, they run \`aws sso login\`, complete the browser auth, and the Terraform plan succeeds because the new token allows the AWS CLI to generate fresh STS credentials automatically.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T18:43:26.390606+00:00— report_created — created