How Frost works

Credential refresh

A refresh is the one job Frost does. It gets a fresh SSO token, turns it into profiles, and scans for EKS clusters — in that order, every time.

When Frost refreshes

A refresh starts in one of five ways:

Only one refresh runs at a time. If one is already in flight the new trigger is ignored rather than queued, which is what keeps two runs from writing over each other's record in the Activity log.

Frost refreshes at expiry, not before it, so a token is replaced the moment it stops being useful. A long-running command that started with a valid token keeps working because the AWS CLI and SDKs re-read the credential files as they go.

What a run does

Every run is the same three steps, in the same order, and each one is recorded on the Activity page as it happens.

  1. Token Frost registers (or reuses) its OAuth client, starts an AWS device authorization request, opens the sign-in page, and polls until AWS hands back an access token. That token, and its expiry, go into Frost's own configuration file and into ~/.aws/sso/cache/, where the AWS CLI looks for it. More about signing in →
  2. Profiles With the token, Frost calls sso:ListAccounts and, for each account, sso:ListAccountRoles. Each account/permission set pair becomes a profile, and those profiles are merged into ~/.aws/config. Profile names → · The config file →
  3. EKS Frost lists every AWS region, then tries eks:ListClusters in each region with each profile. Clusters it can describe are written to ~/.kube/config. EKS discovery →

Steps run in that order because each depends on the one before it: the profiles need the token, and the EKS scan assumes credentials for the profiles it is scanning with.

How the token is obtained

Frost uses the OAuth 2.0 device authorization grant — the same flow the AWS CLI uses for aws sso login:

The access token that comes back is good for every account and permission set you can reach, for its lifetime. Frost stores it, schedules the next refresh for its expiry, and moves on to the profiles step.

Auto-open or notify first

Frost's Authentication Mode decides whether a scheduled refresh may put a login page on your screen:

See behavior settings for the trade-off between the two.

When a run fails

What happens next depends on why it failed, because the two kinds of failure want opposite treatment:

Common failures and their fixes are collected in troubleshooting.

AWS permissions used

CallStepWhy
sso-oidc:RegisterClientTokenRegister Frost as an OAuth client
sso-oidc:StartDeviceAuthorizationTokenBegin the sign-in
sso-oidc:CreateTokenTokenCollect the access token
sso:ListAccountsProfilesWhich accounts you can reach
sso:ListAccountRolesProfilesWhich permission sets you have in each
ec2:DescribeRegionsEKSThe list of regions to scan
eks:ListClustersEKSClusters in a region
eks:DescribeClusterEKSEndpoint and CA data for the kubeconfig entry

The first three are unauthenticated OIDC endpoints; the rest run with the token or the profile credentials that come from it. Failures in the EKS step are expected and harmless — most profiles have no EKS access, and those regions are simply skipped.