Artificial Intelligence1 min read

ChatGPT silently passes data between connectors and the bounty wants an ID card

By · Published by Everything Blog

In short

During testing with two separate connectors sharing a server endpoint, an action confirmed in the first tool triggered a follow-up call routed through the second connector. This subsequent action attempted to transmit a one-time confirmation code generated by the initial integration's interface. Although the destination server rejected the request because the authorization code belonged to a different OAuth client, the platform still transferred data between distinct applications without user consent. The incident highlights the necessity of binding multi-step workflows strictly to the originating client rather than relying on destination URLs.

Key points

  • ChatGPT can silently pass sensitive workflow data between different third-party integrati…: ChatGPT can silently pass sensitive workflow data between different third-party integrations without requesting user awareness or explicit consent.
  • Shared server addresses do not imply identical security contexts since single servers oft…: Shared server addresses do not imply identical security contexts since single servers often isolate separate tenants and partners.
  • Multi-step tool executions must be strictly restricted to the specific connector and OAut…: Multi-step tool executions must be strictly restricted to the specific connector and OAuth client that originally initiated the interaction.

Sources checked by our analysis pipeline: 1

In a conversation with two connectors enabled, ChatGPT made a follow-up tool call through a different connector than the one that started the flow. The user was not told about the switch. The call carried a one-time confirmation code from the first connector’s widget.

Setup

- One ChatGPT account with two connectors enabled that point to the same MCP server.

- Connector A is a custom connector added in developer mode.

- Connector B is the published app from the app directory.

- Each connector has its own OAuth client, so the server sees two separate clients for the same user.

Steps

1. In a conversation with both connectors enabled, ask for an action that needs the user’s confirmation.

2. The model calls a confirmation tool through connector A. Its MCP Apps widget shows the change. The user confirms, and the widget sends a one-time confirmation code to the conversation via ui/message.

3. The model makes the follow-up call with that code, but silently through connector B instead of connector A.

Result

The server rejects the call, because the code…

Artificial Intelligence