External Publication
Visit Post

ChatGPT MCP connector refreshes token on every tool call and doesn't persist sessions

OpenAI Developer Community March 19, 2026
Source

Summary

ChatGPT’s MCP connector unconditionally refreshes the OAuth token and creates a new MCP session before every single tool call, even when the access token is still valid.

Observed Behavior

Every tool invocation follows this pattern:

POST /token (grant_type=refresh_token) ← token is still valid initialize ← new MCP session message processing canceled ← previous session killed tools/call ← actual work

This happens regardless of expires_in — even with a freshly issued access token (e.g., expires_in: 3600), the next tool call triggers a full refresh + new session.

Evidence from Server Logs

Refresh token request — clientId={clientId}, userAgent=Python/3.12 aiohttp/3.13.3 POST /token → 200 initialize → Client message processing canceled tools/call → success Refresh token request — clientId={clientId} ← immediately refreshes again initialize → Client ← brand new session tools/call → success

Problems This Causes

  1. Unnecessary load on authorization servers. Every tool call hits the token endpoint even when the access token has minutes/hours of remaining validity.

  2. Users are repeatedly prompted to re-authenticate despite having valid tokens with offline_access scope.

Environment

  • MCP client: ChatGPT Desktop/Web
  • OAuth flow: Authorization Code + PKCE (OAuth 2.1)
  • Scopes: openid profile api offline_access
  • Server correctly returns expires_in, access_token, and refresh_token in token responses

Discussion in the ATmosphere

Loading comments...