Skip to content

[Bug] Reasoning effort selected in Codex Desktop is not propagated to routed DeepSeek and GLM models #1100

Description

@c3right

Client or integration

Codex App

Area

Catalog / models

Summary

When a routed third-party model is selected in Codex Desktop with reasoning effort set to Max, the UI shows Max, but the actual request received by OpenCodex contains no reasoning effort.

The model is routed correctly, but Logs & Debug shows Effort: -, and the raw log contains none of:

  • requestedEffort
  • effectiveEffort
  • reasoningWireField
  • reasoningWireValue

This is reproducible with both DeepSeek and GLM, in direct conversations and in sub-agent paths.

Important nuance: in normal use, both GLM-5.2 Max and DeepSeek V4 Flash Max subjectively appear to have meaningful reasoning depth. This report is therefore about missing propagation/observability and the lack of a verifiable effort guarantee, not a claim that the upstream models definitely run without thinking.

Expected: when Codex Desktop displays Max for a routed model, the inbound Responses request should preserve the selected effort so OpenCodex can map it to the provider wire format and report the effective value.

Actual: the provider/model selection is preserved, but the reasoning effort is absent before the request reaches the provider adapter.

Reproduction

A. Direct DeepSeek conversation

  1. Start OpenCodex and sync routed models into Codex.

  2. Open a new Codex Desktop conversation.

  3. Select deepseek/deepseek-v4-flash.

  4. Select reasoning effort Max.

  5. Send a no-tool prompt such as:

    This is a reasoning effort propagation test.
    Do not call tools. Reply only:
    DIRECT_MAX_PROBE
    
  6. Inspect the request in OpenCodex Logs & Debug.

Observed:

Model: deepseek-v4-flash
Effort: -
Provider: deepseek
Status: 200

The request reports nonzero reasoningOutputTokens, so thinking is enabled, but the selected effort tier cannot be verified.

B. Direct GLM conversation

Provider setup:

  • Custom provider using BigModel.cn Coding Plan
  • Base URL: https://open.bigmodel.cn/api/coding/paas/v4
  • Model: GLM/glm-5.2
  • Adapter: OpenAI-compatible chat

Steps:

  1. Open a new Codex Desktop conversation.
  2. Select GLM/glm-5.2.
  3. Select reasoning effort Max.
  4. Send the same no-tool probe.
  5. Inspect the request in Logs & Debug.

Observed:

Model: glm-5.2
Effort: -
Provider: GLM
Status: 200

Again, no effort-related raw log fields are present.

C. Explicit V1 spawn_agent override

A gpt-5.6-sol Medium parent invoked V1 spawn_agent with:

model = deepseek/deepseek-v4-flash
reasoning_effort = max
fork_context = false

The child was created successfully and routed to DeepSeek without fallback, but the resulting DeepSeek requests again showed Effort: - and no effort-related raw log fields.

D. Custom agent role

A user-level Codex agent role was configured with:

model = "deepseek/deepseek-v4-flash"
model_reasoning_effort = "max"

The role was registered and successfully selected through:

agent_type = deepseek_executor_max
fork_context = false

The role's developer instructions were applied correctly, and the child returned the expected role marker. The model was also correctly routed to DeepSeek, but the request still showed Effort: - with no effort-related raw log fields.

No provider fallback was observed in any reproduction.

Version

@bitkyc08/opencodex@2.10.1

Operating system

Windows 10, build 19045, x64

Provider and model

  • deepseek / deepseek-v4-flash
  • Custom GLM / glm-5.2 using BigModel.cn Coding Plan

Logs or error output

# Direct DeepSeek request
Model: deepseek-v4-flash
Effort: -
Provider: deepseek
Status: 200

# Sanitized raw log excerpt
{
  "model": "deepseek-v4-flash",
  "provider": "deepseek",
  "admissionKind": "loopback",
  "inboundProtocol": "responses",
  "requestedModel": "deepseek/deepseek-v4-flash",
  "resolvedModel": "deepseek-v4-flash",
  "status": 200,
  "routeDecision": {
    "routeKind": "explicit-provider",
    "selected": {
      "provider": "deepseek",
      "model": "deepseek-v4-flash",
      "reason": "explicit-provider-namespace"
    }
  }
}

# Direct GLM request
Model: glm-5.2
Effort: -
Provider: GLM
Status: 200

# Sanitized raw log excerpt
{
  "model": "glm-5.2",
  "provider": "GLM",
  "admissionKind": "loopback",
  "inboundProtocol": "responses",
  "requestedModel": "GLM/glm-5.2",
  "resolvedModel": "glm-5.2",
  "status": 200,
  "routeDecision": {
    "routeKind": "explicit-provider",
    "selected": {
      "provider": "GLM",
      "model": "glm-5.2",
      "reason": "explicit-provider-namespace"
    }
  }
}

# Missing from both request records
requestedEffort
effectiveEffort
reasoningWireField
reasoningWireValue

Screenshots and supporting files

The behavior was reproduced in Codex Desktop and OpenCodex Logs & Debug. Sanitized raw logs are included above. No secrets or complete local paths are included.

Redacted configuration

{
  "opencodexVersion": "2.10.1",
  "client": "Codex Desktop for Windows",
  "subAgentSurface": "v1",
  "providers": {
    "deepseek": {
      "model": "deepseek-v4-flash",
      "adapter": "openai-chat"
    },
    "GLM": {
      "baseUrl": "https://open.bigmodel.cn/api/coding/paas/v4",
      "model": "glm-5.2",
      "adapter": "openai-chat"
    }
  }
}

Checks

  • I searched existing issues and documentation.
  • I removed secrets, tokens, account details, request credentials, and personal data.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcatalogModel catalog, slugs, visibility, routed entriesproviderProvider adapters, OpenAI-compat presets, upstream API quirks

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions