Client or integration
Codex App
Area
Provider adapter
Summary
OpenCodex 2.17.0 can leak an undeclared top-level apply_patch function call through the native OpenAI Responses passthrough path when using OpenCode Go. Codex App then displays aborted, while the target file is unchanged.
Expected behavior: an undeclared routed tool should fail closed with an explicit compatibility error before reaching the Codex executor. The supported editing path should remain exec -> tools.apply_patch(...).
This is related to #1544, #1576, and #1623, but the relevant distinction is that this reproduction uses the openai-responses adapter path.
Reproduction
- Start OpenCodex on port 10100.
- Use
exec -> tools.apply_patch(...) to create a temporary file containing v1.
- Invoke top-level
apply_patch with a patch changing v1 to v2.
- Observe that Codex App displays
aborted.
- Check the file: it remains
v1; no content or mtime change is observed.
- Run the equivalent patch through
exec -> tools.apply_patch(...):
- an intentionally incorrect expected line returns a real
apply_patch verification failed error;
- the correct
v1 -> v3 patch succeeds.
The request-visible tool catalog contained exec, wait, and request_user_input, but no top-level apply_patch schema. The session nevertheless received a function_call named apply_patch.
Version
OpenCodex 2.17.0
Operating system
macOS 27.0, Apple Silicon
Provider and model
Provider: opencode-go
Model: deepseek-v4-flash
At the time of reproduction, the provider default was openai-chat, but this model had an explicit openai-responses adapter override.
Logs or error output
Observed Codex result:
aborted
Session observations:
- top-level call was recorded as
function_call(name=apply_patch);
- no corresponding
custom_tool_call_output was emitted;
- the file was not modified;
- OpenCode Go usage records were HTTP 200;
- no upstream
aborted, OpenCodex response.failed, approval denial, or sandbox denial was observed.
Screenshots and supporting files
No screenshots attached. Reproduction artifacts were written only under /tmp.
Redacted configuration
{
"providers": {
"opencode-go": {
"adapter": "openai-chat",
"baseUrl": "https://opencode.ai/zen/go/v1",
"modelAdapters": {
"deepseek-v4-flash": "openai-responses"
}
}
}
}
No credentials, tokens, account identifiers, or personal data are included.
Checks
Client or integration
Codex App
Area
Provider adapter
Summary
OpenCodex 2.17.0 can leak an undeclared top-level
apply_patchfunction call through the native OpenAI Responses passthrough path when using OpenCode Go. Codex App then displaysaborted, while the target file is unchanged.Expected behavior: an undeclared routed tool should fail closed with an explicit compatibility error before reaching the Codex executor. The supported editing path should remain
exec -> tools.apply_patch(...).This is related to #1544, #1576, and #1623, but the relevant distinction is that this reproduction uses the
openai-responsesadapter path.Reproduction
exec -> tools.apply_patch(...)to create a temporary file containingv1.apply_patchwith a patch changingv1tov2.aborted.v1; no content or mtime change is observed.exec -> tools.apply_patch(...):apply_patch verification failederror;v1 -> v3patch succeeds.The request-visible tool catalog contained
exec,wait, andrequest_user_input, but no top-levelapply_patchschema. The session nevertheless received afunction_callnamedapply_patch.Version
OpenCodex 2.17.0
Operating system
macOS 27.0, Apple Silicon
Provider and model
Provider:
opencode-goModel:
deepseek-v4-flashAt the time of reproduction, the provider default was
openai-chat, but this model had an explicitopenai-responsesadapter override.Logs or error output
Observed Codex result:
abortedSession observations:
function_call(name=apply_patch);custom_tool_call_outputwas emitted;aborted, OpenCodexresponse.failed, approval denial, or sandbox denial was observed.Screenshots and supporting files
No screenshots attached. Reproduction artifacts were written only under
/tmp.Redacted configuration
{ "providers": { "opencode-go": { "adapter": "openai-chat", "baseUrl": "https://opencode.ai/zen/go/v1", "modelAdapters": { "deepseek-v4-flash": "openai-responses" } } } }No credentials, tokens, account identifiers, or personal data are included.
Checks