Remote SSH + Apps causes sustained ~4 MB/s outbound traffic from app-server; disabling `apps` stops it
Summary
Codex Desktop Remote SSH can generate sustained outbound SSH traffic of roughly 4 MB/s from the remote codex app-server proxy when the apps feature is enabled.
This is reproducible on two independent Linux SSH hosts. Disabling apps on the remote host immediately stops the traffic.
This is not normal project file transfer: strace shows the proxy receiving and forwarding large app/list / App Directory payloads containing app metadata (names, descriptions, install URLs, icon assets, etc.).
The issue still reproduces with remote Codex CLI/runtime 0.147.0.
Impact
Observed cumulative SSH traffic exceeded 240 GB over roughly a day of normal Remote SSH use.
At the reproduced steady state:
apps=true: about 119–120 MB per 30 seconds (~4 MB/s, ~14 GB/hour per remote)apps=false: traffic drops to effectively zero; one measurement was 12 bytes per 30 seconds
With multiple remote projects/hosts open, this can multiply quickly.
Environment
- Client: Codex Desktop on macOS
- Remote: Linux x86_64 over Codex Desktop Remote SSH
- Confirmed remote runtime:
codex-cli 0.147.0 - Earlier reproduction also occurred with remote runtime
0.144.1 - Reproduced on two separate Linux machines/projects
Reproduction
- Configure a Codex Desktop Remote SSH host.
- On the remote host, enable Apps:
codex features enable apps
- Restart/reopen the Remote Project so a new
codex app-server proxystarts. - Measure the proxy's stdout character count:
PID="$(pgrep -n -f 'codex app-server proxy')"
R1=$(awk '/^wchar:/{print $2}' /proc/$PID/io)
sleep 30
R2=$(awk '/^wchar:/{print $2}' /proc/$PID/io)
echo "$((R2-R1)) bytes"
Observed examples:
125002448 bytes / 30s (~119 MB)
126731714 bytes / 30s (~120 MB)
127639680 bytes / 30s (~121 MB)
- Disable Apps on the same remote:
codex features disable apps
- Restart/reopen the Remote Project and repeat the measurement.
Observed:
12 bytes / 30s
The SSH traffic also visibly drops immediately after disabling Apps.
strace evidence
A 10-second sample of codex app-server proxy while the issue was active showed:
client read(0): 19
client sendto(10): 18
server recvfrom(10): 5132
stdout write(1): 5132
recv_MB=9.33
stdout_MB=7.58
send_MB=0.00
The server response payload contained a large sequence of App Directory entries, including fields such as:
name
description
logoUrl
iconAssets
distributionChannel
appMetadata
installUrl
isAccessible
isEnabled
and many unrelated public directory apps (travel, productivity, developer tools, etc.). This strongly suggests the traffic is the global merged App Directory/catalog being pushed over the Remote SSH app-server connection, rather than source files or Git state.
Earlier sampling also showed the proxy writing ~49 MB in 10 seconds while /proc/<pid>/io reported zero disk reads/writes, further ruling out repeated project filesystem scanning as the primary source.
Cross-host A/B result
Host A:
apps=true -> ~119 MB / 30s
apps=false -> ~0
Host B:
apps=true -> ~120 MB / 30s
apps=false -> SSH traffic immediately drops
This makes the issue unlikely to be specific to a repository, Git root, runtime data, file count, or one Linux host/kernel.
Expected behavior
Remote SSH should not continuously retransmit the complete Apps/App Directory catalog at multi-MB/s while idle.
app/list pagination and/or app/list/updated notifications should avoid repeatedly sending the full merged directory, or the Desktop client should deduplicate/throttle catalog refreshes and updates.
Workaround
codex features disable apps
This resolves the bandwidth issue, but disables Apps/Connector integration on that remote host, so it is not an ideal long-term workaround.
Related issue
Possibly related to #34901, which reports that app/list/updated can deliver the full 2,402-app merged catalog despite a paginated app/list request. That issue focuses on a plugin-detail rendering/refetch problem; this report focuses specifically on Remote SSH sustained network transfer / bandwidth usage, reproducible across two Linux remotes and eliminated by apps=false.
Sanitized logs and additional strace samples can be provided if useful.
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I can independently reproduce this on Windows Codex Desktop + Linux Remote SSH, and disabling
appsfixes it here as well.Environment:
26.803.10989.0Observed behavior while the Remote SSH project was open but completely idle:
That is about 4.05 GB in 26 minutes (~9.3 GB/hour) with no active task.
Windows Resource Monitor also showed the SSH process used by Codex Desktop's remote app-server connection sustaining multi-MB/s traffic. The process command line included:
As a control, after fully quitting Codex Desktop while leaving the remote Codex CLI and the SSH reverse proxy running, traffic dropped substantially:
That is ~0.39 GB in 29 minutes.
I then ran:
After restarting the Remote SSH app-server/proxy, I measured
/proc/<proxy-pid>/iousing the same 30-secondwcharmethod described above.Three consecutive idle measurements were:
Additional end-to-end A/B confirmation: after disabling
apps, restarting Codex Desktop, and reopening the same Remote SSH project, I left it completely idle:So only ~0.01 GB (~10 MB) total traffic was added over 22 minutes, with no measurable upload increase. Compared with ~4.05 GB over 26 minutes before disabling
apps, this is roughly a 99.7% reduction in idle traffic.So this appears to be the same issue on Windows as well: Remote SSH +
apps=truecauses sustained idle app-server traffic, andapps=falsereduces it to effectively zero.This suggests the bug is not specific to the macOS Desktop client.
Independent confirmation from a third Linux Remote SSH host, including a recurrence on the newer remote runtime
codex-cli 0.149.1.Observed remote runtime versions:
0.144.10.147.00.149.1Strongest synchronized sample during a burst:
wchar: 7,395,569 B/sFour monitored episodes on one day produced about 83.4 GiB of outbound traffic. After upgrading, a later
0.149.1recurrence reached 6,624,990 B/s for two consecutive minute samples and then self-cleared.The controls also match this report:
SIGTERMonly to the proxy while Desktop remains open is not durable—the client creates a replacement proxy and the high output rate can resume;On
0.149.1,codex features listreportsapps stable true. I have not independently captured the protocol payload or run theapps=true/apps=falseA/B test on this host, so I cannot claim the app catalog is proven as the local root cause. The evidence is consistent with the diagnosis in this issue.The exact
rust-v0.149.1source also still sends the complete merged vector inapp/list/updated, while only the direct response is paginated:https://github.com/openai/codex/blob/rust-v0.149.1/codex-rs/app-server/src/request_processors/apps_processor.rs
No customer content, endpoints, credentials, or raw payloads were collected. I can provide additional aggregate counters or run a privacy-safe method-name/payload-size capture if maintainers want a specific diagnostic.