Skip to content

[Bug]: Provider-table form hides openai-tagged threads from the ChatGPT mobile remote thread list (follow-up to #11) #5848

Description

@practical-tools-lab

Client or integration

Codex App

Area

Proxy and routing

Summary

Follow-up to #11 (the maintainer asked for a new issue if history/sidebar visibility problems remain). With the provider-table routing form, the ChatGPT mobile app's Codex remote thread list hides every thread tagged model_provider = "openai", even though the same threads are listed in Codex Desktop and are served by the same local proxy.

Cause, measured against the local remote-control daemon (codex app-server --remote-control, Codex 0.157.0) over its control socket:

thread/list call Result
no modelProviders (what the mobile remote sends) 47 threads, all opencodex
modelProviders: [] 100 threads = 47 opencodex + 53 openai

So with no filter, app-server returns only the config.toml root model_provider, which ocx sets to opencodex in the provider-table form (codexClientCompaction=true here).

The openai tags are not legacy-only. Ephemeral thread/start calls without modelProvider against the same daemon were tagged opencodex for 5 different models, but threads created by clients keep getting openai: in this state DB, Desktop-created user threads are 85 openai / 33 opencodex, and mobile-created ones are 8 openai / 2 opencodex. From the user's side, sessions opened by hand "randomly" disappear from the phone while being visible on Desktop.

Both tags reach the same proxy here (the [model_providers.opencodex] table and the root openai_base_url both point at http://127.0.0.1:10100/v1, requires_openai_auth = true), so the difference is list visibility only.

Reproduction

  1. Provider-table form: root model_provider = "opencodex" in ~/.codex/config.toml (here via codexClientCompaction=true, codexDesktopAuthless=false, syncResumeHistory=false).
  2. Pair the ChatGPT mobile app with the Mac's Codex remote control.
  3. Create threads from Codex Desktop and from the mobile app; some are stored with model_provider = "openai".
  4. Open the thread list in the mobile app: the openai-tagged threads are missing; Desktop still shows them.
  5. Confirm with thread/list over the daemon socket: no filter -> only opencodex; modelProviders: [] -> both.

Version

opencodex 2.61.0 running (the 2.65.0 tarball has byte-identical src/codex/inject/routing-target.ts); Codex CLI/app-server 0.157.0; Codex Desktop 26.915.31945; ChatGPT Android app (remote client codex_chatgpt_android_remote).

Operating system

macOS 26.5.2 (arm64) host; Android phone as remote client

Provider and model

Any; observed with openai/gpt-6-luna, opencode-go/deepseek-v4.1-flash, anthropic/claude-haiku-4-5 threads

Logs or error output

No error. The threads are silently absent from the mobile list.

Screenshots and supporting files

No response

Redacted configuration

model_provider = "opencodex"
openai_base_url = "http://127.0.0.1:10100/v1"

[model_providers.opencodex]
name = "OpenCodex Proxy"
base_url = "http://127.0.0.1:10100/v1"
wire_api = "responses"
requires_openai_auth = true

What would help

Any one of these would remove the trap:

  • In the provider-table form, keep user-facing threads (source vscode/cli) tagged with the active proxy provider id, e.g. as an opt-in part of history sync, since clients keep creating openai-tagged threads after injection.
  • Document this as a known limitation of the provider-table form next to the Desktop label note, with the modelProviders: [] evidence.
  • If it belongs upstream (app-server's default thread/list provider filter, or the mobile client not sending modelProviders), say so and I will file it with openai/codex.

Local workaround in use: a periodic retag of openai -> opencodex for recent vscode/cli threads. Upsert writes the in-memory provider back while a thread is loaded, so the retag has to repeat.

Checks

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingproxyHTTP proxy, routing, reverse-proxy / management auth

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions