Skip to content

Token has been expired or revokedΒ #18159

@WajahatAliAbid

Description

@WajahatAliAbid

Bug Description

We are syncing email and calendar from google using Twenty. The email we are using is quite old so it has a lot of contacts. However after ~24 hours, our sync fails. We do see logs saying Token has been expired or revoked. How can we mitigate this?

Logs:

[Nest] 34  - 02/17/2026, 10:12:00 PM   ERROR [GmailGetAllFoldersService] Connected account 84a2e98a-fa48-44ba-b36b-0b53b6ddbad7: Error fetching labels: invalid_grant
[Nest] 34  - 02/17/2026, 10:12:00 PM   ERROR [GmailFoldersErrorHandlerService] Gmail: Error fetching folders: {"response":{"config":{"method":"POST","url":"https://oauth2.googleapis.com/token","data":"refresh_token=[REDACTED]&client_id=[REDACTED].apps.googleusercontent.com&client_secret=[REDACTED]&grant_type=refresh_token","headers":{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"google-api-nodejs-client/8.9.0","x-goog-api-client":"gl-node/24.12.0","Accept":"application/json"},"body":"refresh_token=[REDACTED]&client_id=[REDACTED].apps.googleusercontent.com&client_secret=[REDACTED]&grant_type=refresh_token","responseType":"json"},"data":{"error":"invalid_grant","error_description":"Token has been expired or revoked."},"headers":{"alt-svc":"h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000","cache-control":"no-cache, no-store, max-age=0, must-revalidate","content-encoding":"gzip","content-type":"application/json; charset=utf-8","date":"Tue, 17 Feb 2026 22:12:00 GMT","expires":"Mon, 01 Jan 1990 00:00:00 GMT","pragma":"no-cache","server":"scaffolding on HTTPServer2","transfer-encoding":"chunked","vary":"Origin, X-Origin, Referer","x-content-type-options":"nosniff","x-frame-options":"SAMEORIGIN","x-xss-protection":"0"},"status":400,"statusText":"Bad Request","request":{"responseURL":"https://oauth2.googleapis.com/token"}},"config":{"method":"POST","url":"https://oauth2.googleapis.com/token","data":"refresh_token=[REDACTED]&client_id=[REDACTED].apps.googleusercontent.com&client_secret=[REDACTED]&grant_type=refresh_token","headers":{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"google-api-nodejs-client/8.9.0","x-goog-api-client":"gl-node/24.12.0","Accept":"application/json"},"body":"refresh_token=[REDACTED]&client_id=[REDACTED].apps.googleusercontent.com&client_secret=[REDACTED]&grant_type=refresh_token","responseType":"json"},"code":"400"}, constructor: GaxiosError
[Nest] 34  - 02/17/2026, 10:12:00 PM   ERROR [GmailGetAllFoldersService] Failed to get Gmail folders for account test@example.com:
[Nest] 34  - 02/17/2026, 10:12:00 PM   ERROR [GmailGetAllFoldersService] MessageImportDriverException: Token has been expired or revoked.
    at parseGmailApiError (/app/packages/twenty-server/dist/modules/messaging/message-import-manager/drivers/gmail/utils/parse-gmail-api-error.util.js:21:24)
    at GmailFoldersErrorHandlerService.handleError (/app/packages/twenty-server/dist/modules/messaging/message-folder-manager/drivers/gmail/services/gmail-folders-error-handler.service.js:34:66)
    at /app/packages/twenty-server/dist/modules/messaging/message-folder-manager/drivers/gmail/services/gmail-get-all-folders.service.js:40:54
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
    at async GmailGetAllFoldersService.getAllMessageFolders (/app/packages/twenty-server/dist/modules/messaging/message-folder-manager/drivers/gmail/services/gmail-get-all-folders.service.js:36:30)
    at async SyncMessageFoldersService.syncMessageFolders (/app/packages/twenty-server/dist/modules/messaging/message-folder-manager/services/sync-message-folders.service.js:34:35)
    at async /app/packages/twenty-server/dist/modules/messaging/message-import-manager/services/messaging-message-list-fetch.service.js:91:40
    at async MessagingMessageListFetchService.processMessageListFetch (/app/packages/twenty-server/dist/modules/messaging/message-import-manager/services/messaging-message-list-fetch.service.js:56:9)
    at async /app/packages/twenty-server/dist/modules/messaging/message-import-manager/jobs/messaging-message-list-fetch.job.js:76:17
    at async MessagingMessageListFetchJob.handle (/app/packages/twenty-server/dist/modules/messaging/message-import-manager/jobs/messaging-message-list-fetch.job.js:41:9) {
  code: 'INSUFFICIENT_PERMISSIONS',
  cause: undefined,
  context: undefined
}

Expected behavior

Email to be synced as expected

Twenty Version

We are using version v1.15.0

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

βœ… Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions