ChatGPT plugin extensions let developers add interfaces and interactions to ChatGPT, including apps opened from the sidebar, panels beside a conversation, and viewers for supported files. They build on MCP and MCP Apps so people can work in a product's interface while using ChatGPT to help with the task.
OpenAI introduced plugin extensions at DevDay on September 29, 2026.
For a product team, they offer ways to bring an existing workflow into ChatGPT, such as reviewing a support queue while drafting replies or opening a design file in a specialized viewer.
Copy link to headingHow do extensions relate to plugins and MCP Apps?
A plugin is the package someone installs in ChatGPT or Codex. It can contain skills that guide the model through a workflow and an MCP server that connects to a service. Custom UI is optional: a tool that looks up an order status may return everything the user needs as text.
When visual interaction helps, MCP Apps provides the shared mechanism for associating a tool with a UI resource and communicating with the host application. Your server supplies the interface, and ChatGPT displays it in an iframe. Plugin extensions add ChatGPT-specific capabilities, such as a place to open the app from navigation or a viewer that handles a particular file type.
If you've built with the Apps SDK, use standard MCP Apps fields and bridge methods for new interfaces. Existing OpenAI compatibility aliases remain available. Start with the shared UI contract, then add the extensions your workflow needs.
For a support product, that means the server retrieves authorized tickets, the UI displays the queue, and an extension makes that queue available beside a conversation.
Copy link to headingWhere can your interface appear?
Choose the location according to what the person needs to do. An interface for browsing many records needs different space from a view of the one record being discussed.
Extensions also support interactions such as rich forms and selecting plugin content through composer mentions. You don't need to implement every option. A support queue may benefit from a panel and a way to select a ticket without needing a file viewer.
Copy link to headingWhat would a support queue extension do?
The conversation panel could let a support lead filter tickets, select one, and inspect its history while discussing a response with ChatGPT. The useful connection is between the selected ticket and the conversation. Design the app to send the relevant selection as model context so the user can ask about that record without copying its contents into a prompt.
For example, the user might select an unresolved delivery ticket and ask:
Draft a reply for this ticket using the order history shown. Explain the current delivery status and identify any information we still need from the customer. Leave the reply as a draft for me to review.
The interface should show which ticket the draft belongs to and whether it has been saved. If you add a send action, implement it as a separate operation with the permissions and confirmation appropriate to your product. Opening a panel alone doesn't define any of that behavior.
Start by supporting one complete task, such as reviewing and drafting a reply. That gives you something concrete to test before expanding the extension into a full support workspace.
Copy link to headingHow do you register a conversation panel?
An entrypoint tells ChatGPT where someone can open an MCP App. For a panel within a conversation, use a thread entrypoint in the tool's metadata.
In a server project with @openai/mcp-extensions installed, this snippet defines the metadata to pass as _meta when registering your existing MCP App tool:
import type { OpenAIUiToolMetadata } from '@openai/mcp-extensions/server';
const supportPanelMetadata = { ui: { resourceUri: 'ui://support/queue' }, 'openai/ui': { entrypoints: [{ type: 'thread' }], } satisfies OpenAIUiToolMetadata,};Replace ui://support/queue with the URI of the UI resource your server has registered. The extension SDK's registration example shows how the resource and tool registrations connect. This metadata belongs within that implementation; it doesn't create the queue UI or retrieve tickets by itself.
The entrypoint tool receives empty arguments when someone opens the panel, so it must handle that initial state. Give the tool a title that identifies the view, such as "Support queue." To offer an app from the main sidebar instead, use a global entrypoint. These behaviors are defined in the entrypoint specification.
Copy link to headingWhen would you build a file viewer?
File viewers are well-suited to work where the format carries information that plain text lacks. For example, an engineering team could open an STL file in a 3D viewer, rotate the object, and discuss a visible feature in the adjacent conversation. The developer provides the viewer and decides which file extensions it handles.
An editor adds another requirement: saving changes must respect the file's permissions and current version. The extension SDK exposes file-resource operations, including checking whether a resource is writable and handling a save conflict. A useful first version could be read-only, with editing added once the viewing workflow works.
File entrypoints currently require the desktop app. Choose a conversation panel if your first release must support a workflow in ChatGPT Work on the web.
Copy link to headingCan you build and host the app on Vercel?
Yes. The MCP Apps Next.js starter provides an MCP server route and a React interface. The route registers tools and UI resources; the interface receives tool input and results through the MCP Apps bridge.
Use that as the underlying app, then add the OpenAI extension metadata and behavior you need. The starter's support for MCP Apps doesn't automatically register a sidebar app or a conversation panel. Those are additional choices in your implementation.
If you're adding tools to an existing service, Vercel's MCP deployment guide covers hosting the server. Keep the interface focused on the part of the product users need during a conversation, such as selecting a ticket or inspecting a file. Reproducing every settings page would add work without improving that task.
Copy link to headingWhat are the availability and permission limits?
At launch, sidebar and conversation entrypoints support desktop, ChatGPT Work on the web, and mobile. File entrypoints and composer mentions are desktop-only. Web plugin extensions are not yet available to Free and Go users. Test the client your audience will use instead of assuming every ChatGPT interface supports the same extension.
An extension also retains your product's access requirements. For customer-specific records or write actions, authenticate the user and enforce authorization on the server. A visible ticket in a panel should not grant someone permission to update a record they couldn't change in your product.
Keep the MCP tools useful when no UI renders. Other compatible hosts may support the standard MCP App without implementing ChatGPT's extension features. Detect the capabilities your app needs and provide a fallback where practical.
Copy link to headingHow should you test the first version?
Test the MCP server and the installed plugin as separate parts of the workflow. For the support queue, open the panel with no selected ticket, select a record, and ask for a draft. Confirm that the reply uses the selected record and that switching tickets doesn't leave stale context in the conversation.
Include an empty queue and a user without access to a ticket. If the UI supports saving or sending, test both the resulting state and the model's response. A fluent answer is insufficient evidence that the product performed the requested action.
Keep these test prompts and expected outcomes with the project so you can rerun them after changing tool metadata or the UI. Once the integration works, follow the plugin packaging and submission process for distribution.
Copy link to headingFrequently asked questions
Copy link to headingAre ChatGPT plugin extensions browser extensions?
No. ChatGPT plugin extensions add capabilities to plugins inside ChatGPT, such as a sidebar app or a conversation panel. Developers implement them through MCP and MCP Apps integrations rather than a browser extension package.
Copy link to headingDoes every ChatGPT plugin need a custom interface?
No. A plugin can provide skills or MCP tools without displaying its own UI. Add an interface when users need to browse, select, or edit information that would be awkward to handle through conversation alone.
Copy link to headingDo ChatGPT plugin extensions work on mobile?
Support depends on the extension. Sidebar and conversation entrypoints are included in the mobile launch support, while file entrypoints and composer mentions require desktop. Test each feature on the clients your users rely on.
Copy link to headingDoes registering an entrypoint create the app?
No. Entrypoint metadata connects a place in ChatGPT's interface to an MCP App tool and its registered UI resource. You still implement the interface, server behavior, and any required account connection.