Troubleshooting
This page collects common CCX Desktop issues and resolution steps.
For first-run setup or the full user flow, see CCX Desktop.
First things to check
Disable global proxy and TUN mode
This is the most common first troubleshooting step.
Global proxies and TUN mode (e.g. Clash TUN, Surge enhanced mode, v2rayN TUN) hijack all local network traffic, causing requests between CCX and upstream providers to be misrouted or intercepted.
Symptoms:
- Requests time out or connections are reset
- Unexpected error pages or HTML content is returned
- Upstream channels show unhealthy, but direct curl to upstream works fine
Resolution:
- Disable the system proxy or switch to rule-based mode (PAC / Rule) to avoid global hijacking.
- Disable TUN mode, or add CCX-related addresses to the bypass list.
- Retry the request.
Startup failures
Binary not found
Symptom: Starting the service reports that the CCX binary is missing.
Resolution:
If you are running from source, build the backend first:
bashcd backend-go && make buildConfirm CCX Desktop can locate
ccx-go.If the build output path changed, reopen CCX Desktop and try again.
Port conflict
Symptom: Health check times out after startup, with errors such as connection refused or a port conflict.
Resolution:
Check the process using the port:
bash# macOS / Linux lsof -i :3688 # Windows netstat -ano | findstr :3688Stop the conflicting process or change
PORTin Environment Params, then restart the service.
Health check timeout
Symptom: The backend process starts, but http://localhost:3688/health does not become healthy for a long time.
Possible causes:
- Incorrect
.envvalues - Bad channel configuration
- Slow first-run initialization
Resolution: Review errors in Gateway Monitor or Log Viewer and fix configuration step by step.
Permission denied
Symptom: The error includes permission denied.
Resolution:
# macOS / Linux
chmod +x backend-go/ccx-go
# Windows
Run Desktop as administratorKeys and access
Base URL root vs /v1
- Claude Code: use
http://localhost:3688 - Codex CLI / Codex App: use
http://localhost:3688/v1 - OpenCode: use
http://localhost:3688/v1
This is a common source of mistakes. Always match the Base URL to the client type.
401 Unauthorized
Check in this order:
- The client API key matches CCX
PROXY_ACCESS_KEY - The running CCX Desktop instance was started with the expected
PROXY_ACCESS_KEY - No older environment variable is overriding the current configuration
- You did not enter the upstream provider API key by mistake
Environment overrides prevent config from taking effect
If the client CLI already has these variables set, they may override agent configuration:
ANTHROPIC_API_KEYANTHROPIC_BASE_URLOPENAI_API_KEYOPENAI_BASE_URL
Check them in the terminal:
printenv ANTHROPIC_API_KEY
printenv ANTHROPIC_BASE_URL
printenv OPENAI_API_KEY
printenv OPENAI_BASE_URLIf stale values exist, clear them or test again in a clean shell session.
localhost does not work on Windows
If the client runs inside cmd, PowerShell, WSL, or Docker, localhost may not reach CCX.
Use the Windows host LAN IPv4 address instead, for example:
http://192.168.1.23:3688Keep the client API key set to PROXY_ACCESS_KEY.
Configuration problems
Agent configuration applied but not effective
- Confirm the gateway is running and the port is correct.
- Confirm the target configuration file path matches the client tool.
- Restart the client and send a test prompt.
- If it still fails, remove old environment variables and try again.
Channel added but requests fail
- Confirm the upstream API key is correct.
- Confirm the upstream Base URL is reachable.
- Check whether the model allowlist or model mapping covers the requested model.
- Review detailed errors in Log Viewer or the web UI.
Request does not reach the expected endpoint
Different clients use different request paths:
- Claude Code:
/v1/messages - Codex CLI / Codex App:
/v1/responses - OpenCode:
/v1/chat/completions
If the log path does not match expectations, the client is not connected to CCX in the intended way. Recheck agent configuration and client provider settings.
Quick verify each endpoint with curl
When requests fail or you are unsure whether the CCX path is healthy, test each endpoint directly with curl.
Replace localhost:3688 with your actual address and port, and your-proxy-key with your PROXY_ACCESS_KEY.
Messages (Claude Code)
curl -sS -i "http://localhost:3688/v1/messages" \
-H "x-api-key: your-proxy-key" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 64,
"messages": [{"role": "user", "content": "Reply with exactly: pong"}]
}'Responses (Codex)
curl -sS -i "http://localhost:3688/v1/responses" \
-H "Authorization: Bearer your-proxy-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"input": "Reply with exactly: pong"
}'Chat Completions (OpenCode)
curl -sS -i "http://localhost:3688/v1/chat/completions" \
-H "Authorization: Bearer your-proxy-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"messages": [{"role": "user", "content": "Reply with exactly: pong"}]
}'How to interpret the result:
HTTP/1.1 200 OKwith valid response body → CCX path is healthy, the problem is in client configuration.401→ Check thatPROXY_ACCESS_KEYmatches the client API key.400with model not found → Check channel model mapping.502or connection timeout → Upstream is unreachable, check channel configuration and network.
Auto update issues
macOS still says the app cannot be opened
Official macOS release packages are signed with Apple Developer ID and notarized, so they should open directly under normal conditions.
If macOS still blocks the app, confirm that you downloaded the latest stable release. If the problem persists, open a GitHub Issue with the package version and your macOS version.
Linux AppImage cannot update
Only AppImage supports in-app auto updates. If you installed through deb or rpm packages:
# deb
sudo apt update && sudo apt upgrade ccx-desktop
# rpm
sudo dnf update ccx-desktopUpdate download fails
The GitHub installer build checks and downloads updates from GitHub Releases.
Troubleshooting steps:
- Check network connectivity.
- If you use a proxy, confirm GitHub Releases is reachable.
- If needed, download the update manually from the Releases page.
The Microsoft Store build is updated by the Store. If Store updates fail, retry from the library page or reinstall.
Other issues
Window position or size is not restored
CCX Desktop saves window state to the data directory.
If the saved state becomes invalid:
- Close Desktop.
- Delete
window-state.jsonin the data directory. - Open the app again.
Launch at login does not work
- macOS: check System Settings → General → Login Items
- Windows: check Task Manager → Startup
- Linux: check your desktop environment autostart settings
Web UI is not accessible
- Confirm the gateway is running.
- Confirm
ENABLE_WEB_UIistrue. - Try opening
http://localhost:3688directly in a browser.