2ee6449fe5
Anthropic migrated the OAuth token endpoint from console.anthropic.com/v1/oauth/token (now returns HTTP 404) to platform.claude.com/v1/oauth/token. The token *refresh* path already iterated both hosts, but the two initial code-exchange call sites were hardcoded to the dead console host, so every new Claude OAuth login failed with 'Token exchange failed: HTTP Error 404: Not Found' and saved no credentials. Fix the whole bug class: - Add _OAUTH_TOKEN_URLS [platform.claude.com, console.anthropic.com] in agent/anthropic_adapter.py; _OAUTH_TOKEN_URL now points at the live host for backward-compat with existing imports. - run_hermes_oauth_login_pure() (CLI flow) iterates the list, first success wins, mirroring the refresh path. - hermes_cli/web_server.py (desktop dashboard flow) imports the list and iterates it too, so the GUI login path is fixed identically. Probe: console.anthropic.com/v1/oauth/token -> HTTP 404 (gone), platform.claude.com/v1/oauth/token -> HTTP 400 (alive). Verified a real Claude MAX OAuth login now succeeds end-to-end.