Repository-scoped marketplace and plugin configuration in project config
Open 💬 10 comments Opened Apr 16, 2026 by yshrsmz
What variant of Codex are you using?
Codex CLI
What feature would you like to see?
Codex supports project config via ./.codex/config.toml, but plugin-related config is still effectively user-scoped.
A repo can provide a local marketplace via ./.agents/plugins/marketplace.json, but it cannot declare:
- remote marketplaces that should be available for that repo
- plugin enable/disable settings that should apply for that repo
This makes team-wide plugin setup hard to share and hard to reproduce across machines.
Request
Please add repo-scoped support for:
- marketplace registration
- plugin enable/disable settings
Ideally this should work through ./.codex/config.toml or an equivalent repo-local config mechanism, so teams can commit their Codex plugin setup to the repository.
Example:
[marketplaces.my_team]
source = "github.com/my-org/my-codex-marketplace"
[plugins."review-tools@my_team"]
enabled = true
Why this matters
Today, marketplace registrations and plugin states are effectively read from user config, so each developer must configure Codex manually.
Repo-scoped plugin config would improve:
- onboarding
- reproducibility across machines
- team-shared tooling
- multi-repo plugin development and consumption
Additional information
_No response_
10 Comments
This + now with the skills warnings, we should be able to configure plugins on repo level overall, not just user level?
Hi, it's really important for my team to be able to disable plugins for specific projects. If you work on multiple projects at the same time and have a plugin dedicated to a specific project, it's installed globally and interferes with work on another project.
+1
Often plugins will be completely unrelated across projects, wasting tokens and increasing the chance of errors.
Example: one project might be using a database-related plugin, another might be using a second (or none at all). Giving codex access to such a plugin just creates pure noise in all but the project it's related to.
different auth for repo-scoped plugins is vital for this, too. Personal/professional projects may both use Vercel for example. Being able to scope plugins to a repo would be a huge QOL increase
Reproduced this gap on CLI 0.138.0, on both macOS and Windows.
Setup:
~/.codex/config.toml(user level):[plugins."x@market"] enabled = false<repo>/.codex/config.toml(project level, trusted repo):[plugins."x@market"] enabled = trueResult:
codex plugin list --jsonstill reports the plugin as disabled. The project-level[plugins.*]enablement section is not merged at all — user-levelenabledis the only effective knob today.This is a hard blocker for us, not a nice-to-have. We need certain plugins enabled only in the repos that use them, and right now there is no supported way to do that: it's either globally visible in every project (the cross-project noise problem described above), or unusable everywhere. We've had to fall back to global enablement against our will, which pollutes every other project on the machine.
Project-scoped config already exists for other settings — extending it to
[plugins.*] enabledwould unblock this entire class of use cases. This issue has been open since April with steady +1s; really hoping it gets picked up soon.+1 on this. I'm building AI enablement tools at a company that uses a blend of coding agents. Repo/project-scoped plugins would be a nice capability to simplify how we support role/task-specific Codex workflows. The alternatives are not great: modifying a user's global plugins or managing repo/project skills, MCPs, hooks.
I’m seeing the same issue in Codex Desktop, and it has real consequences for team and multi-repo use.
In a trusted repo at
/Users/tsingh/repos/codex/tbridge,.codex/config.tomlcontains plugin toggles like these:My user config at
~/.codex/config.tomlenables several of the same plugins. In the active thread, Codex still exposes skills and tools from plugins disabled by the repo config. In practice,[plugins.*].enabledappears to come only from user/global config.That is a big deal for repo-scoped Codex workflows. Plugin availability changes the agent’s skills, tools, and instructions. If a trusted repo cannot control that surface, two users can open the same repo and get different agent behavior based only on their global plugin config.
This breaks a few important workflows:
I’d expect one of these behaviors:
.codex/config.tomlcan enable or disable installed plugins, following normal config layering.[plugins.*]entries.Right now project
.codex/config.tomlaccepts these entries silently, but they do not appear to affect the thread.I want to add a concrete case where repo-scoped plugin enablement matters a lot.
Small globally enabled plugins are annoying but usually manageable. Large workflow/governance plugins are different. A private workflow plugin may bring backlog management, requirements, design, implementation, verification, release planning, project state conventions, rules, hooks, and many command-style entry points into Codex.
If such a plugin must be enabled globally, every unrelated repository on the same machine is exposed to that workflow surface. That creates context pollution, behavioral drift, non-reproducible team behavior, and a larger least-privilege / operational-risk surface.
The current workaround is to avoid global enablement and use separate
CODEX_HOMEs, wrapper scripts, or manual enable/disable flows. That works, but it is fragile and makes team workflows hard to adopt.For large workflow plugins, repo-scoped enablement is the difference between “safe to use in this repo” and “too risky to enable at all”.
Trusted project config should be able to declare something like:
and have it apply only inside that trusted repository.
If plugin enablement is intentionally global-only for now, it would help to document that and warn when
[plugins.*]appears in project.codex/config.toml, because today it looks accepted but is silently ignored.Adding a small technical note based on the current code path.
From what I can see, plugin enablement appears to be intentionally or accidentally user-config-only today because the plugin state path goes through:
configured_plugins_from_stack(...)project_effective_user_config(...)config_layer_stack.effective_user_config()That means project
.codex/config.tomlis loaded for other settings, but project-level[plugins.*]entries never enter the plugin enablement map used bycodex plugin listor plugin loading.A narrow MVP might be to support only trusted-project overrides for already-installed plugins first, without solving repo-scoped marketplace installation yet:
[plugins."name@marketplace"].enabled;codex plugin listand runtime loading use the same merged state;That would not solve the full repo-scoped marketplace story, but it would address the most painful part: letting a trusted repository reduce or opt into the active plugin surface without forcing global enablement across every repo on the machine.
Reproduced on Codex CLI 0.144.1 on macOS arm64 with a concrete repo-local plugin bundle.
The repository contains:
Both marketplace entries use:
Codex successfully discovers the repo marketplace.
/pluginsshows aStarRocks Oncallmarketplace with both plugins, but reportsInstalled 0 of 2; each plugin is labeledAdmin assignedand still requires Enter to install. This is consistent with #28924, but the important additional constraint here is installation scope: manually installing writes plugin state/cache under the activeCODEX_HOME(normally~/.codex), while this repository must not modify developer-global Codex configuration.The gap is particularly surprising because every component bundled by these plugins already has a project-scoped native loading path:
AGENTS.override.md.codex/skills/.codex/config.toml.codex/hooks.jsonplus existing hook trustPackaging the same components into a plugin removes the ability to load them at project scope. The current workarounds are either global installation, a separate
CODEX_HOMEplus launcher wrapper, or expanding the plugin back into four separate repo registrations.Requested behavior: support one of these equivalent project-scoped flows:
or automatically materialize local repo plugins marked
INSTALLED_BY_DEFAULTinto project-scoped capabilities, storing any state/cache under the repo rather than~/.codex. Existing project and hook trust checks can remain in place.Acceptance criterion for our use case: