49a5a44c8a
- Read Claude Code's OAuth token from ~/.claude/.credentials.json as a fallback source for auth_mode: oauth (with expiry checking) - Fix OAuth callback server to bind to localhost (not 127.0.0.1) and use JSON content type for token exchange - Null out apiKey when authToken is set to prevent SDK from falling back to ANTHROPIC_API_KEY env var (routes to wrong billing) - Add DeferredErrorClient so daemon starts even when credentials are missing, surfacing the error on first chat() call instead of crash - Prompt to complete OAuth flow immediately when setting auth_mode to oauth with no token stored Note: Anthropic currently rejects OAuth for API access (Feb 2026 policy change), but the plumbing is in place for if/when re-enabled. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>