CLI authentication
Before interacting with the Sanity CLI, you need to login.
The Sanity CLI authenticates against your account through a browser-based OAuth flow, and stores the resulting session token in a single configuration file on your machine. This page covers the auth surface end-to-end: signing in, managing tokens, signing out, switching accounts, where the token is stored, and signing in through an SSO provider.
Sign in with sanity login
Run npx sanity login to open a browser window where you can choose an identity provider, sign in, and return to the CLI with an active session. After a successful login the CLI writes the session token to your local configuration file.
# Open the browser-based login flow
npx sanity login
# Sign in with a specific identity provider directly
npx sanity login --provider google
# Sign in with SSO using your organization slug
npx sanity login --sso my-org
# Print the login URL without opening a browser (useful on headless machines)
npx sanity login --no-open
# Authenticate non-interactively by piping a token to stdin
echo "$SANITY_AUTH_TOKEN" | npx sanity login --with-token# Open the browser-based login flow
pnpm dlx sanity login
# Sign in with a specific identity provider directly
pnpm dlx sanity login --provider google
# Sign in with SSO using your organization slug
pnpm dlx sanity login --sso my-org
# Print the login URL without opening a browser (useful on headless machines)
pnpm dlx sanity login --no-open
# Authenticate non-interactively by piping a token to stdin
echo "$SANITY_AUTH_TOKEN" | npx sanity login --with-token# Open the browser-based login flow
yarn dlx sanity login
# Sign in with a specific identity provider directly
yarn dlx sanity login --provider google
# Sign in with SSO using your organization slug
yarn dlx sanity login --sso my-org
# Print the login URL without opening a browser (useful on headless machines)
yarn dlx sanity login --no-open
# Authenticate non-interactively by piping a token to stdin
echo "$SANITY_AUTH_TOKEN" | npx sanity login --with-token# Open the browser-based login flow
bunx sanity login
# Sign in with a specific identity provider directly
bunx sanity login --provider google
# Sign in with SSO using your organization slug
bunx sanity login --sso my-org
# Print the login URL without opening a browser (useful on headless machines)
bunx sanity login --no-open
# Authenticate non-interactively by piping a token to stdin
echo "$SANITY_AUTH_TOKEN" | npx sanity login --with-tokenUseful flags: --sso <org-slug> for organizations that sign in through an identity provider, --sso-provider <name> to target a specific provider, --provider <name> to skip the picker for a known account, --with-token to read a token from stdin, and --no-open to print the login URL instead of launching a browser. See the login reference for a full list of options.
Sign out with sanity logout
Run npx sanity logout to invalidate the active session on the server and clear the local token. If the server reports the session was already invalid, the CLI still clears the local token and exits successfully.
Cannot delete session for robot user error
If npx sanity logout returns Cannot delete session for robot user - use delete token endpoint, your CLI is configured with a robot token (a long-lived API token) rather than a user session. Robot tokens do not have a server-side logout, so they have to be revoked through the tokens API instead:
# List robot tokens to find the ID you want to revoke
npx sanity tokens list
# Revoke the robot token by ID
npx sanity tokens delete <token-id># List robot tokens to find the ID you want to revoke
pnpm dlx sanity tokens list
# Revoke the robot token by ID
pnpm dlx sanity tokens delete <token-id># List robot tokens to find the ID you want to revoke
yarn dlx sanity tokens list
# Revoke the robot token by ID
yarn dlx sanity tokens delete <token-id># List robot tokens to find the ID you want to revoke
bunx sanity tokens list
# Revoke the robot token by ID
bunx sanity tokens delete <token-id>Manage robot tokens with sanity tokens
Use the npx sanity tokens command to manage robot tokens (long-lived API credentials) from the CLI. The command has three subcommands:
npx sanity tokens list: list robot tokens in your project, with their IDs and labels.npx sanity tokens add: create a new robot token with a label and a role.npx sanity tokens delete <id>: revoke a robot token by ID.
For the full flag reference and command output, see Tokens CLI command reference.
Switch to a different account
To sign in as a different user, run npx sanity login again. The CLI invalidates your previous session, clears the local token, and writes the new session token in one step. You do not need to run npx sanity logout first.
Where the CLI stores your token
The Sanity CLI stores your session token in a single JSON file at ~/.config/sanity/config.json. This path is the same on macOS, Linux, and Windows. The CLI does not use OS-specific configuration directories.
The file is a JSON object. After signing in, it contains your authToken alongside the CLI's telemetry-consent record. Other transient fields (for example, telemetryDisclosed) may also be present:
{
"authToken": "sk...",
"telemetryConsent": "..."
}To use a different config location (for testing, dev environments, or staging), set the SANITY_CLI_CONFIG_PATH environment variable to your chosen path. The CLI also reads ~/.config/sanity-staging/ when configured to use the staging environment.
Sign in through SSO
If your organization signs in through an identity provider, pass --sso <org-slug> to route the login flow to your IdP. The org slug is the short identifier used in your organization's Sanity URL.
# Sign in through your organization's SSO
npx sanity login --sso my-org
# Target a specific SSO provider configured for the organization
npx sanity login --sso my-org --sso-provider okta# Sign in through your organization's SSO
pnpm dlx sanity login --sso my-org
# Target a specific SSO provider configured for the organization
pnpm dlx sanity login --sso my-org --sso-provider okta# Sign in through your organization's SSO
yarn dlx sanity login --sso my-org
# Target a specific SSO provider configured for the organization
yarn dlx sanity login --sso my-org --sso-provider okta# Sign in through your organization's SSO
bunx sanity login --sso my-org
# Target a specific SSO provider configured for the organization
bunx sanity login --sso my-org --sso-provider oktaWas this page helpful?
Feedback submitted, thanks for helping us improve the docs. Have you tried these alternatives?