Skip to content

[Bug][Dashboard] Codex disable dialog and state are misleading #3406

Description

@turin-dev

Client or integration

OpenCodex dashboard

Area

Dashboard

Summary

Disabling Codex from the Integrations overview opens the Grok Build consequence dialog, and after confirmation the Codex card can retain its pre-toggle state until a full page reload. The status API also supplies the OpenCodex config path instead of Codex's effective $CODEX_HOME/config.toml, so the dialog cannot accurately identify the file it will change. Expected: Codex-specific consequences name the actual file, and the card refreshes its desired and observed state immediately after the toggle.

Reproduction

  1. Run ocx start with Codex routing injected and open the local dashboard.
  2. Open Integrations and click the enabled Codex switch.
  3. Observe that the confirmation dialog says “Disable the Grok Build integration?” and does not identify the effective Codex config file.
  4. Confirm Disable.
  5. Observe that the Codex card can still show the pre-toggle state until the page is reloaded.
  6. Expected: Codex-specific consequences identify $CODEX_HOME/config.toml; the switch reflects the desired state and the badge refreshes from observed routing.

Version

2.42.0 (ea3231a8293b)

Operating system

Linux (reproduced in the component test; the behavior is dashboard-side and expected across platforms)

Provider and model

Not provider-specific; any Codex routing configuration

Logs or error output

No runtime exception is raised; the defect is stale or misleading dashboard state.

Screenshots and supporting files

No screenshot attached; the behavior is deterministic and covered by a mounted regression test.

Redacted configuration

{}

Checks

  • I searched existing issues and documentation.
  • I removed secrets, tokens, account details, request credentials, and personal data.

Activity

  1. added
    bugSomething isn't working
    guiDashboard, tray, settings UI
    on Sep 3, 2026
  2. lidge-jun commented on Sep 3, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 58 / 80

    이 이슈는 대시보드 Integrations 개요에서 Codex 통합을 끌 때 생기는 표시와 경로가 틀리는 버그다. 지금 dev HEAD(9c29e444d, #3408 문서 캠페인 직후)를 보면 동작 코드는 그대로다. Codex 카드를 끄려고 스위치를 누르면 확인창이 Grok Build용 문구를 쓰고, 상태 API가 알려 주는 설정 파일 경로도 Codex의 $CODEX_HOME/config.toml이 아니라 OpenCodex 쪽 경로를 넘긴다. 그래서 사용자는 “지금 어떤 파일을 고치는지”를 믿을 수 없고, 확인 후에도 카드가 예전 켜짐/꺼짐 모습을 유지하다가 새로고침해야 맞는 상태가 된다.

    왜 이렇게 보이는지 HEAD 코드로 짚으면 세 갈래다. 첫째, gui/src/pages/integrations/IntegrationsOverview.tsx 안의 끄기 확인창은 Desktop이 아니면 전부 GROK_DISABLE_COPY를 쓴다. Codex 전용 문구 상수가 없다. 둘째, 같은 파일의 requestToggle은 Claude를 제외한 native 끄기(Grok·Desktop·그리고 Codex)를 같은 확인창 경로로 보낸다. 셋째, overview-clients.ts의 codexRow는 togglePath를 항상 null로 두고, 서버 native-integration-routes.ts의 목록 응답은 codexStatus(config, getConfigPath())처럼 OpenCodex getConfigPath()를 Codex에도 그대로 넘긴다. 이슈에 적힌 “Grok Build 문구 + 잘못된 config 경로 + 토글 직후 카드가 안 바뀜”은 이 세 지점과 정확히 맞는다.

    지금 dev가 최적화하는 쪽은 Codex/proxy·voice sideband·모델 카탈로그 쪽이고, GUI 폴리시 열차(#3393–#3399 근처)는 그 뒤에 있다. 그래도 이 버그는 “Integrations에서 Codex를 끈다”는 일상 조작의 신뢰도를 깎는다. 이미 같은 작성자(turin-dev)의 수정 PR #3407이 열려 있고 Closes #3406을 달았다. #3407은 Codex 전용 끄기 문구·effective $CODEX_HOME/config.toml 보고·desired/observed 분리·토글 직후 routing 갱신·회귀 테스트를 묶는다. 이슈 자체는 재현 단계가 분명하고 컴포넌트 테스트로도 잡힌다고 적혀 있어, 추가 재현 조사보다 수정 PR을 기준으로 닫는 편이 맞다.

    라인 670 - IntegrationsOverview.tsx: pendingToggle이 Claude Desktop이 아니면 GROK_DISABLE_COPY를 써서 Codex 끄기 확인창 제목/본문이 “Disable the Grok Build integration?”가 된다
    라인 490-500 - IntegrationsOverview.tsx: requestToggle이 Codex 끄기도 Grok/Desktop과 같은 pendingToggle 확인창 경로로 보낸다 (Codex 전용 ConsequenceCopy 분기 없음)
    경로/overview-clients.ts · codexRow - togglePath가 항상 null이라 확인창 vars.path에 Codex 실제 설정 경로가 안 실릴 수 있다
    라인 686 - native-integration-routes.ts: codexStatus(config, getConfigPath())로 OpenCodex config 경로를 Codex native status의 configPath에 넣는다 (이슈가 말한 $CODEX_HOME/config.toml과 불일치)
    경로/상태 모델 - applied/routingInjected와 desiredEnabled가 카드 UI에서 한 덩어리로 보이면 토글 직후 관찰 상태가 갱신되기 전까지 스위치/뱃지가 이전 값을 유지할 수 있다 (이슈 재현 5단계)

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

    • #3407을 지금 merge-train에 태울지, 아니면 Codex/proxy 배치 뒤에 GUI 폴리시 묶음으로 미룰지
    • Codex configPath를 서버가 $CODEX_HOME/config.toml로 고치는 범위를 status GET만 할지, PUT/복구 메시지까지 같은 소스로 통일할지
    • desired(설정 의도)와 observed(실제 routingInjected)를 카드에 둘 다 보여줄지, 스위치는 desired만·뱃지는 observed만으로 나눌지

    너의 추천
    이슈 #3406은 단독으로 더 조사하지 말고, 이미 연결된 #3407이 CI·체크리스트를 통과하면 그 PR로 닫아라. HEAD 기준으로 버그 지점이 확인됐고, 수정 범위도 Integrations Codex 토글에 한정된다. #3407이 막히면 최소한 IntegrationsOverview의 Codex 끄기 문구 분리와 native status의 Codex configPath 교체부터 작은 PR로 쪼개도 된다.

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

  3. lidge-jun commented on Sep 5, 2026

    @lidge-jun
    Owner

    Landed via #3617 at 3b3fe21 — Codex dashboard toggle desired/observed state and CODEX_HOME path are on dev.

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

    bugSomething isn't workingguiDashboard, tray, settings UI

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions