How Frost works

The ~/.aws/config file

Frost doesn't own your ~/.aws/config — it owns the profiles it wrote there. Everything else in the file survives every refresh, byte for byte.

The ownership marker

Every profile Frost writes carries a comment line directly under its header:

[profile main-admin]
# frost:managed - Frost updates and removes this profile. Delete this line to take it over.
sso_start_url  = https://acme.awsapps.com/start
sso_region     = us-east-1
sso_account_id = 111111111111
sso_role_name  = AdministratorAccess
region         = us-east-1
output         = json

That marker is the whole ownership model. On every refresh Frost rewrites the sections carrying it, removes the ones whose account or permission set has gone away in Identity Center, and leaves every other line in the file exactly as it found it.

Want to take a profile over? Delete the marker line. Frost stops updating and stops removing it — and also stops keeping it in step with Identity Center, so a renamed permission set is then yours to fix.

What is preserved

The file is merged, never rewritten wholesale. It is shared with the AWS CLI and with whatever you have put there by hand, so everything below survives untouched:

When a merge produces exactly what is already on disk, Frost skips the write altogether.

How the file is written

This file is shared, so the write is careful about more than its contents:

~/.kube/config is written the same way. EKS discovery →

Profiles you wrote yourself

If one of your own profiles happens to have the same name as one Frost would generate, yours wins. Frost leaves it alone, skips writing its own, and logs a warning. Nothing you wrote is ever overwritten by a generated profile.

The practical consequence: that account/permission set pair no longer tracks Identity Center. If that is not what you wanted, rename your profile (or give the AWS account a #short-name that steers the generated name elsewhere — see profile names).

Upgrading from older versions

Older versions of Frost rewrote ~/.aws/config wholesale and wrote no marker. On the first refresh after upgrading, an unmarked profile whose name and full contents are exactly what Frost would generate today is adopted: the marker is added and the profile continues to be managed. Without that, the upgrade would add a second copy of every profile.

Adoption compares the complete key set, so a profile that has drifted — an extra key, a different region — is not adopted. It is treated as yours, per the previous section.

When profiles disappear

Losing access to an account, or having a permission set revoked, removes the corresponding marked profiles at the next refresh. That is the point of the marker: your config file tracks your actual access rather than accumulating profiles that no longer work.

To keep such a profile around anyway, delete its marker line before the next refresh.

Using the profiles elsewhere

Alongside the profiles, Frost writes the SSO access token into ~/.aws/sso/cache/ in the format the AWS CLI and the AWS SDKs expect. That is what makes this work with no further setup:

$ aws --profile prod-admin sts get-caller-identity
$ AWS_PROFILE=prod-admin terraform apply
$ aws --profile test-poweruser s3 ls

No aws sso login, and no AWS CLI installation required for Frost itself — it talks to AWS through its own SDK. See files & locations for exactly what is written where.

A note for Windows

On Windows the file is %UserProfile%\.aws\config. An AWS CLI command reading it, or an antivirus scanner looking at it, can block the replacement for a moment; the write retries before giving up, and a refresh that still fails says so on the Credentials page.