Workspace GitHub plugin importer rejects local stdio MCP for Codex-only plugins
Summary
The ChatGPT Business workspace GitHub plugin importer rejects a plugin that bundles a local stdio MCP server, even when the marketplace entry is explicitly scoped to policy.products: ["CODEX"].
This prevents workspace administrators from centrally distributing private Codex plugins that are designed to run their MCP tools locally. The same local command-based MCP shape is supported by Codex Git marketplaces and is used by third-party Codex plugins.
Environment
- ChatGPT Business workspace
- Workspace settings → Plugins → Import from GitHub
- Private GitHub repository
- Chrome on macOS
- Reproduced July 22, 2026
Minimal structure
.agents/plugins/marketplace.json:
{
"name": "company-internal",
"plugins": [
{
"name": "example-local-tools",
"source": {
"source": "local",
"path": "./plugins/example-local-tools"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL",
"products": ["CODEX"]
}
}
]
}
plugins/example-local-tools/.codex-plugin/plugin.json points mcpServers to ./.mcp.json.
plugins/example-local-tools/.mcp.json:
{
"mcpServers": {
"example-local-tools": {
"command": "node",
"args": ["./mcp/server.mjs"],
"cwd": "."
}
}
}
Steps to reproduce
- Connect a private GitHub repository to a ChatGPT Business workspace.
- Import the full repository from Workspace settings → Plugins.
- Wait for asynchronous validation.
- A skills-only plugin from the same catalog is accepted.
- A Codex-only plugin containing the local stdio MCP manifest above is rejected.
Actual result
The import completes with issues:
MCP server example-local-tools must define a non-empty HTTPS url.
The importer applies the hosted ChatGPT-app MCP rule despite the marketplace entry being restricted to Codex.
Expected result
For entries scoped to products: ["CODEX"], the importer should either:
- accept and distribute the plugin bundle to Codex clients, where the stdio MCP command runs locally; or
- provide a separate organization-managed Codex marketplace distribution flow.
It should not require turning a deliberately local MCP tool into an Internet-hosted HTTPS service.
Impact
Organizations cannot centrally distribute private Codex plugins with local MCP tools:
- workspace members without Git cannot install a Git marketplace;
- administrators cannot provision the plugins company-wide from the workspace;
- CI/CD releases cannot update the workspace catalog automatically;
- local or sensitive processing is unnecessarily pushed toward hosted infrastructure.
Making the repository public does not solve the organization-management requirement.
Relevant public examples
Third-party Codex GitHub marketplaces demonstrate that local MCP plugins are supported by the Codex client:
- Oh My Codex: https://github.com/Yeachan-Heo/oh-my-codex/blob/main/plugins/oh-my-codex/.mcp.json
- AgentMemory: https://github.com/rohitg00/agentmemory/blob/main/plugin/.mcp.json
- arxiv-mcp-server: https://github.com/blazickjp/arxiv-mcp-server/blob/main/.mcp.json
Requested improvement
- Honor
policy.products: ["CODEX"]during workspace-source validation. - Support organization-managed private Codex catalogs containing local stdio MCPs.
- Let Codex clients download versioned plugin archives without requiring Git on employee machines.
- Provide an admin-controlled automatic refresh/update policy for CI/CD releases.
- Clearly distinguish ChatGPT-hosted app validation from Codex local-plugin validation in the UI and documentation.