Remote synced plugin should skip MCP startup when required runtime is missing
Summary
A remote-synced Codex plugin can be enabled on a machine that does not have the runtime required by its MCP server. In this case, the Data Analytics plugin syncs to a remote Linux host and Codex tries to start its datascienceWidgets MCP server, but the machine does not have Node.js installed.
What happened
The plugin is synced as:
data-analytics@openai-curated-remoteinstalled: trueenabled: true
Its MCP config runs:
node ./mcp/server.cjs --stdio
On the remote Linux host, node, npm, npx, and bun are not available on PATH.
Codex startup reports:
MCP client for `datascienceWidgets` failed to start: MCP startup failed: No such file or directory (os error 2)
MCP startup incomplete (failed: datascienceWidgets)
Expected behavior
Codex or the plugin should detect missing runtime requirements before attempting MCP startup and either:
- skip/disable the MCP server for this machine,
- show an actionable message like "Data Analytics Widgets require Node.js", or
- mark the plugin incompatible on this host while keeping it enabled on other devices.
Actual behavior
The plugin remains enabled through remote sync and Codex attempts to start the MCP server every session, producing a low-level startup error.
Why this matters
Plugin install state appears to sync across devices. A plugin enabled from a desktop Codex app may not be runnable on a remote Linux machine with a different runtime environment. Per-account plugin sync should not assume every connected host has the same local dependencies.
Environment
- Remote Linux Codex session
- Plugin:
data-analytics@openai-curated-remote - MCP server:
datascienceWidgets - Missing runtime: Node.js not installed/on
PATH
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Remote plugin sync needs host capability checks before MCP admission. The plugin manifest can declare runtime requirements such as command, Node semver, OS/arch support, and optional install hint.
On a host that lacks the runtime, mark that MCP server
incompatible_on_hostwith reasonmissing_runtime:node, skip startup, and keep the plugin enabled elsewhere. The thread should start with a diagnostic, not a failed MCP process. Cache the compatibility result per host and plugin version.---
_Generated with ax._