The PKCE flow uses the local daemon onDocumentation Index
Fetch the complete documentation index at: https://authsome.agentr.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
127.0.0.1:7998 to receive the OAuth callback at /auth/callback/oauth. Most login failures fall into one of the categories below.
redirect_uri_mismatch
redirect_uri_mismatch
The provider’s authorization page returns:Authsome listens on a single redirect URI:Fix it at the provider:
Open your OAuth app settings
For GitHub: github.com/settings/developers. For other providers, find the equivalent OAuth app management page.
Edit the callback URL
Set Authorization callback URL (or the equivalent field) to
http://127.0.0.1:7998/auth/callback/oauth. The full path matters, it must be /auth/callback/oauth.Port 7998 already in use
Port 7998 already in use
authsome daemon if one is already running; you only see this error when something else holds 7998. Find and stop it:authsome daemon won’t release the port, pkill -f authsome then re-run any CLI command. See Daemon issues.Browser does not open
Browser does not open
The terminal prints the authorization URL but no browser launches.
You can also copy the URL printed in the terminal and open it manually on any device. As long as the redirect lands on
| Cause | Fix |
|---|---|
| You’re SSHed into a remote machine | Use --flow device_code instead. See Headless setup. |
webbrowser Python module can’t find a default browser | Set BROWSER env var: export BROWSER=$(which firefox). |
Headless Linux without DISPLAY | Same as SSH, use the device code flow. |
http://127.0.0.1:7998/auth/callback/oauth on the same machine where authsome is waiting, the flow completes.Browser opens but never returns to authsome
Browser opens but never returns to authsome
The browser shows the provider’s authorization page, you click Authorize, and nothing. The terminal is still waiting.
| Cause | Fix |
|---|---|
The browser landed on http://127.0.0.1:7998/auth/callback/oauth but authsome timed out | Re-run uvx authsome login --force. |
A corporate proxy is intercepting 127.0.0.1 traffic | Add 127.0.0.1 and localhost to your NO_PROXY env var. |
| You authorized in a different browser profile that can’t reach localhost | Use the same browser profile as your authsome shell. |
state mismatch error
state mismatch error
state parameter and rejects callbacks that don’t echo it back. Causes:- A stale tab from a previous login is hitting the callback. Close it and retry.
- A man-in-the-middle is replaying old callback URLs. Investigate before retrying.
client_id or client_secret rejected
client_id or client_secret rejected
The provider’s token endpoint returns The stored client credentials don’t match what the provider expects.If you’ve recently rotated the OAuth app’s client secret, this is the expected flow.
invalid_client.Scopes not granted
Scopes not granted
The login completes but the agent gets If the granted scopes don’t include what your agent needs:The provider re-prompts for consent on the additional scopes.
403 Insufficient scope on real API calls.What’s next
Token refresh
What to do when a refresh fails.
Headless device code
The right flow when you can’t run a browser locally.