Adobe Photoshop app connector returns FORBIDDEN in Codex Desktop while other codex_apps connectors work

Open 💬 2 comments Opened Jun 12, 2026 by kasanuowa

What issue are you seeing?

Adobe Photoshop appears as an available ChatGPT App connector in Codex Desktop, and the ChatGPT web app page for the same connector is authorized/usable, but calling any Photoshop connector tool from Codex Desktop returns:

Error code: FORBIDDEN; Error: McpServerError: Forbidden

This does not look like a global codex_apps startup or network failure in this environment, because another connector in the same codex_apps surface works in the same Codex Desktop session.

Environment

  • Codex Desktop app: 26.609.30741 (CFBundleVersion=3808)
  • Bundled Codex CLI: codex-cli 0.140.0-alpha.2
  • Platform: macOS 26.5.1 (25F80), arm64
  • Auth mode: ChatGPT login (codex login status reports Logged in using ChatGPT)
  • Subscription: ChatGPT Pro
  • Proxy environment: HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, NO_PROXY are configured in ~/.codex/.env and also exported via launchctl setenv; Codex was fully restarted afterward.

Reproduction steps

  1. Open the Adobe Photoshop ChatGPT App page:<br>https://chatgpt.com/apps/adobe-photoshop/connector_69312da8e4dc81919370cb86fd172b6c
  2. Confirm the web page is usable/authorized. In my browser it shows the primary action as "Start chat" / 开始聊天, not an install/connect prompt.
  3. Restart Codex Desktop after proxy environment variables are set for GUI processes.
  4. In a Codex Desktop thread, trigger discovery for the Adobe Photoshop connector tools.
  5. Call a read-only Photoshop tool:
mcp__codex_apps__adobe_photoshop._getoptionsforadjustments({})

Actual behavior

The tool call returns:

Error code: FORBIDDEN; Error: McpServerError: Forbidden

I also tried a conservative cache bust by moving these runtime cache files aside and rediscovering tools:

~/.codex/cache/codex_app_directory/*.json
~/.codex/cache/codex_apps_tools/*.json
~/.codex/cache/codex_apps_server_info/*.json

After rediscovery, the Photoshop tool definitions are still exposed, but the same read-only tool call still returns FORBIDDEN.

Expected behavior

If the Adobe Photoshop ChatGPT App is authorized and visible in Codex Desktop tool discovery, Codex should either:

  • invoke the Photoshop connector successfully, or
  • provide a clearer message explaining the missing entitlement/auth/workspace condition for this specific connector.

Control checks / why this seems connector-specific

In the same Codex Desktop session, the GitHub connector works:

mcp__codex_apps__github._list_installed_accounts({})

returns my installed GitHub account successfully.

Network and auth checks also look healthy:

  • curl -I https://chatgpt.com/backend-api/wham/apps through the configured proxy reaches the endpoint and returns 405 Method Not Allowed, which is expected for HEAD.
  • Direct no-proxy access times out in this environment, so the proxy path is required.
  • codex doctor reports ChatGPT auth and network/WebSocket reachability as OK after the GUI proxy environment was configured.

This makes the current failure look narrower than the broader codex_apps initialization/Cloudflare/proxy issues: codex_apps can load and at least one other connector can call successfully, while the Adobe Photoshop connector specifically returns McpServerError: Forbidden.

Related issues that look adjacent but not identical

  • openai/codex#16550: codex_apps MCP startup fails on wham/apps even when proxied endpoint is reachable
  • openai/codex#24785: Codex Desktop codex_apps MCP handshake times out while direct wham/apps calls succeed
  • openai/codex#19070: MCP/connectors discovery fails with 403 Forbidden Cloudflare challenge despite successful ChatGPT login
  • openai/codex#19284: long-lived ChatGPT-auth CLI sessions can stall on codex_apps
  • openai/codex#16360: codex_apps bootstrap fails on SOCKS-only ALL_PROXY

In this case, the broader apps surface appears live enough for GitHub, but Photoshop itself returns FORBIDDEN.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗