macOS Desktop hides Remote setup when ChatGPT login coexists with an env_key custom provider

Open 💬 0 comments Opened Aug 4, 2026 by zhyuzhyu

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_key credential.

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

  1. Sign in through the managed ChatGPT browser flow.
  2. Verify the bundled CLI reports:

``text
Logged in using ChatGPT
``

  1. 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
```

  1. Restart ChatGPT Desktop.
  2. Confirm local CLI and Desktop model requests succeed through the custom provider.
  3. Open ChatGPT on Android with the same ChatGPT account/workspace and confirm Remote is available.
  4. On the Mac, inspect the sidebar and Settings > Connections.
  5. 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_KEY should 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_provider and env_key configuration 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 has hadToken=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 (build 6119)
  • 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_key custom provider worked in Desktop 26.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_key as 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.

View original on GitHub ↗