From 9858530ff607b93d516d03c2f31fbb32565caea3 Mon Sep 17 00:00:00 2001 From: Alexander Date: Fri, 10 Apr 2026 14:14:42 +0200 Subject: [PATCH] fix(auth): handle credential file creation in persistCredential --- internal/auth/refresh.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/internal/auth/refresh.go b/internal/auth/refresh.go index bd8e0f1..9ce869d 100644 --- a/internal/auth/refresh.go +++ b/internal/auth/refresh.go @@ -10,6 +10,7 @@ import ( "net" "net/http" "os" + "path/filepath" "sync" "time" @@ -105,13 +106,21 @@ func persistCredential(cred *Credential) error { return nil } + var doc map[string]any raw, err := os.ReadFile(filePath) if err != nil { - return err - } - var doc map[string]any - if err := json.Unmarshal(raw, &doc); err != nil { - return err + if !os.IsNotExist(err) { + return err + } + // File doesn't exist yet (cold start) — create from scratch + if mkdirErr := os.MkdirAll(filepath.Dir(filePath), 0700); mkdirErr != nil { + return fmt.Errorf("create credential dir: %w", mkdirErr) + } + doc = make(map[string]any) + } else { + if err := json.Unmarshal(raw, &doc); err != nil { + return err + } } oauth, _ := doc["claudeAiOauth"].(map[string]any) if oauth == nil {