Skip to content

Data Analytics plugin tools appear in remote Codex CLI without local install/config #26275

Description

@sun-binwen

Summary

After installing the Data Science / Data Analytics plugin on another device (my laptop), a separate remote Codex CLI session started exposing Data Analytics-related capabilities, including the datascienceWidgets MCP/widget tools, even though that remote host does not show the plugin as locally installed or configured.

This was unexpected because the remote CLI host's local config does not contain a datascienceWidgets MCP server or a data-analytics plugin entry.

Environment

  • Codex CLI: codex-cli 0.136.0
  • Surface affected: Codex CLI on a remote Linux host over SSH
  • Plugin involved: Data Analytics / Data Science plugin
  • Separately installed on: another device (laptop)

Observed behavior

In the remote Codex CLI session, Data Analytics capabilities were available to the agent/tool layer, including the datascienceWidgets MCP namespace and Data Analytics skills.

However, on that same remote host:

$ codex plugin list | rg 'data-analytics|github@openai-curated|hugging-face@openai-curated'
16:hugging-face@openai-curated  installed, enabled  ...
24:github@openai-curated        installed, enabled  ...

No data-analytics plugin appears as installed/enabled.

$ codex mcp list | rg 'datascience|arxiv|context7|semantic_scholar|serena|github'
# lists arxiv, context7, semantic_scholar, serena, github
# does not list datascienceWidgets

The local ~/.codex/config.toml on the remote host contains explicit entries for GitHub and Hugging Face plugins only:

[plugins."github@openai-curated"]
enabled = true

[plugins."hugging-face@openai-curated"]
enabled = true

It also has no [mcp_servers.datascienceWidgets] entry.

The remote host did have a cached plugin bundle at a path like:

~/.codex/plugins/cache/openai-curated-remote/data-analytics/<version>/

and that cached bundle contains:

{
  "mcpServers": {
    "datascienceWidgets": {
      "title": "Data Analytics Widgets",
      "command": "node",
      "args": ["./mcp/server.cjs", "--stdio"]
    }
  }
}

Expected behavior

One of these should be true:

  1. Plugin installs are local/per-host, and a plugin installed on one device should not expose tools in another host's CLI unless installed/enabled there.
  2. Plugin installs are account/workspace-global, but the CLI should make that sync explicit in codex plugin list, config/state diagnostics, and the plugin browser.
  3. There should be a clear per-host override to disable a plugin-provided MCP server, such as data-analytics / datascienceWidgets, without uninstalling it everywhere.

Why this matters

This changes the tool surface of a remote development session unexpectedly. It can affect agent routing, available MCP tools, and prompt behavior in a repo where the user did not intend to enable Data Analytics.

Requested improvement

Please clarify and/or fix the plugin scoping behavior for Codex CLI:

  • If plugin availability is synced across devices, expose that state clearly in codex plugin list and codex doctor.
  • Provide a documented CLI/config way to disable a synced plugin or its plugin-provided MCP server on just one host.
  • Avoid exposing plugin-provided MCP tools in a CLI session when the local host does not show the plugin as installed/enabled.

I can provide more diagnostics if there is a specific state file or command that would help distinguish local cache, account-synced plugin state, and current-session tool injection.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    CLIIssues related to the Codex CLIbugSomething isn't workingconfigIssues involving config.toml, config keys, config merging, or config updatesmcpIssues related to the use of model context protocol (MCP) serversremoteskillsIssues related to skills

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions