Client or integration
Codex App
Area
Provider adapter
Summary
Routing turns through the Qoder (Global) adapter intermittently streams vendor-CLI agent-layer content into the assistant text instead of model output:
- An MCP "lazy-loading"
<system-reminder> block that lists the local machine's MCP servers (with the mcp_list / mcp_get / mcp_call meta-tool description), including server names from both ~/.qoder/mcp.json and plugin-provided ones.
- Qoder-runtime tool-call markup — three parallel invocations of the shape:
<functions.exec>
<parameter name="cmd">cd <local-repo> && git status</parameter>
</invoke>
Note the mismatched </invoke> closer, consistent with model-emitted text rather than a vendor serializer.
Expected instead: the qoder route is documented as a text/reasoning-only surface (tools disabled, Codex owns tool control); none of this scaffold should reach the client.
Reproduction
- Configure the provider: adapter
qoder, baseUrl https://qoder.com, authMode key (official PAT).
- Route an agent-style Codex turn through it — e.g. ask Codex to check
git status of a few local repos.
- Observe the assistant text in Codex containing the vendor
<system-reminder> ("MCP lazy-loading is active", "## Connected MCP servers") and <functions.exec> markup.
Intermittent — not every turn. Turns that are plain Q&A are less likely to trigger it than agent-style prompts.
Version
2.49.0
Operating system
macOS (Darwin 25.6.0, arm64), Node v24.18.0
Provider and model
qoder
Logs or error output
Screenshots and supporting files
src/adapters/qoder/adapter.ts spawns the vendor CLI with --tools "" --strict-mcp-config --setting-sources "" --max-turns 1 --no-session-persistence, and src/adapters/coding-agent/protocol.ts documents "Codex retains tool control; vendor tools are never invoked". The route is contractually a pure text/reasoning surface.
- The installed
@qoder-ai/qodercli@1.1.48 bundle still contains the MCP reminder builder (## Connected MCP servers, ## Available tools, mcp_list), and the leaked reminder listed the local machine's MCP servers — i.e. the spawned CLI appears to initialize its MCP/agent layer despite those flags.
- The parser maps only
text_delta / thinking_delta / tool_use frames and forwards text deltas verbatim, so vendor scaffold content inside a text frame reaches the client unfiltered.
- Suggested direction: either make the CLI truly run with MCP/tools disabled, or have the adapter detect and sanitize (or fail closed on) vendor scaffold content — system-reminder blocks and framework tool-call markup — in the text channel.
Redacted configuration
{
"providers": {
"qoder": {
"adapter": "qoder",
"baseUrl": "https://qoder.com",
"authMode": "key",
"apiKey": "***"
}
}
}
Checks
Client or integration
Codex App
Area
Provider adapter
Summary
Routing turns through the Qoder (Global) adapter intermittently streams vendor-CLI agent-layer content into the assistant text instead of model output:
<system-reminder>block that lists the local machine's MCP servers (with themcp_list/mcp_get/mcp_callmeta-tool description), including server names from both~/.qoder/mcp.jsonand plugin-provided ones.Note the mismatched
</invoke>closer, consistent with model-emitted text rather than a vendor serializer.Expected instead: the qoder route is documented as a text/reasoning-only surface (tools disabled, Codex owns tool control); none of this scaffold should reach the client.
Reproduction
qoder, baseUrlhttps://qoder.com, authModekey(official PAT).git statusof a few local repos.<system-reminder>("MCP lazy-loading is active", "## Connected MCP servers") and<functions.exec>markup.Intermittent — not every turn. Turns that are plain Q&A are less likely to trigger it than agent-style prompts.
Version
2.49.0
Operating system
macOS (Darwin 25.6.0, arm64), Node v24.18.0
Provider and model
qoder
Logs or error output
Screenshots and supporting files
src/adapters/qoder/adapter.tsspawns the vendor CLI with--tools "" --strict-mcp-config --setting-sources "" --max-turns 1 --no-session-persistence, andsrc/adapters/coding-agent/protocol.tsdocuments "Codex retains tool control; vendor tools are never invoked". The route is contractually a pure text/reasoning surface.@qoder-ai/qodercli@1.1.48bundle still contains the MCP reminder builder (## Connected MCP servers,## Available tools,mcp_list), and the leaked reminder listed the local machine's MCP servers — i.e. the spawned CLI appears to initialize its MCP/agent layer despite those flags.text_delta/thinking_delta/tool_useframes and forwards text deltas verbatim, so vendor scaffold content inside a text frame reaches the client unfiltered.Redacted configuration
{ "providers": { "qoder": { "adapter": "qoder", "baseUrl": "https://qoder.com", "authMode": "key", "apiKey": "***" } } }Checks