avatarOverlay repeatedly requests app/list over Remote Control, transferring ~58 GB while idle

Open 💬 0 comments Opened Aug 7, 2026 by lukeliu123

What version of the Codex App are you using (From “About Codex” dialog)?

ChatGPT desktop 26.730.61639 (build 6234); bundled codex-cli 0.147.0-alpha.1.2. Remote Mac app-server: 0.145.0-alpha.27.

What subscription do you have?

ChatGPT Plus (personal)

What platform is your computer?

Darwin 27.0.0 arm64 arm (controller and remote host are Apple Silicon Macs)

What issue are you seeing?

Summary

Two paired Macs transferred approximately 58 GB through the ChatGPT/Codex Remote Control relay while no remote task was being used. The controller downloaded 57.7 GB and uploaded 296 MB; the remote host uploaded 56.4 GB and downloaded 1.98 GB during the same one-day window. The traffic direction and timing matched on both devices.

The traffic was carried by the controller-side Remote Control WebSocket to https://chatgpt.com/backend-api/codex/remote/control/client (via Cloudflare), not by a direct LAN file-sharing connection.

Key observations

  • The remote host ran app-server 0.145.0-alpha.27, while the controller bundled 0.147.0-alpha.1.2.
  • The remote server rejected app/installed with -32600 Invalid request: unknown variant app/installed.
  • The desktop client repeatedly fell back to app/list.
  • Across the inspected logs, about 9,584 anomalous app/list requests and 9,585 app/installed requests originated from webContentsId=2 (rendererWindowAppearance=avatarOverlay). The primary window produced only 3 and 18 respectively.
  • The avatar overlay was hidden: rendererWindowVisible=false and the persisted overlay-open state was false.
  • The logs also contained 208 sequence-gap detections, 180 pong timeouts, and 51 queued-request expirations.
  • One log rotation contained 1,728 app/list calls and about 1,691 unsupported app/installed failures.
  • The remote plugin catalog contained 2,242 entries and occupied about 9.97 MB locally. This is included only to show metadata scale; it is not claimed to be the exact byte size of every encrypted response.

This appears to be a compatibility fallback/reconnection loop involving Apps metadata and the prewarmed hidden avatarOverlay renderer. The pet artwork or animation itself is not proven to be the root cause; the overlay renderer is the observed request origin.

What steps can reproduce the bug?

  1. Install ChatGPT/Codex Desktop on two Apple Silicon Macs and sign in to the same account.
  2. Enable Remote Control on one Mac and pair the other Mac as a controller.
  3. Use a newer controller app-server/client with an older remote app-server (observed: controller 0.147.0-alpha.1.2, remote 0.145.0-alpha.27).
  4. Leave both apps online and allow the controller to auto-connect. No remote task or remote thread needs to be open.
  5. The desktop pet may be tucked away; the avatar overlay renderer remains prewarmed and hidden.
  6. Inspect desktop logs and network counters. In the affected run, the hidden avatarOverlay repeatedly sent app/installed; the unsupported response triggered repeated app/list fallback calls, stream sequence gaps, pong timeouts, and reconnects.

The issue was intermittent and occurred during an overnight idle period. Restarting/updating the apps and refreshing the connection stopped the loop in the current run, so the version mismatch or stale relay state may be required.

What is the expected behavior?

An idle paired Remote Control connection should exchange only small keepalive/state updates, not tens of gigabytes.

An unsupported app/installed method should cause one bounded compatibility fallback to app/list, followed by caching/backoff. A hidden/prewarmed avatar overlay should not continuously refetch the full Apps catalog or amplify relay reconnections.

Additional information

Possibly related:

  • #32771 — Remote Control task loading blocks on Apps/connector initialization
  • #32241 — macOS Codex App repeatedly resets healthy Remote Control streams with sequence gaps
  • #24397 — startup blocks on MCP/App connector initialization

Local inspection of the shipped desktop bundle showed that unsupported app/installed / app/read calls fall back to app/list. The normal Apps query cache is configured on a minutes-scale interval, so per-second full-list polling does not appear intentional.

No raw logs, screenshots, device names, IP addresses, account IDs, environment IDs, conversation IDs, local paths, tokens, or WebSocket session identifiers are attached for privacy. Sanitized excerpts can be provided if maintainers specify the minimum fields needed.

View original on GitHub ↗