macOS Desktop hides Remote setup when ChatGPT login coexists with an env_key custom provider
Summary
On macOS ChatGPT/Codex Desktop, a ChatGPT-managed login can coexist with a custom model provider authenticated through env_key: CLI and Desktop model requests use the custom provider successfully, while codex login status reports Logged in using ChatGPT.
These credentials serve two separate paths:
- Remote pairing, device registration, push, and other ChatGPT control-plane requests should use the stored ChatGPT OAuth session.
- Model inference, including inference started from a Remote client and executed on the Mac host, should use the host's configured custom provider and its
env_keycredential.
The mobile client and ChatGPT Remote control plane do not need access to the custom-provider API key. Remote should relay the task to the host, where the existing provider configuration and environment are available.
However, Desktop Remote setup is hidden because the Desktop shell does not attach the stored ChatGPT access token to the Remote control-plane authorization request. The same ChatGPT account and workspace on Android shows Remote and can open the QR scanner, but the Mac has no Set up Remote sidebar entry and no Control this Mac section under Settings > Connections. Settings search finds Remote control, but selecting it leaves the SSH-only Connections page visible.
The Desktop logs show that the Remote gate is enabled but its ChatGPT authorization check fails before any Remote-triggered model inference occurs:
[remote-connections/window-context] refresh_local_remote_control_client_id_failed
errorMessage="Sign in to ChatGPT to check remote control authorization."
[remote-connections/gate-bridge] sync_failed
errorMessage="Sign in to ChatGPT to check remote control authorization."
remoteControlConnectionsEnabled=true
[electron-fetch-wrapper] desktop_fetch_auth_401
hadToken=false
skipRetryReason=no_token_attached
target="GET https://chatgpt.com/backend-api/settings/user"
Steps to reproduce
- Sign in through the managed ChatGPT browser flow.
- Verify the bundled CLI reports:
``text``
Logged in using ChatGPT
- Configure an OpenAI-compatible custom Responses provider with a separate key:
```toml
model = "gpt-5.6-sol"
model_provider = "custom_provider"
[model_providers.custom_provider]
name = "Custom Provider"
base_url = "https://redacted.example/v1"
wire_api = "responses"
env_key = "CUSTOM_PROVIDER_API_KEY"
supports_websockets = false
```
- Restart ChatGPT Desktop.
- Confirm local CLI and Desktop model requests succeed through the custom provider.
- Open ChatGPT on Android with the same ChatGPT account/workspace and confirm Remote is available.
- On the Mac, inspect the sidebar and Settings > Connections.
- Search Settings for
remote; observe that Remote control is indexed, but its host controls are not rendered.
Expected behavior
ChatGPT control-plane authentication and custom-provider model authentication should remain independent:
- The stored ChatGPT OAuth session should authenticate Remote pairing, device registration, push notifications, plugins, and other ChatGPT-backed Desktop features.
CUSTOM_PROVIDER_API_KEYshould authenticate model requests sent by the Mac host to the custom provider.- A model request initiated from Mobile Remote should be relayed to the Mac host and use the same host-side
model_providerandenv_keyconfiguration as a local CLI or Desktop request. - The Mac should show Set up Remote / Control this Mac and allow QR pairing.
If Remote with an env_key custom provider is intentionally unsupported, Desktop should show a clear compatibility message and the limitation should be documented instead of treating the existing ChatGPT session as signed out.
Actual behavior
- Custom-provider inference works in the local CLI and Desktop app.
- ChatGPT login status is present.
- Android Remote is available for the same account/workspace.
- Mac Remote setup is absent.
- Desktop reports
remoteControlConnectionsEnabled=true, but a ChatGPT control-plane request hashadToken=false. - The failure occurs during Remote authorization/setup, before the system can test Remote-triggered inference through the host's custom provider.
This suggests that the Desktop Remote setup or eligibility path does not retrieve the separately stored managed ChatGPT OAuth token when the active model provider uses env_key. It does not indicate that Remote should use the custom-provider API key for its control-plane requests.
Environment
- macOS:
26.5.2(25F84) - ChatGPT Desktop:
26.727.51351(build6119) - Bundle ID:
com.openai.codex - Bundled Codex CLI:
0.146.0-alpha.9.2 - Login: ChatGPT managed OAuth
- Model provider: custom Responses provider with
env_key
Related issues
- #22466 reports the same general separation problem for plugins: ChatGPT login exists, custom-provider inference works, but a ChatGPT-backed Desktop feature becomes unavailable.
- #24780 shows that Mobile Remote pairing and execution with an
env_keycustom provider worked in Desktop26.519.81530, although custom-provider tasks later disappeared from the mobile list. The current report fails earlier: the host setup UI is hidden and pairing cannot start.
Official documentation
- Remote connections says setup starts from Set up Remote on a Desktop host signed into the same ChatGPT account/workspace, that Remote uses the host's credentials and local setup, and that the connected host provides the environment used by remote work.
- Advanced Configuration: Custom model providers documents
env_keyas the provider-specific authentication mechanism. - Authentication documents ChatGPT managed login for Desktop and CLI.
No API key, provider URL, account identifier, OAuth token, or private local path is included in this report.