739dc6d198
Dashboard PKCE login reused the code_verifier as the OAuth state (leaking it and disabling CSRF validation) and never checked state on callback -- the same class of bug already fixed for the CLI flow. Credential-pool refresh excluded "anthropic" from the cross-process lock Codex/xAI already get, so concurrent Hermes processes racing a single-use refresh token could leave the loser stuck exhausted with no recovery for hermes_pkce/dashboard sources. The dashboard OAuth save also never cleared a stale ANTHROPIC_API_KEY, which resolve_anthropic_token() prioritizes over the OAuth pool entry by design -- so a leftover key silently kept billing pay-per-token after a Claude Pro/Max login. A concurrency stress test written to validate the refresh-race fix under load surfaced a fifth, unrelated bug: _auth_store_lock()'s Windows lock-file "ensure content" write was unguarded and could raise an uncaught PermissionError under real contention -- affecting every single-use-token provider sharing that lock, not just Anthropic. Fixes #87887, #87888, #87889.