[BUG] Codex MCP configuration includes an unsupported id field
Maintainers usually reply within 2 days
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 82/100
Research direction
Start in src/apm_cli/adapters/client/codex.py and trace the stdio and HTTP MCP configuration paths plus their writer. Reproduce with the provided apm.yml and apm install --only mcp, then validate with codex app-server --strict-config --stdio. Done means generated .codex/config.toml contains no unsupported id field and passes strict validation.
Written by the indexing model from the issue text.
Description
Describe the bug
APM generates an id field in Codex MCP server entries. Codex CLI 0.157.1 does not recognize that field: normal configuration loading reports that it is ignored, and strict configuration validation rejects it.
I observed this with APM 0.29.0 in a project containing both stdio and HTTP MCP servers. A separate minimal HTTP configuration also produces id = "".
To Reproduce
-
In a project trusted by Codex, create this
apm.yml:name: codex-id-repro version: 1.0.0 targets: - codex dependencies: mcp: - name: microsoft-learn registry: false transport: http url: https://learn.microsoft.com/api/mcp -
Run
apm install --only mcp. -
Inspect
.codex/config.toml. APM 0.29.0 generates:[mcp_servers.microsoft-learn] url = "https://learn.microsoft.com/api/mcp" id = "" -
Start Codex in that trusted project, or run
codex app-server --strict-config --stdioto validate the configuration. Project trust matters because Codex skips project-local configuration in untrusted directories.
Expected behavior
APM-generated Codex MCP configuration is accepted without unrecognized-setting warnings or strict-validation errors.
Environment
- OS: Windows 11, build 26200, x64
- APM: 0.29.0, prebuilt executable installed through mise
- Codex CLI: 0.157.1
- Python: not separately used to run APM; this reproduction uses the prebuilt executable
Logs
The original project reported these warnings, among others:
project (.codex/config.toml): `mcp_servers.binlog.id` is ignored.
project (.codex/config.toml): `mcp_servers.context7.id` is ignored.
project (.codex/config.toml): `mcp_servers.microsoft-learn.id` is ignored.
Strict validation of that project failed at its first server entry:
Error: <project>\.codex\config.toml:4:1: unknown configuration field `mcp_servers.playwright.id`
Paths above are shortened. No credentials are included.
Additional context
The runtime reproduction is on APM 0.29.0. I also inspected the released 0.32.0 Codex adapter: its stdio and HTTP configuration paths still include id, and the writer serializes those entries. I have not run the reproduction with 0.32.0.
The Codex configuration schema does not list id as an MCP server setting. The unsupported field is generated by APM; it is not present in the manifest above.
- Dominant language
- Python
- Stars
- 4k
- Forks
- 387
- Avg merge
- 4d 13h
- Merged PRs (30d)
- 50
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/apm
-
type/automation type/performance
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 2 days
-
status/declined type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
microsoft/apm#3169 · 2 comments ·
Maintainers usually reply within 2 days
-
[BUG] APM 0.33.0: apm update fails to integrate Azure Skills because frozen hook metadata is not JSON serializablePossibly taken @MohammedAlkindi claimed this 7 days ago. Openstatus/accepted type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
microsoft/apm#3167 · 2 comments ·
Maintainers usually reply within 2 days
-
[BUG] User-scope stale MCP cleanup ignores `CLAUDE_CONFIG_DIR`: removed servers stay configuredPossibly taken @danielmeppiel claimed this 14 days ago. Openarea/mcp-config status/accepted triage/recommended type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
microsoft/apm#3127 · 3 comments · 1 assignee ·
Maintainers usually reply within 2 days
-
area/multi-target status/accepted theme/portability triage/recommended type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
microsoft/apm#3067 · 2 comments ·
Maintainers usually reply within 2 days
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
noontide-co/mainbranch#1211 · 1 comment ·
Maintainers usually reply within 1 day
-
[1.x Bug] run-operation --sql reports success but rolls back writes on transaction-capable adaptersOpentriage
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
dbt-labs/dbt#16784 · 1 comment ·
Maintainers usually reply within 1 day
-
bug needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
bug settings ui
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
DewaldOosthuizen/py-tray-command-launcher#162 ·
Maintainers usually reply within 1 day
-
run_all sleeps after the final job despite documenting delays between jobsPossibly taken @Gambit-Checkmate claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 74/100