Skip to content

[Bug]: ocx status reports the proxy healthy while routing is native, so nothing actually routes #2411

Closed

Description

@garysassano

Client or integration

Codex CLI

Area

Proxy and routing

Summary

ocx status reports the proxy running and healthy in a state where no routed request can succeed, because Codex is not pointed at the proxy. The user-visible error blames the model or the account, so the real cause is hard to find.

ocx doctor does detect the condition (routing=native). ocx status does not mention routing at all, and it is the command people run first.

Reproduction

  1. Get into the state: have a running proxy while ~/.codex/config.toml has no openai_base_url. This happens after ocx restore / ocx stop, or when the autostart shim is replaced by a version-manager reinstall of codex (filed separately as [Bug]: a package-manager reinstall of codex destroys the shim and its .opencodex-real backup, with no self-heal #2412).

  2. Ask ocx status whether things are working:

    ocx status
    ✅ Proxy: running (PID 59101)
       Health: http://127.0.0.1:10100/healthz ok (live)
    
  3. Confirm the proxy itself really is fine, by calling it directly:

    P=$(jq -r .port ~/.opencodex/runtime-port.json)
    curl -s -X POST localhost:$P/v1/responses \
      -H 'content-type: application/json' -H 'authorization: Bearer probe' \
      -d '{"model":"opencode-go/deepseek-v4-pro","input":"say ok","stream":false}' \
      | jq -r '.output[]?|select(.type=="message")|.content[0].text'
    ok
    
  4. Now make the same request through Codex:

    codex exec -m opencode-go/deepseek-v4-pro -s read-only --skip-git-repo-check \
      "Reply with exactly: ok" < /dev/null
    ERROR: The 'opencode-go/deepseek-v4-pro' model is not supported when using Codex with a ChatGPT account.
    

    That error reads as an auth or entitlement problem. It is neither — Codex sent the request to the real OpenAI endpoint, which does not know the namespaced model id.

  5. The two checks that actually discriminate:

    ocx doctor | grep -A2 'Codex restart safety'
    #   ok  native Codex routing (no opencodex restart dependency)
    #        routing=native, service=installed-but-unhealthy, shim=stale
    
    grep -c openai_base_url ~/.codex/config.toml
    # 0
  6. ocx restore back fixes it, adding exactly three lines and removing nothing:

    model_catalog_json = "/home/<user>/.codex/opencodex-catalog.json"
    # Auto-injected by opencodex
    openai_base_url = "http://127.0.0.1:10100/v1"

Expected: ocx status indicates that routing is native and that the running proxy is therefore unused.

Actual: ocx status shows only green proxy health, with no routing information.

Version

opencodex 2.29.0

Operating system

Ubuntu 24.04.4 LTS (WSL2, kernel 6.18.33.2-microsoft-standard-WSL2)

Provider and model

opencode-go / deepseek-v4-pro (any routed provider/model id reproduces it)

Logs or error output

$ ocx status
✅ Proxy: running (PID 59101)
   Health: http://127.0.0.1:10100/healthz ok (live)

$ codex exec -m opencode-go/deepseek-v4-pro "Reply with exactly: ok"
ERROR: The 'opencode-go/deepseek-v4-pro' model is not supported when using Codex with a ChatGPT account.

$ ocx doctor | grep -A2 'Codex restart safety'
Codex restart safety
  ok  native Codex routing (no opencodex restart dependency)
       routing=native, service=installed-but-unhealthy, shim=stale

Suggested fix: surface routing state in ocx status and warn on the healthy-proxy-plus-routing=native combination — ocx doctor already computes it. A more specific error when a namespaced provider/model id reaches the native OpenAI endpoint would also point at the real cause instead of the account.

Activity

  1. added
    bugSomething isn't working
    cliCLI, config inject, packaging flags
    on Aug 22, 2026
  2. github-actions commented on Aug 22, 2026

    @github-actions
    Contributor

    Issue reopened

    The report now contains the information required by the automated check. Thanks for updating it.

  3. added
    account-poolOAuth, credentials, Codex pool, quota, failover, plans
    catalogModel catalog, slugs, visibility, routed entries
    proxyHTTP proxy, routing, reverse-proxy / management auth
    on Aug 22, 2026
  4. lidge-jun commented on Aug 22, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 57 / 80

    설명: 이 이슈는 프록시가 살아 있는데 코덱스가 프록시를 안 보고, ocx status 가 초록만 보여서, 사용자는 모델이나 계정 오류로 읽는다고 한다. 원인은 2412 심 파괴와 같다. 지금 CURRENT dev HEAD 는 4f41a8e93 이다. 이번 시간에 origin/dev 는 그대로다. 새 머지는 없다. 착지는 여전히 2396 사용량 CLI 오늘 비용이다. package.json 은 2.27.0 이다. src/config.ts 는 3975줄이다. src/runtime 폴더는 지금 HEAD 에 없다. 지금 HEAD 의 src/cli/index.ts 843줄 handleStatus 는 프록시 피아이디나 health 가 괜찮으면 초록으로 찍는다. 라우팅이 네이티브여도 같다. 867줄 Restart safety 는 startupHealthSummary 를 쓴다. src/codex/autostart-health.ts 144줄은 네이티브를 오픈코덱스 재시작 의존이 없다고 좋은 말로 적는다. 프록시가 안 쓰인다는 말은 없다. src/cli/doctor.ts 983줄은 같은 요약을 찍고, 985줄에 routing= 을 붙인다. 작성자가 본 routing=native 는 닥터에만 있다. 상태 사람 글에는 routing= 이 없다. src/codex/inject.ts 403줄 getCodexRoutingKind 는 설정 파일이 없거나 openai_base_url 이 없으면 native 다. 작성자 재현과 같다. 직접 프록시로 보낸 요청은 되고, 코덱스 exec 는 진짜 오픈에이아이로 가서 네임스페이스 모델이 챗지피티 계정에서 안 된다고 한다. 작성자 버전은 2.29.0 이다. 지금 origin/dev 패키지는 2.27.0 이지만 같은 상태 초록 길이 있다. PR 이 아직 없다. bug, account-pool, catalog, cli, proxy 라벨이 있다. 사용자 길이로는 프록시가 살아 있는데 요청이 네이티브로 가서 계정 오류처럼 보이는 구멍이라서 57. 카탈로그 팁은 Ox Alpha x-preview-f-free + deepseek-v4-flash-vision-exp. Cursor 정적 카탈로그는 opus-4-8-fast / opus-5-fast. 2334 CursorCredentialRouter 는 여전히 src/providers/cursor-pool.ts 모듈+테스트만 있고 어댑터에 연결되지 않았다. 2332 H2 는 discovery 전용. 2320 overflow + 2342 는 이미 dev. 2188 사이드카는 이미 dev. 2382 데스크톱 앱 재시작은 이미 dev. 2292 는 아직 연다.

    src/cli/index.ts 라인 843 - 프록시가 살아 있으면 초록이다. 라우팅이 native 여도 첫 줄이 바뀌지 않는다
    src/cli/index.ts 라인 867 - Restart safety 는 네이티브를 재시작 의존이 없다고 찍는다. 프록시가 안 쓰인다는 경고가 아니다
    src/codex/autostart-health.ts 라인 144 - native 요약은 좋은 말이다. 닥터도 이 줄을 ok 로 찍는다
    src/cli/doctor.ts 라인 985 - routing= 은 닥터에만 있다. 상태 사람 글에는 같은 칸이 없다
    src/codex/inject.ts 라인 403 - 설정에 openai_base_url 이 없으면 native 다. 작성자 재현과 같다
    이슈 본문 2.29.0 - 작성자 버전이다. 지금 origin/dev 는 2.27.0 이지만 같은 상태 초록 구멍이 있다

    메인테이너의 판단이 필요한 지점

    • 프록시가 살아 있고 라우팅이 native 이면 상태 첫 줄을 경고로 바꿀지. 지금은 초록 다음에 좋은 말만 있다
    • 상태에도 routing= 한 줄을 넣을지. 닥터는 이미 계산한다
    • 네임스페이스 모델이 네이티브 오픈에이아이에 닿았을 때 더 분명한 오류를 넣을지. 그건 코덱스 쪽일 수 있다
    • 2412 와 한 PR 로 묶을지. 이 이슈는 표시, 2412 는 심이 파괴되는 원인이다

    너의 추천
    닥터가 이미 가진 routing= 을 상태에 경고로 올린다. 프록시 초록과 네이티브 라우팅이 같이 있으면 프록시가 안 쓰인다고 말하게 한다. 이슈는 열어 둔다. 2412 는 닫지 않는다. 라벨은 그대로 둔다. 프리뷰 배포가 아니다.

    이 댓글은 grok-bot이 작성했습니다

  5. lidge-jun commented on Aug 25, 2026

    @lidge-jun
    Owner

    Landed on dev as b06cb1b4d via #2518. PRs here target dev, so GitHub does not auto-close.

    ocx status now prints the routing token ocx doctor already printed, and warns when a live proxy is paired with native routing. Reproduced against a running proxy before and after:

    ✅ Proxy: running (PID 922)
       Health: http://127.0.0.1:10100/healthz ok (live)
       ⚠️  Codex routing is native — the running proxy is unused.
          Codex requests go to OpenAI, not this proxy. Re-point with: ocx start
       ...
       routing=native, service=viable, shim=absent
    

    The proxy line keeps its check on purpose: that claim is narrow and true, which your own successful curl demonstrated. The missing signal was added rather than the honest one corrupted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    account-poolOAuth, credentials, Codex pool, quota, failover, plansbugSomething isn't workingcatalogModel catalog, slugs, visibility, routed entriescliCLI, config inject, packaging flagsproxyHTTP proxy, routing, reverse-proxy / management auth

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions