Skip to main content

ChatGPT Plugin Extensions: Which Surface Should Your App Use?

5 min read

ChatGPT plugin extensions add sidebar apps, conversation panels, file handlers and desktop composer mentions. Here is a builder's map of each surface and its rollout limits.

ChatGPT Plugin Extensions: Which Surface Should Your App Use?

A useful plugin can still feel awkward if every interaction has to fit inside a chat reply. A file editor, a persistent workspace, and a quick in-thread control need different homes.

At DevDay on September 29, OpenAI introduced ChatGPT plugin extensions that put MCP apps in more of the product’s interface. The developer page describes sidebar apps, conversation panels, file viewers and editors, settings, deep links, composer mentions, and richer forms. Existing plugin functionality is unaffected. The useful question for a builder is not how many surfaces you can declare, but which one removes friction from a real task.

Use the sidebar for a destination.

A sidebar app gives the user a place to open your MCP app full-screen. That fits a product with a recurring home base: a design library, project board, or research workspace. OpenAI’s documentation shows a global entry point declared in tool metadata and points developers to its SDK examples. A sidebar destination should make sense even before the user asks a particular question.

Keep the first screen focused. If the user has to rebuild the chat context inside the app, the sidebar has created a second workspace instead of a smoother one. Deep links can route them to the specific item that prompted the visit.

Use a conversation panel to keep work beside the discussion

A conversation panel opens the app next to a thread. That makes sense when a user is discussing a draft, comparing options, or iterating on an artifact while referring back to the conversation. It is a poor fit for a whole product dashboard that needs uninterrupted space. OpenAI describes a thread entry point for this layout.

Model-API context can help keep an MCP app and ChatGPT synchronized, but context sharing is also a data-design decision. Define which selected item, fields, and changes cross the boundary. Avoid sending a whole workspace simply because the protocol allows rich context.

Use a file handler when the file is the job.

File viewers and editors let an app open supported file types in its own interface from ChatGPT. OpenAI’s example registers a file entry point with an extension such as stl. The app receives a resource URI for the opened file and uses the app SDK to read it. That is a different job from attaching a file to a text-only tool response: the user can inspect and edit in a purpose-built view.

For any editor, test the saved-file path, not just the preview. A user must know whether an edit updated the original, created a copy, or failed. A successful-looking editor state doesn’t prove the underlying content persisted. Our Copilot review-effort article also argues for checking work that appears complete.

Do not promise every client has every extension.

OpenAI says composer mentions, which let a user select plugin content while composing a prompt, are available only in the ChatGPT desktop app. Plugin extensions on the web for Free and Go users are coming soon. Do not describe those as live for every account today. Plan a basic tool path or a clear unsupported-state message for users without the new surface.

The DevDay recap groups the extensions with a larger developer release. Some neighboring announcements are previews or plans, so check each product’s documentation before claiming availability in your onboarding copy.

A practical way to choose and test

  1. Write the user job in one sentence. If it is a place they return to, start with a sidebar app. If it accompanies a conversation, test a panel. If it begins with a file, test a file handler.
  2. Build one supported entry point before adding more. OpenAI links to a TypeScript SDK, a Python SDK, and a protocol specification in the extension documentation.
  3. Test the user journey on each client and plan you intend to support. Confirm what happens when the extension is absent.
  4. Review authentication, the file-permissions context shared with the model, and any write actions separately.
  5. Save a file or change a setting, reload, and confirm the same state appears again. Then test denial and disconnection.

Our WebMCP guide covers the adjacent browser case: a site exposing named actions to an agent. Plugin extensions solve a different problem: placing an MCP app inside ChatGPT. In both cases, a polished interface does not remove the need for narrow permissions and honest results.

My verdict

I would ship the smallest surface that makes the user’s task easier, then watch where they get stuck. A plugin that opens in every possible place may look comprehensive in a demo and feel confusing in daily use. Start with one job, one entry point, and a clear fallback.

Go deeper

Leave a comment

Your email address will not be published. Required fields are marked *