@@ -665,7 +665,7 @@ func validateAndParseOAuthState(state string) (*OAuthStateData, error) {
665665func storeCredentialsInSecret (ctx context.Context , projectName , sessionName , provider , accessToken , refreshToken string , expiresIn int64 ) error {
666666 secretName := fmt .Sprintf ("%s-%s-oauth" , sessionName , provider )
667667
668- // Get OAuth provider config for client_id and client_secret
668+ // Get OAuth provider config for scopes
669669 providerConfig , err := getOAuthProvider (provider )
670670 if err != nil {
671671 return fmt .Errorf ("failed to get OAuth provider config: %w" , err )
@@ -675,13 +675,14 @@ func storeCredentialsInSecret(ctx context.Context, projectName, sessionName, pro
675675 // workspace-mcp expects timezone-naive format like Python's datetime.isoformat()
676676 expiryTime := time .Now ().Add (time .Duration (expiresIn ) * time .Second )
677677
678- // Prepare credentials JSON in the format expected by workspace-mcp
678+ // Prepare credentials JSON with only the token, scopes, and expiry
679+ // client_id, client_secret, token_uri, and refresh_token are empty strings to minimize stored secrets
679680 credentials := map [string ]interface {}{
680681 "token" : accessToken ,
681- "refresh_token" : refreshToken ,
682- "token_uri" : providerConfig . TokenURL ,
683- "client_id" : providerConfig . ClientID ,
684- "client_secret" : providerConfig . ClientSecret ,
682+ "refresh_token" : "" ,
683+ "token_uri" : "" ,
684+ "client_id" : "" ,
685+ "client_secret" : "" ,
685686 "scopes" : providerConfig .Scopes ,
686687 "expiry" : expiryTime .Format ("2006-01-02T15:04:05" ), // Timezone-naive format for Python compatibility
687688 }
@@ -729,7 +730,7 @@ func storeCredentialsInSecret(ctx context.Context, projectName, sessionName, pro
729730 Data : map [string ][]byte {
730731 "credentials.json" : credentialsJSON ,
731732 "access_token" : []byte (accessToken ),
732- "refresh_token" : []byte (refreshToken ),
733+ "refresh_token" : []byte ("" ),
733734 },
734735 }
735736
0 commit comments