diff --git a/NodeApp/src/managers/HttpManager.ts b/NodeApp/src/managers/HttpManager.ts
index 5b8ea67c2a7d802a599ecb304bc04056737219dc..e90f666c4967739d857af9a604a39ca0e82fad34 100644
--- a/NodeApp/src/managers/HttpManager.ts
+++ b/NodeApp/src/managers/HttpManager.ts
@@ -1,7 +1,6 @@
 import axios, { AxiosRequestHeaders } from 'axios';
 import SessionManager                 from './SessionManager';
 import FormData                       from 'form-data';
-import GitlabManager                  from './GitlabManager';
 import { StatusCodes }                from 'http-status-codes';
 import ClientsSharedConfig            from '../sharedByClients/config/ClientsSharedConfig';
 import { version }                    from '../config/Version';
@@ -35,15 +34,15 @@ class HttpManager {
                 }
 
                 if ( SessionManager.isLogged ) {
-                    config.headers.Authorization = `Bearer ${ SessionManager.token }`;
+                    config.headers.Authorization = `Bearer ${ SessionManager.apiToken }`;
                 }
 
                 config.headers['client'] = 'DojoCLI';
                 config.headers['client-version'] = version;
             }
 
-            if ( GitlabManager.isLogged && config.url && config.url.indexOf(SharedConfig.gitlab.apiURL) !== -1 ) {
-                config.headers['PRIVATE-TOKEN'] = GitlabManager.token;
+            if ( SessionManager.gitlabCredentials.accessToken && config.url && config.url.indexOf(SharedConfig.gitlab.apiURL) !== -1 ) {
+                config.headers.Authorization = `Bearer ${ SessionManager.gitlabCredentials.accessToken }`;
             }
 
             return config;
@@ -66,13 +65,35 @@ class HttpManager {
     private registerResponseInterceptor() {
         axios.interceptors.response.use((response) => {
             if ( response.data && response.data.sessionToken ) {
-                SessionManager.token = response.data.sessionToken;
+                SessionManager.apiToken = response.data.sessionToken;
             }
 
             return response;
-        }, (error) => {
+        }, async (error) => {
             if ( error.response ) {
-                if ( error.response.status === StatusCodes.METHOD_NOT_ALLOWED && error.response.data ) {
+                const originalConfig = error.config;
+
+                const isFromApi = error.response.config.url && error.response.config.url.indexOf(ClientsSharedConfig.apiURL) !== -1;
+                const isFromGitlab = error.response.config.url && error.response.config.url.indexOf(SharedConfig.gitlab.URL) !== -1;
+
+                // Try to refresh the Gitlab tokens if the request have failed with a 401 error
+                if ( error.response.status === StatusCodes.UNAUTHORIZED && isFromGitlab && !originalConfig._retry ) {
+                    originalConfig._retry = true;
+
+                    try {
+                        await SessionManager.refreshTokens();
+
+                        return axios(originalConfig);
+                    } catch ( _error: any ) {
+                        if ( _error.response && _error.response.data ) {
+                            return Promise.reject(_error.response.data);
+                        }
+
+                        return Promise.reject(_error);
+                    }
+                }
+
+                if ( error.response.status === StatusCodes.METHOD_NOT_ALLOWED && isFromApi && error.response.data ) {
                     const data: DojoBackendResponse<{}> = error.response.data;
 
                     switch ( data.code ) {
@@ -88,7 +109,7 @@ class HttpManager {
                 }
 
                 if ( this.handleAuthorizationCommandErrors ) {
-                    if ( error.response.url && error.response.url.indexOf(ClientsSharedConfig.apiURL) !== -1 ) {
+                    if ( isFromApi ) {
                         switch ( error.response.status ) {
                             case StatusCodes.UNAUTHORIZED:
                                 this.requestError('Session expired or does not exist. Please login again.');