Skip to content

Separate installed plugins from per-session skill metadata injection #21425

Description

@Yan-Yang-PYZNTech

Current evidence (updated July 21, 2026)

  • Independently reproduced by multiple users on macOS.
  • Confirmed on Codex CLI 0.128.0 and 0.144.6.
  • One independent reproduction found 14 repo-local SKILL.md files versus 83 SKILL.md files in the installed plugin cache.
  • That reproduction also found skills associated with a plugin configured as enabled = false still present in the injected Available Skills list, overlapping with Config/profile disables for connectors, apps, and plugins are ignored in Codex CLI #17588.
  • Increasing the metadata budget (Make skills metadata context budget configurable instead of hardcoded 2% #19679) would reduce truncation, but would not separate installed plugin availability from default per-session injection.
  • Fresh CLI 0.144.6 Profile V2 A/B with the installed documents@openai-primary-runtime plugin produced documents:documents in both ON runs and removed it in both OFF runs; the first paired prompt delta was exactly 453 characters.
  • Profile V2 therefore provides a partial binary per-invocation control. -c plugins.…enabled=… did not change the effective plugin state in inverse controls, and an on_demand mode that preserves explicit invocation is still missing.

What problem does this solve?

Codex currently treats enabled plugins/skills as part of the model-visible skills metadata surface for every new session. With several official plugins enabled, this can quickly hit the fixed skills metadata budget and produce warnings like:

Skill descriptions were shortened to fit the 2% skills context budget. Codex can still see every skill, but some descriptions are shorter. Disable unused skills or plugins to leave more room for the rest.

At the time of the original 0.128.0 report, the practical workaround was to disable plugins globally in config.toml. Codex CLI 0.144.6 now has Profile V2 overlays that partially improve this: a user can pre-create a profile that disables a plugin for one invocation while keeping it installed and enabled in the base configuration. This remains binary and file-based rather than an on-demand injection policy.

Why this is not only a budget-size issue

Related issues already cover important parts of this:

Those would help, but there is a separate product/control-surface issue: plugin installation/enabling is currently too tightly coupled to per-session prompt injection.

For example, a user may want these different modes:

  • keep a document/PPT/spreadsheet plugin installed, but not inject its skills into every normal coding session;
  • start a dedicated session with those plugin skills fully injected;
  • keep Browser Use or Computer Use always available;
  • avoid duplicate or near-duplicate skill metadata across plugin/local/project sources;
  • prioritize repo-local skills over low-frequency plugin skills when metadata budget is tight.

On current CLI, a pre-created Profile V2 overlay can switch binary plugin sets per invocation. What remains missing is a direct on_demand / manual state that keeps plugin skills explicitly available without injecting their metadata by default, plus equivalent session controls in the Codex App UI.

Requested behavior

Please consider separating plugin/skill availability from default per-session skills metadata injection. Possible designs:

  • per-session or profile-based plugin sets, e.g. default, docs, browser, research;
  • a config mode per plugin/skill such as inject = "always" | "on_demand" | "off" while keeping the plugin installed;
  • lazy loading: inject a compact plugin/skill manifest first, then load detailed routing metadata only when the user invokes or references that capability;
  • priority/pinning rules so repo-local or user-pinned skills are preserved before low-frequency plugin skills;
  • automatic deduplication of identical or overlapping skill metadata across plugin/local/project roots before applying the budget;
  • Codex App UI controls to start a new session with selected plugins instead of editing config.toml and restarting.

Expected result

Users should be able to keep official plugins installed without each one consuming skills metadata budget in every session. The default coding session stays compact, while specialized plugin-heavy sessions remain easy to start intentionally.

Environment

  • Codex CLI: codex-cli 0.128.0
  • Platform: macOS
  • Scenario: multiple official plugins enabled via ~/.codex/config.toml, fresh session shows the 2% skills context budget warning.

Metadata

Metadata

Assignees

No one assigned

    Labels

    CLIIssues related to the Codex CLIconfigIssues involving config.toml, config keys, config merging, or config updatescontextIssues related to context management (including compaction)enhancementNew feature or requestskillsIssues related to skills

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions