on main help sign in
fix(provider): do not retry auth errors

If auth failed... its unlikely it'll work next time Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

commit5633f242b26e043db12004959d867406c3b71e8d authorCarlos Alexandro Becker <caarlos0@users.noreply.github.com> dateWed 24 Sep 2025, 14:25 (1 year ago) parentb22fd08
4 files changed+4−22
internal/llm/provider/anthropic.go+1−6 internal/llm/provider/gemini.go+1−9 internal/llm/provider/openai.go+1−6 internal/llm/provider/provider.go+1−1
internal/llm/provider/anthropic.go+1−6
@@ -493,12 +493,7 @@ func (a *anthropicClient) shouldRetry(attempts int, err error) (bool, int64, err
493493 }
494494
495495 if apiErr.StatusCode == 401 {
496− a.providerOptions.apiKey, err = config.Get().Resolve(a.providerOptions.config.APIKey)
497− if err != nil {
498− return false, 0, fmt.Errorf("failed to resolve API key: %w", err)
499− }
500− a.client = createAnthropicClient(a.providerOptions, a.tp)
501− return true, 0, nil
496+ return false, 0, err
502497 }
503498
504499 // Handle context limit exceeded error (400 Bad Request)
internal/llm/provider/gemini.go+1−9
@@ -436,15 +436,7 @@ func (g *geminiClient) shouldRetry(attempts int, err error) (bool, int64, error)
436436
437437 // Check for token expiration (401 Unauthorized)
438438 if contains(errMsg, "unauthorized", "invalid api key", "api key expired") {
439− g.providerOptions.apiKey, err = config.Get().Resolve(g.providerOptions.config.APIKey)
440− if err != nil {
441− return false, 0, fmt.Errorf("failed to resolve API key: %w", err)
442− }
443− g.client, err = createGeminiClient(g.providerOptions)
444− if err != nil {
445− return false, 0, fmt.Errorf("failed to create Gemini client after API key refresh: %w", err)
446− }
447− return true, 0, nil
439+ return false, 0, err
448440 }
449441
450442 // Check for common rate limit error messages
internal/llm/provider/openai.go+1−6
@@ -514,12 +514,7 @@ func (o *openaiClient) shouldRetry(attempts int, err error) (bool, int64, error)
514514 if errors.As(err, &apiErr) {
515515 // Check for token expiration (401 Unauthorized)
516516 if apiErr.StatusCode == 401 {
517− o.providerOptions.apiKey, err = config.Get().Resolve(o.providerOptions.config.APIKey)
518− if err != nil {
519− return false, 0, fmt.Errorf("failed to resolve API key: %w", err)
520− }
521− o.client = createOpenAIClient(o.providerOptions)
522− return true, 0, nil
517+ return false, 0, err
523518 }
524519
525520 if apiErr.StatusCode != 429 && apiErr.StatusCode != 500 {
internal/llm/provider/provider.go+1−1
@@ -13,7 +13,7 @@ import (
1313
1414type EventType string
1515
16−const maxRetries = 8
16+const maxRetries = 3
1717
1818const (
1919 EventContentStart EventType = "content_start"