From 339a81b650fa92568376a666a42543360eadd58c Mon Sep 17 00:00:00 2001 From: GrothKeiran <129822789+GrothKeiran@users.noreply.github.com> Date: Fri, 13 Mar 2026 12:54:43 +0000 Subject: [PATCH 1/2] fix: persist copilot token metadata --- internal/api/handlers/management/auth_files.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/api/handlers/management/auth_files.go b/internal/api/handlers/management/auth_files.go index 6dacb743..882ab581 100644 --- a/internal/api/handlers/management/auth_files.go +++ b/internal/api/handlers/management/auth_files.go @@ -2445,9 +2445,12 @@ func (h *Handler) RequestGitHubToken(c *gin.Context) { FileName: fileName, Storage: tokenStorage, Metadata: map[string]any{ - "email": userInfo.Email, - "username": username, - "name": userInfo.Name, + "email": userInfo.Email, + "username": username, + "name": userInfo.Name, + "access_token": tokenData.AccessToken, + "token_type": tokenData.TokenType, + "scope": tokenData.Scope, }, } From 3960c93d51e63c409cc9d1411a8804db2bbc4ab1 Mon Sep 17 00:00:00 2001 From: GrothKeiran <129822789+GrothKeiran@users.noreply.github.com> Date: Fri, 13 Mar 2026 13:10:01 +0000 Subject: [PATCH 2/2] refactor: derive copilot metadata from storage --- .../api/handlers/management/auth_files.go | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/internal/api/handlers/management/auth_files.go b/internal/api/handlers/management/auth_files.go index 882ab581..df077669 100644 --- a/internal/api/handlers/management/auth_files.go +++ b/internal/api/handlers/management/auth_files.go @@ -2438,20 +2438,20 @@ func (h *Handler) RequestGitHubToken(c *gin.Context) { if label == "" { label = username } + metadata, errMeta := copilotTokenMetadata(tokenStorage) + if errMeta != nil { + log.Errorf("Failed to build token metadata: %v", errMeta) + SetOAuthSessionError(state, "Failed to build token metadata") + return + } + record := &coreauth.Auth{ ID: fileName, Provider: "github-copilot", Label: label, FileName: fileName, Storage: tokenStorage, - Metadata: map[string]any{ - "email": userInfo.Email, - "username": username, - "name": userInfo.Name, - "access_token": tokenData.AccessToken, - "token_type": tokenData.TokenType, - "scope": tokenData.Scope, - }, + Metadata: metadata, } savedPath, errSave := h.saveTokenRecord(ctx, record) @@ -2476,6 +2476,21 @@ func (h *Handler) RequestGitHubToken(c *gin.Context) { }) } +func copilotTokenMetadata(storage *copilot.CopilotTokenStorage) (map[string]any, error) { + if storage == nil { + return nil, fmt.Errorf("token storage is nil") + } + payload, errMarshal := json.Marshal(storage) + if errMarshal != nil { + return nil, fmt.Errorf("marshal token storage: %w", errMarshal) + } + metadata := make(map[string]any) + if errUnmarshal := json.Unmarshal(payload, &metadata); errUnmarshal != nil { + return nil, fmt.Errorf("unmarshal token storage: %w", errUnmarshal) + } + return metadata, nil +} + func (h *Handler) RequestIFlowCookieToken(c *gin.Context) { ctx := context.Background()