Skip to content

Repository files navigation

switch-profile

An interactive CLI tool for switching between AWS profiles directly from your terminal. No more manually editing ~/.aws/credentials or juggling environment variables.

npx switch-profile

Why?

AWS SSO credentials expire every hour. Without switch-profile, refreshing them means either:

  1. Manual copy-paste - Browse to the SSO portal, log in, reveal credentials, paste them into your terminal or ~/.aws/credentials file. Repeat every hour.
  2. Per-command --profile flag - Use aws sso login --profile <name>, but then every command (and every tool like Terraform) needs --profile. Not always possible or practical.

switch-profile makes setting any AWS profile as default trivial - one command, pick from a list, done. It handles SSO session refresh automatically, including opening the browser for re-authentication when sessions expire.

Prerequisites

  • AWS CLI v2 - Version 2 or later is required.
  • Node.js - Any recent version that supports npx.

Important: Remove these environment variables from your shell if they are set, as they override the default profile and will conflict with switch-profile:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Installation

No installation needed. Run directly with npx:

npx switch-profile

Or install globally:

npm install -g switch-profile
switch-profile

Quick Start

Switch between existing profiles

npx switch-profile

This will:

  1. Show your current default profile with its expiry status.
  2. List all available profiles.
  3. Let you pick one to set as the new default.
  4. Display an export AWS_PROFILE=<name> command you can run to lock that profile to your current terminal session.

For SSO profiles, if the session has expired, it automatically opens your browser for re-authentication.

Create a new profile

npx switch-profile
# Select "More options" > "Create profile"

You can create:

  • Standard profiles - Access key + secret key pair.
  • SSO profiles - Launches the interactive aws configure sso flow.

Delete profiles

npx switch-profile
# Select "More options" > "Delete profiles"

Select one or more profiles to remove. The current default profile cannot be deleted (switch to another one first).

Refresh an expired profile

npx switch-profile
# Select "More options" > "Refresh default profile"

This option only appears when the current default profile has expired. It forces a new SSO login and refreshes the credentials.

How It Works

switch-profile manages two AWS configuration files:

FilePurpose
~/.aws/configStores profile settings (region, output format, SSO metadata)
~/.aws/credentialsStores access keys, secret keys, and session tokens

When you select a profile, switch-profile:

  1. Retrieves the credentials for that profile (from cache or via SSO login).
  2. Writes them into the [default] section of both files.
  3. Records the profile name and expiry date for status display.
  4. Shows an export AWS_PROFILE=<name> command to optionally lock the profile to your terminal session.

Per-terminal profile isolation

By default, switching profiles updates the global [default] section, which affects all terminals. If you need different AWS profiles in different terminals simultaneously, copy and run the command shown after each switch (export AWS_PROFILE=<name> on Linux/macOS, or the PowerShell/CMD equivalent on Windows). This sets an environment variable scoped to that terminal only, so other terminals remain unaffected.

For SSO profiles specifically, it leverages two additional AWS CLI cache directories:

  • ~/.aws/sso/cache/ - SSO session tokens (long-lived, ~24 hours)
  • ~/.aws/cli/cache/ - Temporary AWS credentials (short-lived, ~1 hour)

Detailed Documentation

For deeper technical details, see the docs below:

DocumentDescription
ArchitectureProject structure, source files, and how the components fit together
AWS Profile ManagementHow AWS profiles, SSO sessions, and credentials are managed internally
CLI InterfaceDetailed walkthrough of every menu, prompt, and user flow
Configuration FilesExact formats of all AWS and internal configuration files
Development GuideHow to set up, develop, test, lint, and release
GotchasCritical pitfalls — global profile switching, per-terminal isolation limits, and LLM agent constraints

Troubleshooting

invalid_grant: Invalid grant provided

This error occurs during SSO profile creation when the wrong SSO region is specified. AWS SSO is region-specific - you must use the region where your SSO instance is configured, not the region you want to deploy resources to.

Fix: Delete the profile and recreate it with the correct SSO region.

Error: Fail to get credentials for profile ... Error loading SSO Token...

This typically happens after the ~/.aws/sso/cache folder has been deleted or corrupted. This folder tracks SSO sessions and cannot be reconstructed automatically.

Fix: Delete the affected SSO profiles and recreate them:

  1. Run npx switch-profile
  2. Select More options > Delete profiles
  3. Remove the broken SSO profiles
  4. Recreate them via More options > Create profile

AWS CLI not found

switch-profile requires AWS CLI v2. Install it for your platform:

macOS:

brew install awscli
brew link --overwrite awscli

Linux:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Windows: Download and run the AWS CLI MSI installer.

License

BSD 3-Clause

About

NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp).

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - nicolasdao/switch-profile: NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp). · GitHub
Skip to content

Repository files navigation

switch-profile

An interactive CLI tool for switching between AWS profiles directly from your terminal. No more manually editing ~/.aws/credentials or juggling environment variables.

npx switch-profile

Why?

AWS SSO credentials expire every hour. Without switch-profile, refreshing them means either:

  1. Manual copy-paste - Browse to the SSO portal, log in, reveal credentials, paste them into your terminal or ~/.aws/credentials file. Repeat every hour.
  2. Per-command --profile flag - Use aws sso login --profile <name>, but then every command (and every tool like Terraform) needs --profile. Not always possible or practical.

switch-profile makes setting any AWS profile as default trivial - one command, pick from a list, done. It handles SSO session refresh automatically, including opening the browser for re-authentication when sessions expire.

Prerequisites

  • AWS CLI v2 - Version 2 or later is required.
  • Node.js - Any recent version that supports npx.

Important: Remove these environment variables from your shell if they are set, as they override the default profile and will conflict with switch-profile:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Installation

No installation needed. Run directly with npx:

npx switch-profile

Or install globally:

npm install -g switch-profile
switch-profile

Quick Start

Switch between existing profiles

npx switch-profile

This will:

  1. Show your current default profile with its expiry status.
  2. List all available profiles.
  3. Let you pick one to set as the new default.
  4. Display an export AWS_PROFILE=<name> command you can run to lock that profile to your current terminal session.

For SSO profiles, if the session has expired, it automatically opens your browser for re-authentication.

Create a new profile

npx switch-profile
# Select "More options" > "Create profile"

You can create:

  • Standard profiles - Access key + secret key pair.
  • SSO profiles - Launches the interactive aws configure sso flow.

Delete profiles

npx switch-profile
# Select "More options" > "Delete profiles"

Select one or more profiles to remove. The current default profile cannot be deleted (switch to another one first).

Refresh an expired profile

npx switch-profile
# Select "More options" > "Refresh default profile"

This option only appears when the current default profile has expired. It forces a new SSO login and refreshes the credentials.

How It Works

switch-profile manages two AWS configuration files:

FilePurpose
~/.aws/configStores profile settings (region, output format, SSO metadata)
~/.aws/credentialsStores access keys, secret keys, and session tokens

When you select a profile, switch-profile:

  1. Retrieves the credentials for that profile (from cache or via SSO login).
  2. Writes them into the [default] section of both files.
  3. Records the profile name and expiry date for status display.
  4. Shows an export AWS_PROFILE=<name> command to optionally lock the profile to your terminal session.

Per-terminal profile isolation

By default, switching profiles updates the global [default] section, which affects all terminals. If you need different AWS profiles in different terminals simultaneously, copy and run the command shown after each switch (export AWS_PROFILE=<name> on Linux/macOS, or the PowerShell/CMD equivalent on Windows). This sets an environment variable scoped to that terminal only, so other terminals remain unaffected.

For SSO profiles specifically, it leverages two additional AWS CLI cache directories:

  • ~/.aws/sso/cache/ - SSO session tokens (long-lived, ~24 hours)
  • ~/.aws/cli/cache/ - Temporary AWS credentials (short-lived, ~1 hour)

Detailed Documentation

For deeper technical details, see the docs below:

DocumentDescription
ArchitectureProject structure, source files, and how the components fit together
AWS Profile ManagementHow AWS profiles, SSO sessions, and credentials are managed internally
CLI InterfaceDetailed walkthrough of every menu, prompt, and user flow
Configuration FilesExact formats of all AWS and internal configuration files
Development GuideHow to set up, develop, test, lint, and release
GotchasCritical pitfalls — global profile switching, per-terminal isolation limits, and LLM agent constraints

Troubleshooting

invalid_grant: Invalid grant provided

This error occurs during SSO profile creation when the wrong SSO region is specified. AWS SSO is region-specific - you must use the region where your SSO instance is configured, not the region you want to deploy resources to.

Fix: Delete the profile and recreate it with the correct SSO region.

Error: Fail to get credentials for profile ... Error loading SSO Token...

This typically happens after the ~/.aws/sso/cache folder has been deleted or corrupted. This folder tracks SSO sessions and cannot be reconstructed automatically.

Fix: Delete the affected SSO profiles and recreate them:

  1. Run npx switch-profile
  2. Select More options > Delete profiles
  3. Remove the broken SSO profiles
  4. Recreate them via More options > Create profile

AWS CLI not found

switch-profile requires AWS CLI v2. Install it for your platform:

macOS:

brew install awscli
brew link --overwrite awscli

Linux:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Windows: Download and run the AWS CLI MSI installer.

License

BSD 3-Clause

About

NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp).

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nicolasdao/switch-profile: NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp). · GitHub
Skip to content

Repository files navigation

switch-profile

An interactive CLI tool for switching between AWS profiles directly from your terminal. No more manually editing ~/.aws/credentials or juggling environment variables.

npx switch-profile

Why?

AWS SSO credentials expire every hour. Without switch-profile, refreshing them means either:

  1. Manual copy-paste - Browse to the SSO portal, log in, reveal credentials, paste them into your terminal or ~/.aws/credentials file. Repeat every hour.
  2. Per-command --profile flag - Use aws sso login --profile <name>, but then every command (and every tool like Terraform) needs --profile. Not always possible or practical.

switch-profile makes setting any AWS profile as default trivial - one command, pick from a list, done. It handles SSO session refresh automatically, including opening the browser for re-authentication when sessions expire.

Prerequisites

  • AWS CLI v2 - Version 2 or later is required.
  • Node.js - Any recent version that supports npx.

Important: Remove these environment variables from your shell if they are set, as they override the default profile and will conflict with switch-profile:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Installation

No installation needed. Run directly with npx:

npx switch-profile

Or install globally:

npm install -g switch-profile
switch-profile

Quick Start

Switch between existing profiles

npx switch-profile

This will:

  1. Show your current default profile with its expiry status.
  2. List all available profiles.
  3. Let you pick one to set as the new default.
  4. Display an export AWS_PROFILE=<name> command you can run to lock that profile to your current terminal session.

For SSO profiles, if the session has expired, it automatically opens your browser for re-authentication.

Create a new profile

npx switch-profile
# Select "More options" > "Create profile"

You can create:

  • Standard profiles - Access key + secret key pair.
  • SSO profiles - Launches the interactive aws configure sso flow.

Delete profiles

npx switch-profile
# Select "More options" > "Delete profiles"

Select one or more profiles to remove. The current default profile cannot be deleted (switch to another one first).

Refresh an expired profile

npx switch-profile
# Select "More options" > "Refresh default profile"

This option only appears when the current default profile has expired. It forces a new SSO login and refreshes the credentials.

How It Works

switch-profile manages two AWS configuration files:

FilePurpose
~/.aws/configStores profile settings (region, output format, SSO metadata)
~/.aws/credentialsStores access keys, secret keys, and session tokens

When you select a profile, switch-profile:

  1. Retrieves the credentials for that profile (from cache or via SSO login).
  2. Writes them into the [default] section of both files.
  3. Records the profile name and expiry date for status display.
  4. Shows an export AWS_PROFILE=<name> command to optionally lock the profile to your terminal session.

Per-terminal profile isolation

By default, switching profiles updates the global [default] section, which affects all terminals. If you need different AWS profiles in different terminals simultaneously, copy and run the command shown after each switch (export AWS_PROFILE=<name> on Linux/macOS, or the PowerShell/CMD equivalent on Windows). This sets an environment variable scoped to that terminal only, so other terminals remain unaffected.

For SSO profiles specifically, it leverages two additional AWS CLI cache directories:

  • ~/.aws/sso/cache/ - SSO session tokens (long-lived, ~24 hours)
  • ~/.aws/cli/cache/ - Temporary AWS credentials (short-lived, ~1 hour)

Detailed Documentation

For deeper technical details, see the docs below:

DocumentDescription
ArchitectureProject structure, source files, and how the components fit together
AWS Profile ManagementHow AWS profiles, SSO sessions, and credentials are managed internally
CLI InterfaceDetailed walkthrough of every menu, prompt, and user flow
Configuration FilesExact formats of all AWS and internal configuration files
Development GuideHow to set up, develop, test, lint, and release
GotchasCritical pitfalls — global profile switching, per-terminal isolation limits, and LLM agent constraints

Troubleshooting

invalid_grant: Invalid grant provided

This error occurs during SSO profile creation when the wrong SSO region is specified. AWS SSO is region-specific - you must use the region where your SSO instance is configured, not the region you want to deploy resources to.

Fix: Delete the profile and recreate it with the correct SSO region.

Error: Fail to get credentials for profile ... Error loading SSO Token...

This typically happens after the ~/.aws/sso/cache folder has been deleted or corrupted. This folder tracks SSO sessions and cannot be reconstructed automatically.

Fix: Delete the affected SSO profiles and recreate them:

  1. Run npx switch-profile
  2. Select More options > Delete profiles
  3. Remove the broken SSO profiles
  4. Recreate them via More options > Create profile

AWS CLI not found

switch-profile requires AWS CLI v2. Install it for your platform:

macOS:

brew install awscli
brew link --overwrite awscli

Linux:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Windows: Download and run the AWS CLI MSI installer.

License

BSD 3-Clause

About

NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp).

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nicolasdao/switch-profile: NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp). · GitHub
Skip to content

Repository files navigation

switch-profile

An interactive CLI tool for switching between AWS profiles directly from your terminal. No more manually editing ~/.aws/credentials or juggling environment variables.

npx switch-profile

Why?

AWS SSO credentials expire every hour. Without switch-profile, refreshing them means either:

  1. Manual copy-paste - Browse to the SSO portal, log in, reveal credentials, paste them into your terminal or ~/.aws/credentials file. Repeat every hour.
  2. Per-command --profile flag - Use aws sso login --profile <name>, but then every command (and every tool like Terraform) needs --profile. Not always possible or practical.

switch-profile makes setting any AWS profile as default trivial - one command, pick from a list, done. It handles SSO session refresh automatically, including opening the browser for re-authentication when sessions expire.

Prerequisites

  • AWS CLI v2 - Version 2 or later is required.
  • Node.js - Any recent version that supports npx.

Important: Remove these environment variables from your shell if they are set, as they override the default profile and will conflict with switch-profile:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Installation

No installation needed. Run directly with npx:

npx switch-profile

Or install globally:

npm install -g switch-profile
switch-profile

Quick Start

Switch between existing profiles

npx switch-profile

This will:

  1. Show your current default profile with its expiry status.
  2. List all available profiles.
  3. Let you pick one to set as the new default.
  4. Display an export AWS_PROFILE=<name> command you can run to lock that profile to your current terminal session.

For SSO profiles, if the session has expired, it automatically opens your browser for re-authentication.

Create a new profile

npx switch-profile
# Select "More options" > "Create profile"

You can create:

  • Standard profiles - Access key + secret key pair.
  • SSO profiles - Launches the interactive aws configure sso flow.

Delete profiles

npx switch-profile
# Select "More options" > "Delete profiles"

Select one or more profiles to remove. The current default profile cannot be deleted (switch to another one first).

Refresh an expired profile

npx switch-profile
# Select "More options" > "Refresh default profile"

This option only appears when the current default profile has expired. It forces a new SSO login and refreshes the credentials.

How It Works

switch-profile manages two AWS configuration files:

FilePurpose
~/.aws/configStores profile settings (region, output format, SSO metadata)
~/.aws/credentialsStores access keys, secret keys, and session tokens

When you select a profile, switch-profile:

  1. Retrieves the credentials for that profile (from cache or via SSO login).
  2. Writes them into the [default] section of both files.
  3. Records the profile name and expiry date for status display.
  4. Shows an export AWS_PROFILE=<name> command to optionally lock the profile to your terminal session.

Per-terminal profile isolation

By default, switching profiles updates the global [default] section, which affects all terminals. If you need different AWS profiles in different terminals simultaneously, copy and run the command shown after each switch (export AWS_PROFILE=<name> on Linux/macOS, or the PowerShell/CMD equivalent on Windows). This sets an environment variable scoped to that terminal only, so other terminals remain unaffected.

For SSO profiles specifically, it leverages two additional AWS CLI cache directories:

  • ~/.aws/sso/cache/ - SSO session tokens (long-lived, ~24 hours)
  • ~/.aws/cli/cache/ - Temporary AWS credentials (short-lived, ~1 hour)

Detailed Documentation

For deeper technical details, see the docs below:

DocumentDescription
ArchitectureProject structure, source files, and how the components fit together
AWS Profile ManagementHow AWS profiles, SSO sessions, and credentials are managed internally
CLI InterfaceDetailed walkthrough of every menu, prompt, and user flow
Configuration FilesExact formats of all AWS and internal configuration files
Development GuideHow to set up, develop, test, lint, and release
GotchasCritical pitfalls — global profile switching, per-terminal isolation limits, and LLM agent constraints

Troubleshooting

invalid_grant: Invalid grant provided

This error occurs during SSO profile creation when the wrong SSO region is specified. AWS SSO is region-specific - you must use the region where your SSO instance is configured, not the region you want to deploy resources to.

Fix: Delete the profile and recreate it with the correct SSO region.

Error: Fail to get credentials for profile ... Error loading SSO Token...

This typically happens after the ~/.aws/sso/cache folder has been deleted or corrupted. This folder tracks SSO sessions and cannot be reconstructed automatically.

Fix: Delete the affected SSO profiles and recreate them:

  1. Run npx switch-profile
  2. Select More options > Delete profiles
  3. Remove the broken SSO profiles
  4. Recreate them via More options > Create profile

AWS CLI not found

switch-profile requires AWS CLI v2. Install it for your platform:

macOS:

brew install awscli
brew link --overwrite awscli

Linux:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Windows: Download and run the AWS CLI MSI installer.

License

BSD 3-Clause

About

NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp).

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - nicolasdao/switch-profile: NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp). · GitHub
Skip to content

Repository files navigation

switch-profile

An interactive CLI tool for switching between AWS profiles directly from your terminal. No more manually editing ~/.aws/credentials or juggling environment variables.

npx switch-profile

Why?

AWS SSO credentials expire every hour. Without switch-profile, refreshing them means either:

  1. Manual copy-paste - Browse to the SSO portal, log in, reveal credentials, paste them into your terminal or ~/.aws/credentials file. Repeat every hour.
  2. Per-command --profile flag - Use aws sso login --profile <name>, but then every command (and every tool like Terraform) needs --profile. Not always possible or practical.

switch-profile makes setting any AWS profile as default trivial - one command, pick from a list, done. It handles SSO session refresh automatically, including opening the browser for re-authentication when sessions expire.

Prerequisites

  • AWS CLI v2 - Version 2 or later is required.
  • Node.js - Any recent version that supports npx.

Important: Remove these environment variables from your shell if they are set, as they override the default profile and will conflict with switch-profile:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Installation

No installation needed. Run directly with npx:

npx switch-profile

Or install globally:

npm install -g switch-profile
switch-profile

Quick Start

Switch between existing profiles

npx switch-profile

This will:

  1. Show your current default profile with its expiry status.
  2. List all available profiles.
  3. Let you pick one to set as the new default.
  4. Display an export AWS_PROFILE=<name> command you can run to lock that profile to your current terminal session.

For SSO profiles, if the session has expired, it automatically opens your browser for re-authentication.

Create a new profile

npx switch-profile
# Select "More options" > "Create profile"

You can create:

  • Standard profiles - Access key + secret key pair.
  • SSO profiles - Launches the interactive aws configure sso flow.

Delete profiles

npx switch-profile
# Select "More options" > "Delete profiles"

Select one or more profiles to remove. The current default profile cannot be deleted (switch to another one first).

Refresh an expired profile

npx switch-profile
# Select "More options" > "Refresh default profile"

This option only appears when the current default profile has expired. It forces a new SSO login and refreshes the credentials.

How It Works

switch-profile manages two AWS configuration files:

FilePurpose
~/.aws/configStores profile settings (region, output format, SSO metadata)
~/.aws/credentialsStores access keys, secret keys, and session tokens

When you select a profile, switch-profile:

  1. Retrieves the credentials for that profile (from cache or via SSO login).
  2. Writes them into the [default] section of both files.
  3. Records the profile name and expiry date for status display.
  4. Shows an export AWS_PROFILE=<name> command to optionally lock the profile to your terminal session.

Per-terminal profile isolation

By default, switching profiles updates the global [default] section, which affects all terminals. If you need different AWS profiles in different terminals simultaneously, copy and run the command shown after each switch (export AWS_PROFILE=<name> on Linux/macOS, or the PowerShell/CMD equivalent on Windows). This sets an environment variable scoped to that terminal only, so other terminals remain unaffected.

For SSO profiles specifically, it leverages two additional AWS CLI cache directories:

  • ~/.aws/sso/cache/ - SSO session tokens (long-lived, ~24 hours)
  • ~/.aws/cli/cache/ - Temporary AWS credentials (short-lived, ~1 hour)

Detailed Documentation

For deeper technical details, see the docs below:

DocumentDescription
ArchitectureProject structure, source files, and how the components fit together
AWS Profile ManagementHow AWS profiles, SSO sessions, and credentials are managed internally
CLI InterfaceDetailed walkthrough of every menu, prompt, and user flow
Configuration FilesExact formats of all AWS and internal configuration files
Development GuideHow to set up, develop, test, lint, and release
GotchasCritical pitfalls — global profile switching, per-terminal isolation limits, and LLM agent constraints

Troubleshooting

invalid_grant: Invalid grant provided

This error occurs during SSO profile creation when the wrong SSO region is specified. AWS SSO is region-specific - you must use the region where your SSO instance is configured, not the region you want to deploy resources to.

Fix: Delete the profile and recreate it with the correct SSO region.

Error: Fail to get credentials for profile ... Error loading SSO Token...

This typically happens after the ~/.aws/sso/cache folder has been deleted or corrupted. This folder tracks SSO sessions and cannot be reconstructed automatically.

Fix: Delete the affected SSO profiles and recreate them:

  1. Run npx switch-profile
  2. Select More options > Delete profiles
  3. Remove the broken SSO profiles
  4. Recreate them via More options > Create profile

AWS CLI not found

switch-profile requires AWS CLI v2. Install it for your platform:

macOS:

brew install awscli
brew link --overwrite awscli

Linux:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Windows: Download and run the AWS CLI MSI installer.

License

BSD 3-Clause

About

NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp).

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nicolasdao/switch-profile: NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp). · GitHub
Skip to content

Repository files navigation

switch-profile

An interactive CLI tool for switching between AWS profiles directly from your terminal. No more manually editing ~/.aws/credentials or juggling environment variables.

npx switch-profile

Why?

AWS SSO credentials expire every hour. Without switch-profile, refreshing them means either:

  1. Manual copy-paste - Browse to the SSO portal, log in, reveal credentials, paste them into your terminal or ~/.aws/credentials file. Repeat every hour.
  2. Per-command --profile flag - Use aws sso login --profile <name>, but then every command (and every tool like Terraform) needs --profile. Not always possible or practical.

switch-profile makes setting any AWS profile as default trivial - one command, pick from a list, done. It handles SSO session refresh automatically, including opening the browser for re-authentication when sessions expire.

Prerequisites

  • AWS CLI v2 - Version 2 or later is required.
  • Node.js - Any recent version that supports npx.

Important: Remove these environment variables from your shell if they are set, as they override the default profile and will conflict with switch-profile:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Installation

No installation needed. Run directly with npx:

npx switch-profile

Or install globally:

npm install -g switch-profile
switch-profile

Quick Start

Switch between existing profiles

npx switch-profile

This will:

  1. Show your current default profile with its expiry status.
  2. List all available profiles.
  3. Let you pick one to set as the new default.
  4. Display an export AWS_PROFILE=<name> command you can run to lock that profile to your current terminal session.

For SSO profiles, if the session has expired, it automatically opens your browser for re-authentication.

Create a new profile

npx switch-profile
# Select "More options" > "Create profile"

You can create:

  • Standard profiles - Access key + secret key pair.
  • SSO profiles - Launches the interactive aws configure sso flow.

Delete profiles

npx switch-profile
# Select "More options" > "Delete profiles"

Select one or more profiles to remove. The current default profile cannot be deleted (switch to another one first).

Refresh an expired profile

npx switch-profile
# Select "More options" > "Refresh default profile"

This option only appears when the current default profile has expired. It forces a new SSO login and refreshes the credentials.

How It Works

switch-profile manages two AWS configuration files:

FilePurpose
~/.aws/configStores profile settings (region, output format, SSO metadata)
~/.aws/credentialsStores access keys, secret keys, and session tokens

When you select a profile, switch-profile:

  1. Retrieves the credentials for that profile (from cache or via SSO login).
  2. Writes them into the [default] section of both files.
  3. Records the profile name and expiry date for status display.
  4. Shows an export AWS_PROFILE=<name> command to optionally lock the profile to your terminal session.

Per-terminal profile isolation

By default, switching profiles updates the global [default] section, which affects all terminals. If you need different AWS profiles in different terminals simultaneously, copy and run the command shown after each switch (export AWS_PROFILE=<name> on Linux/macOS, or the PowerShell/CMD equivalent on Windows). This sets an environment variable scoped to that terminal only, so other terminals remain unaffected.

For SSO profiles specifically, it leverages two additional AWS CLI cache directories:

  • ~/.aws/sso/cache/ - SSO session tokens (long-lived, ~24 hours)
  • ~/.aws/cli/cache/ - Temporary AWS credentials (short-lived, ~1 hour)

Detailed Documentation

For deeper technical details, see the docs below:

DocumentDescription
ArchitectureProject structure, source files, and how the components fit together
AWS Profile ManagementHow AWS profiles, SSO sessions, and credentials are managed internally
CLI InterfaceDetailed walkthrough of every menu, prompt, and user flow
Configuration FilesExact formats of all AWS and internal configuration files
Development GuideHow to set up, develop, test, lint, and release
GotchasCritical pitfalls — global profile switching, per-terminal isolation limits, and LLM agent constraints

Troubleshooting

invalid_grant: Invalid grant provided

This error occurs during SSO profile creation when the wrong SSO region is specified. AWS SSO is region-specific - you must use the region where your SSO instance is configured, not the region you want to deploy resources to.

Fix: Delete the profile and recreate it with the correct SSO region.

Error: Fail to get credentials for profile ... Error loading SSO Token...

This typically happens after the ~/.aws/sso/cache folder has been deleted or corrupted. This folder tracks SSO sessions and cannot be reconstructed automatically.

Fix: Delete the affected SSO profiles and recreate them:

  1. Run npx switch-profile
  2. Select More options > Delete profiles
  3. Remove the broken SSO profiles
  4. Recreate them via More options > Create profile

AWS CLI not found

switch-profile requires AWS CLI v2. Install it for your platform:

macOS:

brew install awscli
brew link --overwrite awscli

Linux:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Windows: Download and run the AWS CLI MSI installer.

License

BSD 3-Clause

About

NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp).

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - nicolasdao/switch-profile: NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp). · GitHub
Skip to content

Repository files navigation

switch-profile

An interactive CLI tool for switching between AWS profiles directly from your terminal. No more manually editing ~/.aws/credentials or juggling environment variables.

npx switch-profile

Why?

AWS SSO credentials expire every hour. Without switch-profile, refreshing them means either:

  1. Manual copy-paste - Browse to the SSO portal, log in, reveal credentials, paste them into your terminal or ~/.aws/credentials file. Repeat every hour.
  2. Per-command --profile flag - Use aws sso login --profile <name>, but then every command (and every tool like Terraform) needs --profile. Not always possible or practical.

switch-profile makes setting any AWS profile as default trivial - one command, pick from a list, done. It handles SSO session refresh automatically, including opening the browser for re-authentication when sessions expire.

Prerequisites

  • AWS CLI v2 - Version 2 or later is required.
  • Node.js - Any recent version that supports npx.

Important: Remove these environment variables from your shell if they are set, as they override the default profile and will conflict with switch-profile:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Installation

No installation needed. Run directly with npx:

npx switch-profile

Or install globally:

npm install -g switch-profile
switch-profile

Quick Start

Switch between existing profiles

npx switch-profile

This will:

  1. Show your current default profile with its expiry status.
  2. List all available profiles.
  3. Let you pick one to set as the new default.
  4. Display an export AWS_PROFILE=<name> command you can run to lock that profile to your current terminal session.

For SSO profiles, if the session has expired, it automatically opens your browser for re-authentication.

Create a new profile

npx switch-profile
# Select "More options" > "Create profile"

You can create:

  • Standard profiles - Access key + secret key pair.
  • SSO profiles - Launches the interactive aws configure sso flow.

Delete profiles

npx switch-profile
# Select "More options" > "Delete profiles"

Select one or more profiles to remove. The current default profile cannot be deleted (switch to another one first).

Refresh an expired profile

npx switch-profile
# Select "More options" > "Refresh default profile"

This option only appears when the current default profile has expired. It forces a new SSO login and refreshes the credentials.

How It Works

switch-profile manages two AWS configuration files:

FilePurpose
~/.aws/configStores profile settings (region, output format, SSO metadata)
~/.aws/credentialsStores access keys, secret keys, and session tokens

When you select a profile, switch-profile:

  1. Retrieves the credentials for that profile (from cache or via SSO login).
  2. Writes them into the [default] section of both files.
  3. Records the profile name and expiry date for status display.
  4. Shows an export AWS_PROFILE=<name> command to optionally lock the profile to your terminal session.

Per-terminal profile isolation

By default, switching profiles updates the global [default] section, which affects all terminals. If you need different AWS profiles in different terminals simultaneously, copy and run the command shown after each switch (export AWS_PROFILE=<name> on Linux/macOS, or the PowerShell/CMD equivalent on Windows). This sets an environment variable scoped to that terminal only, so other terminals remain unaffected.

For SSO profiles specifically, it leverages two additional AWS CLI cache directories:

  • ~/.aws/sso/cache/ - SSO session tokens (long-lived, ~24 hours)
  • ~/.aws/cli/cache/ - Temporary AWS credentials (short-lived, ~1 hour)

Detailed Documentation

For deeper technical details, see the docs below:

DocumentDescription
ArchitectureProject structure, source files, and how the components fit together
AWS Profile ManagementHow AWS profiles, SSO sessions, and credentials are managed internally
CLI InterfaceDetailed walkthrough of every menu, prompt, and user flow
Configuration FilesExact formats of all AWS and internal configuration files
Development GuideHow to set up, develop, test, lint, and release
GotchasCritical pitfalls — global profile switching, per-terminal isolation limits, and LLM agent constraints

Troubleshooting

invalid_grant: Invalid grant provided

This error occurs during SSO profile creation when the wrong SSO region is specified. AWS SSO is region-specific - you must use the region where your SSO instance is configured, not the region you want to deploy resources to.

Fix: Delete the profile and recreate it with the correct SSO region.

Error: Fail to get credentials for profile ... Error loading SSO Token...

This typically happens after the ~/.aws/sso/cache folder has been deleted or corrupted. This folder tracks SSO sessions and cannot be reconstructed automatically.

Fix: Delete the affected SSO profiles and recreate them:

  1. Run npx switch-profile
  2. Select More options > Delete profiles
  3. Remove the broken SSO profiles
  4. Recreate them via More options > Create profile

AWS CLI not found

switch-profile requires AWS CLI v2. Install it for your platform:

macOS:

brew install awscli
brew link --overwrite awscli

Linux:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Windows: Download and run the AWS CLI MSI installer.

License

BSD 3-Clause

About

NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp).

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - nicolasdao/switch-profile: NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp). · GitHub
Skip to content

Repository files navigation

switch-profile

An interactive CLI tool for switching between AWS profiles directly from your terminal. No more manually editing ~/.aws/credentials or juggling environment variables.

npx switch-profile

Why?

AWS SSO credentials expire every hour. Without switch-profile, refreshing them means either:

  1. Manual copy-paste - Browse to the SSO portal, log in, reveal credentials, paste them into your terminal or ~/.aws/credentials file. Repeat every hour.
  2. Per-command --profile flag - Use aws sso login --profile <name>, but then every command (and every tool like Terraform) needs --profile. Not always possible or practical.

switch-profile makes setting any AWS profile as default trivial - one command, pick from a list, done. It handles SSO session refresh automatically, including opening the browser for re-authentication when sessions expire.

Prerequisites

  • AWS CLI v2 - Version 2 or later is required.
  • Node.js - Any recent version that supports npx.

Important: Remove these environment variables from your shell if they are set, as they override the default profile and will conflict with switch-profile:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Installation

No installation needed. Run directly with npx:

npx switch-profile

Or install globally:

npm install -g switch-profile
switch-profile

Quick Start

Switch between existing profiles

npx switch-profile

This will:

  1. Show your current default profile with its expiry status.
  2. List all available profiles.
  3. Let you pick one to set as the new default.
  4. Display an export AWS_PROFILE=<name> command you can run to lock that profile to your current terminal session.

For SSO profiles, if the session has expired, it automatically opens your browser for re-authentication.

Create a new profile

npx switch-profile
# Select "More options" > "Create profile"

You can create:

  • Standard profiles - Access key + secret key pair.
  • SSO profiles - Launches the interactive aws configure sso flow.

Delete profiles

npx switch-profile
# Select "More options" > "Delete profiles"

Select one or more profiles to remove. The current default profile cannot be deleted (switch to another one first).

Refresh an expired profile

npx switch-profile
# Select "More options" > "Refresh default profile"

This option only appears when the current default profile has expired. It forces a new SSO login and refreshes the credentials.

How It Works

switch-profile manages two AWS configuration files:

FilePurpose
~/.aws/configStores profile settings (region, output format, SSO metadata)
~/.aws/credentialsStores access keys, secret keys, and session tokens

When you select a profile, switch-profile:

  1. Retrieves the credentials for that profile (from cache or via SSO login).
  2. Writes them into the [default] section of both files.
  3. Records the profile name and expiry date for status display.
  4. Shows an export AWS_PROFILE=<name> command to optionally lock the profile to your terminal session.

Per-terminal profile isolation

By default, switching profiles updates the global [default] section, which affects all terminals. If you need different AWS profiles in different terminals simultaneously, copy and run the command shown after each switch (export AWS_PROFILE=<name> on Linux/macOS, or the PowerShell/CMD equivalent on Windows). This sets an environment variable scoped to that terminal only, so other terminals remain unaffected.

For SSO profiles specifically, it leverages two additional AWS CLI cache directories:

  • ~/.aws/sso/cache/ - SSO session tokens (long-lived, ~24 hours)
  • ~/.aws/cli/cache/ - Temporary AWS credentials (short-lived, ~1 hour)

Detailed Documentation

For deeper technical details, see the docs below:

DocumentDescription
ArchitectureProject structure, source files, and how the components fit together
AWS Profile ManagementHow AWS profiles, SSO sessions, and credentials are managed internally
CLI InterfaceDetailed walkthrough of every menu, prompt, and user flow
Configuration FilesExact formats of all AWS and internal configuration files
Development GuideHow to set up, develop, test, lint, and release
GotchasCritical pitfalls — global profile switching, per-terminal isolation limits, and LLM agent constraints

Troubleshooting

invalid_grant: Invalid grant provided

This error occurs during SSO profile creation when the wrong SSO region is specified. AWS SSO is region-specific - you must use the region where your SSO instance is configured, not the region you want to deploy resources to.

Fix: Delete the profile and recreate it with the correct SSO region.

Error: Fail to get credentials for profile ... Error loading SSO Token...

This typically happens after the ~/.aws/sso/cache folder has been deleted or corrupted. This folder tracks SSO sessions and cannot be reconstructed automatically.

Fix: Delete the affected SSO profiles and recreate them:

  1. Run npx switch-profile
  2. Select More options > Delete profiles
  3. Remove the broken SSO profiles
  4. Recreate them via More options > Create profile

AWS CLI not found

switch-profile requires AWS CLI v2. Install it for your platform:

macOS:

brew install awscli
brew link --overwrite awscli

Linux:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Windows: Download and run the AWS CLI MSI installer.

License

BSD 3-Clause

About

NPX script that exposes terminal shortcut to easily switch between cloud configuration (aws, gcp).

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages