Repository navigation
[Feature/UX]: add additive Claude Desktop catalog mode with honest native/OpenCodex switching #1213
Description
Client or integration
Claude Desktop 3P profile
Area
Claude Desktop integration / catalog / configuration UX
Current status
The original destructive-restore defect is partially resolved.
PR #1106 added a real Claude Desktop integration toggle and a safe OFF/native pivot:
claude-desktopis tracked as a native client integration;- OFF pivots to a credential-free standard profile before removing the OpenCodex-owned gateway profile;
- owned backup and metadata state are cleaned up under the integration contract;
- desired OFF state is persisted so later provider changes do not silently re-enable the integration;
- ownership/drift inspection refuses unsafe mutations instead of blindly rewriting foreign state.
Therefore this issue no longer needs to claim that OpenCodex has no safe restore path.
The issue remains open because the reopened request is broader: users want an honest way to keep or switch between Claude-native access and OpenCodex-routed models, ideally in one picker where the installed Claude Desktop contract permits it.
Remaining goal
Provide the best supported Claude Desktop experience for users who want both:
native Claude-family access
+
selected OpenCodex-routed models
without silently changing credential or billing provenance.
There are two materially different meanings of "additive" and they must not be conflated.
1. True first-party coexistence
Ideal behavior:
Claude Desktop keeps its first-party subscription provider and credential
+
OpenCodex adds extra routed models
This requires a supported Claude Desktop mechanism for either:
- multiple inference providers in one active profile; or
- first-party credential passthrough while a gateway base URL is active.
Current OpenCodex configuration writing alone does not prove that capability exists.
Adding official-looking claude-* rows to inferenceModels is not sufficient if the gateway cannot receive or safely resolve the user's original first-party credential.
If current Claude Desktop does not expose a supported coexistence contract, OpenCodex must say so rather than simulate native access.
2. Unified gateway catalog
A practical approximation may be possible through one OpenCodex gateway catalog containing:
- selected routed OpenCodex models; and
- Claude models served through an explicitly configured OpenCodex Anthropic OAuth/API credential.
That can provide one combined picker, but those Claude entries are gateway-routed. They are not automatically the untouched first-party Claude Desktop subscription provider.
The UI must expose that difference clearly and must never silently turn subscription-backed Claude access into separately billed Anthropic API traffic.
Desired user modes
The Desktop integration should converge on explicit modes such as:
Native Claude
Do not apply an OpenCodex inference profile.
Additive / unified gateway
Show Claude-family routes and selected OpenCodex routes together.
Available only when the required credential/routing contract is proven.
OpenCodex only
Use the OpenCodex gateway catalog without implying native-provider coexistence.
If true coexistence is unavailable, the supported fallback should be fast, reversible profile switching:
Use native Claude configuration
Use OpenCodex configuration
The user should not need to edit Claude-3p/configLibrary/_meta.json manually.
Required investigation
Before implementing true additive first-party mode:
- Probe the current supported Claude Desktop configuration contract.
- Determine whether first-party Claude OAuth can be preserved or forwarded when a gateway profile/base URL is active.
- Determine whether one active profile can expose more than one credential/provider provenance safely.
- If the answer is no, treat true first-party coexistence as an upstream limitation.
- Only then implement the strongest supported local mode.
Provenance requirements
Any combined catalog must make routing provenance explicit enough that users can distinguish entries such as:
Claude Opus 5 · native Claude
Claude Opus 5 · Anthropic via OpenCodex
GPT 5.6 Sol · ChatGPT pool via OpenCodex
Exact labels can follow the final UI design, but the product must not hide meaningful credential or billing differences behind identical model names.
Safety requirements
- Never silently replace a first-party Claude credential with a separately billed API credential.
- Never claim native coexistence when the client only supports one active gateway provider.
- Preserve exact routed model IDs where required by the gateway.
- Switching modes must be reversible and survive restart.
- Desired OFF/native state must continue to prevent later auto-apply from restoring an unwanted gateway profile.
- Foreign or drifted Desktop configuration must continue to fail safely.
Acceptance criteria
Already delivered
- Claude Desktop has an OpenCodex integration toggle.
- OFF has a safe standard/native pivot instead of requiring manual
_meta.jsonsurgery. - Desired OFF state survives later OpenCodex activity.
- Owned/drifted/foreign Desktop state is classified before mutation.
Remaining work
- The current Claude Desktop coexistence capability is verified rather than guessed.
- The UI offers explicit Native Claude / OpenCodex mode selection.
- If true first-party coexistence is supported, an additive mode preserves the first-party credential correctly.
- If true coexistence is not supported, the UI explains that limitation before applying a gateway profile.
- A unified gateway mode, if provided, requires explicit OpenCodex-managed Anthropic credentials and exposes their provenance.
- No silent credential or billing substitution occurs.
- Native/OpenCodex switching is one action, reversible, and restart-safe.
- Catalog entries make meaningful provider/credential provenance understandable.
- Regression coverage protects restore, switching, drift refusal, and provenance behavior.
Close condition
Close when Claude Desktop users have either verified additive coexistence or an explicit, honest, reversible mode-switching experience that does not misrepresent native access.
Activity
github-actions commentedon Aug 7, 2026
Automated translation bookkeeping — detected language: unknown.
github-actions commentedon Aug 7, 2026
Maintainer decision respected
A maintainer has reopened this issue. The automated closure has been deactivated.
str0203 commentedon Aug 7, 2026
Follow-up enhancement proposal: Additive Claude Desktop catalog mode
The ideal user experience is not merely a safer replacement flow. Users want to keep their existing Claude models and add selected OpenCodex routes to the same picker.
Feasibility boundary
There appear to be two materially different meanings of “native + routed models”:
1. True first-party coexistence
Claude Desktop keeps its existing first-party subscription models and credentials, while OpenCodex adds extra model routes.
This does not appear implementable through the current OpenCodex Desktop writer alone:
configLibrary/_meta.json.appliedId.inferenceProvider: "gateway".inferenceCredentialKind: "static"and supplies a gateway key.claude-*rows toinferenceModelsis not sufficient if the gateway cannot receive or safely resolve the user's original first-party credential.If Claude Desktop exposes a supported credential-passthrough or multi-provider mechanism, OpenCodex could use it. Otherwise, this part should be documented as an upstream limitation rather than simulated unsafely.
2. Unified gateway catalog (implementable approximation)
OpenCodex can potentially expose one combined gateway catalog containing:
This would produce the desired combined picker, although the Claude entries would be gateway-routed rather than the untouched first-party Desktop provider.
This mode must clearly disclose credential and billing provenance. It must never silently turn a Claude subscription model into separately billed Anthropic API traffic.
Proposed modes
The Desktop page could offer an explicit mode selector:
If true additive mode is not possible, provide a supported profile-switching fallback:
Switching must preserve both profiles and require only one click, without editing
_meta.jsonmanually.Suggested implementation investigation
autoApplyDesktopBestEffort()from always rewriting it asstatic.Claude Opus 5 · native passthroughClaude Opus 5 · Anthropic OAuth via OpenCodexGPT 5.6 Sol · ChatGPT pool via OpenCodexAcceptance criteria
This would turn the current destructive replacement workflow into either real coexistence where supported, or an honest and reversible approximation where it is not.
[-][Bug/UX]: Claude Desktop “Save and apply” silently replaces the native model catalog and lacks a safe restore path[/-][+][Feature/UX]: add additive Claude Desktop catalog mode with honest native/OpenCodex switching[/+]lidge-jun commentedon Aug 19, 2026
리뷰 · 우선순위 52 / 80
현재
dev에서 Claude Desktop은 이미 네이티브 클라이언트 통합으로 다뤄집니다.integrations.claude-desktopdesired state,/api/claude-desktopGET/PUT/apply/status, OFF 시 자격 증명 없는 표준 프로필로 피벗하는 경로가src/server/management/agent-settings-routes.ts와src/codex/desired-state에 있습니다. PR #1106이 말한 파괴적 복원 결함은 이 이슈의 남은 목표가 아닙니다. 안전한 OFF/네이티브 피벗은 있다고 보는 것이 맞습니다.남은 요청은 피커 하나에 네이티브 Claude 구독과 OpenCodex 라우트 모델을 같이 두는 것입니다. 이슈가 구분한 두 의미는 코드로도 갈라집니다. 진짜 1P 공존은 Claude Desktop이 활성 프로필에서 여러 inference provider를 받거나, 게이트웨이 base URL이 켜진 채 1P 자격 증명을 통과시켜야 합니다. OpenCodex 설정 쓰기만으로 그 계약이 있다는 증명은 되지 않습니다.
통합 게이트웨이 카탈로그는 현실적인 근사입니다. OpenCodex Anthropic OAuth/API로 서빙하는 Claude 행과 라우트 모델을 한 목록에 넣을 수는 있습니다. 다만 그 Claude 행은 게이트웨이 청구이지 데스크톱 구독이 아닙니다.
native/*행을 그럴듯하게 추가하는 것은, 게이트웨이가 원래 1P 자격 증명을 받거나 안전하게 해석하지 못하면 청구 출처를 속이는 일이 됩니다.네이티브 신뢰성 우선순위는 그래서 기능 추가보다 정직함에 있습니다. 현재 Claude Desktop 계약이 공존을 허용하지 않으면 지원하지 않는다고 말해야 합니다. Windows/서비스 경로에서 프로필 파일만 덧씌우면 소유권/드리프트 검사가 거부하는 외국 상태를 다시 만들 수 있습니다. 위생적으로는 OFF desired state가 프로바이더 변경에 다시 켜지지 않는 지금 계약을 유지해야 합니다.
해결방안은 1P 공존이 클라이언트 계약으로 확인되기 전에는 게이트웨이 카탈로그만 명시적 자격 증명으로 제공하고, UI에 “이 행은 OpenCodex 계정으로 청구된다”를 붙이는 것입니다. 패치는 추측하지 않으며, 현재 트리에서 1P 자격 증명 패스스루 구현은 확인하지 못했습니다.
이 댓글은 grok-bot이 작성했습니다
lidge-jun commentedon Sep 27, 2026
Closing as implemented on
dev. Claude Desktop picker mode landed in 66d4cf9 (#5728): OpenCodex models are listed by name in Desktop's Code-tab picker while Desktop stays first-party (src/claude/intercept/picker-runtime.ts). If a coexistence edge case is still missing, please open a focused issue against the current picker behavior.