Skip to content
Custom GPTs retire on 11 Dec 2026. Their Actions do not move to plugins on their own. See what transfers

Getting started

  1. Start OpenAI identity verification

    In the OpenAI organization that will publish. It is the slowest step. Business verification can be rejected; individual verification is an accepted fallback.

  2. Sign in and create a workspace

    Email link, no password. The slug cannot be changed later.

  3. Start a migration

    Paste the GPT’s fields in the order the GPT editor shows them. Keys are added later, on the Bridge tab.

  4. Choose the permanent address

    Your own domain for anything public. Create the CNAME record Plugferry shows.

  5. Test, package, submit

    Connect it yourself, run the review cases, record the demo, build the ZIP, and follow the checklist on the Submit tab.

Install a plugin by its server address

Use this before a plugin is listed, or to share one privately. The examples use Diligence Desk; replace the name and address with your plugin’s, which ends in /mcp.

ChatGPT

  1. Go to chatgpt.com/plugins and click the plus button.
  2. Choose Add custom MCP server and paste the address. Set authentication to None, or to OAuth if the plugin asks its users to sign in.
  3. Choose Create as a plugin, check the tool count, and install.
  4. In a new chat, type @ and pick the plugin.

If Add custom MCP server is missing, turn on Developer mode under Settings, Apps and Connectors, Advanced settings.

Claude

  1. Settings → Connectors → Add custom connector.
  2. Paste the address and add it.

Claude reads the tools and server instructions, not the skill.

Claude Code

Run in a terminal:

claude mcp add --transport http diligence-desk https://diligence.blackmatter.vc/mcp

Codex

Run in a terminal:

codex mcp add diligence-desk --url https://diligence.blackmatter.vc/mcp

After the owner changes tools or instructions: in ChatGPT, open the plugin’s settings and click Refresh tools, then start a new chat. In Claude, remove and re-add the connector.

Changing something after the first upload

Every change has its own redo list. Plugferry shows the one that applies after each save; this is the full table.

Tool added, removed, renamed or re-described
Rescan tools in the OpenAI portal. Refresh tools in ChatGPT and start a new chat. Check review cases still name existing tools.
Server instructions
Nothing in the portal before submission; the bridge serves them live. Refresh in ChatGPT, new chat.
Skill, reference files, listing text, review cases, policy URLs
Rebuild the package and upload it as a new version on the existing draft.
Hostname
Not possible after submission. Before: move the bridge, rebuild, delete the portal draft and upload as new, paste the new domain token.
After the plugin is published
Tool changes go through OpenAI’s continuous review automatically; package changes need a new version and a new review.