Codex Desktop ignores project .codex/config.toml MCP server (Serena) and only loads ~/.codex/config.toml
What version of Codex CLI is running?
codex-cli 0.104.0
What subscription do you have?
Logged in using ChatGPT (plan tier unknown).
Which model were you using?
gpt-5.3-codex
What platform is your computer?
macOS v26.3
What terminal emulator and version are you using (if applicable)?
Codex Desktop app (internal terminal context). In-command env shows TERM=dumb and empty TERM_PROGRAM.
What issue are you seeing?
Project-scoped MCP config is ignored for this thread/workspace.
In /Users/prb/sablier/new-ui, .codex/config.toml contains a valid Serena MCP server entry:
[mcp_servers.serena]command = "uvx"args = ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "codex", "--project-from-cwd"]
But inside the Codex Desktop thread runtime, Serena is missing:
- available MCP resources/templates are empty for Serena tools
- Serena tools (
find_symbol,rename_symbol, etc.) are not exposed codex mcp listonly shows servers from~/.codex/config.tomlcodex mcp get serenareturns:No MCP server named 'serena' found.
The Serena command itself works when run manually, so startup command/config appears valid.
What steps can reproduce the bug?
- In a project, configure Serena only in project-local
.codex/config.toml(not in~/.codex/config.toml). - Open that project in Codex Desktop.
- Start a thread and inspect MCP availability.
- Run
codex mcp listandcodex mcp get serenafrom the same workspace. - Observe that only user-level servers are loaded and Serena is absent.
- Run Serena manually:
uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context codex --project-from-cwd
- Observe manual startup succeeds.
Thread ID: 019c9ffc-da8e-7500-8768-c516825ce9ce
What is the expected behavior?
Project-scoped .codex/config.toml should be merged into runtime MCP config (for trusted projects), so Serena should be available in the Desktop thread/toolset.
Additional information
Possibly related to MCP visibility inconsistency issues in Desktop (for example #10499), but this repro is specifically about project-local config not being loaded while user-global config is.
19 Comments
the same
@Primo83 please upvote the issue, this helps with visibility (this is how OpenAI prioritizes issues).
“Hi! When you say ‘upvote the issue’, do you mean clicking the 👍 reaction on the issue?”
@Primo83 yes
@PaulRBerg, are other config settings in your project-scoped config file being honored, or is this specific to the MCP configuration? Are you sure this is a trusted project? As you know (from your bug report), Codex does not load project-scoped configs for untrusted projects.
@etraut-openai I am running Codex with:
So I don't think I am ever prompted about trusted/untrusted projects. I don't remember being asked that recently when I use Codex in a new directory.
the MCP was the only thing in my local config. I will test later and let you know
I can reproduce something very similar on Windows 11.
Using clangd-mcp (tool-only MCP):
So this may be broader than Desktop alone: project-scoped MCP appears to be recognized by CLI, but not by Desktop / Cursor extension.
I discovered that using an absolute path to the project in the
cwdparameter of the project’s.codex/config.tomlmakes Codex Desktop work with the MCP server. When collaborating, however, everyone has different absolute paths on their machines. Is there a way to work around this?the same
Same here. I confirmed that it's probably similar on Codex Desktop on Windows 11 as well.
Environment:
The project is already marked as trusted in
~/.codex/config.toml, and the MCP server is defined only in the project's.codex/config.toml.Expected behavior:
Codex Desktop should load the project-local MCP server definition for a trusted project.
Actual behavior:
Codex Desktop does not register the server from the project-local config. The server remains unavailable (
unknown MCP server/ not registered).Workaround:
If I move the exact same MCP server definition into
~/.codex/config.tomland restart Codex Desktop, it is detected and works normally.This suggests the problem is with project-scoped MCP config not being applied in Codex Desktop, rather than with a specific server definition.
I fight an hour and then gave up. Finally know whats the issue. I use Windows 11 Pro. really nasty bug! ⚡🤬☠️
please sort this out, it's super annoying
It’s pretty annoying and open bug like this is undermining your ypur credibility. You should focus on own product not producing plugin to Claude Code !!!
I'm also having this issue. When moving the config out to
~/.codex/config.tomlit works fine.Same here, please prioritize.
I'm wondering why there's been no response here. The documented behavior doesn't seem to be working as expected.
Same, here
I added a small packaged demo for the project/user config-scope evidence pattern in
trace-to-skill@0.1.64:It is not a fix. It is meant to help people attach consistent evidence for this exact kind of report: app/CLI/Desktop/extension version, OS/IDE/remote or WSL state, workspace root, effective
CODEX_HOME, user-global versus project.codex/config.toml, redacted MCP section, trust/profile/default-permissions state,codex mcp list,codex mcp get <server>, CLI-versus-Desktop comparison, loaded config path/log lines, whether moving the same server to~/.codex/config.tomlfixes it, and restart/reload/new-conversation behavior.Release: https://github.com/grnbtqdbyx-create/trace-to-skill/releases/tag/v0.1.64
Reproduced on Codex Desktop 26.707.72221, macOS 26.5.2 arm64.
This is a project-scoped MCP configuration case and appears to overlap both this issue and #24168.
Bounded reproduction
maincommit (empty tracked/index/untracked diff)..codex/config.tomlwas present in that worktree.approval_mode = "auto".Observed
BROKER_TOOL_MATCHES=0.019f6692-fe87-76c0-b59d-9a6ec4d6ce26.Expected
For a trusted project, Codex Desktop should load the committed project-scoped MCP entry and inject its enabled tools into the fresh task, consistent with the documented project
.codex/config.tomlbehavior.Moving this server into global
~/.codex/config.tomlis not an acceptable workaround for this case: it launches repository-local code fromcwd = ".", so project-scoped trust is the intended security boundary.This looks especially close to the missing
session_meta.dynamic_toolsbehavior reported in #24168.