Skip to content

[Feature] Add a dashboard editor for Codex account selector names #3017

Closed as not planned

Description

@hayabusasxs

Area

Dashboard

What are you trying to accomplish?

Would it be possible to add a small dashboard editor for the public selector names used by account-qualified Codex models?

When Codex Settings → Multi-account authentication → Advanced settings → Specify Codex account in the model picker is enabled, the generated selectors such as main and pxxxxxx work correctly. However, human-readable names such as personal, work, or backup would make the Codex model picker easier to understand and scan.

This would be a GUI improvement to the account-qualified selector feature implemented in #425. It would not need to change the underlying routing behavior.

What prevents this today?

The dashboard currently provides:

  • an enable/disable toggle for account-qualified picker entries; and
  • an Edit alias action for stored accounts.

The account alias only changes the label shown on the account card. It does not change the selector prefix displayed in the Codex model picker.

The Providers → Edit JSON view also does not expose codexAccountNamespaces. As a result, changing a selector name currently requires manually editing ~/.opencodex/config.json. That workaround is functional, but it is easy to modify the wrong side of the mapping or introduce a namespace collision.

What should OpenCodex do?

If this fits the project direction, please consider adding a selector-name editor under the existing account-picker setting.

It would be helpful if the editor could:

  • show each stored account using its configured alias or a privacy-safe masked label;
  • allow changing only the public selector key while keeping the underlying account target unchanged;
  • validate the existing selector rules, including length, allowed characters, reserved names, and provider or routing namespace collisions;
  • preview the resulting Codex picker label, for example work / 5.6 Sol;
  • clearly explain the difference between an account display alias and a model-picker selector name;
  • save the mapping atomically and refresh the Codex catalog/model cache; and
  • preserve existing saved selectors where practical, or display a clear compatibility warning before a rename.

The editor should not display raw account IDs, credentials, email addresses, or other private account data.

Example usage or interface

One possible workflow:

  1. Open Codex Settings → Multi-account authentication → Advanced settings.

  2. Enable Specify Codex account in the model picker.

  3. Expand a Selector names section.

  4. Rename the privacy-safe generated labels:

    main     → personal
    p3e98d7  → work
    pc8495f  → backup
    
  5. Preview the resulting picker entries:

    personal / 5.6 Sol
    work / 5.6 Sol
    backup / 5.6 Sol
    
  6. Save and refresh the catalog.

The example selector values above are illustrative privacy-safe labels only and are not account identifiers.

Alternatives or workarounds

The current workaround is to edit the keys in codexAccountNamespaces manually, validate the configuration, and refresh the catalog. This works, but it requires users to understand the internal mapping and the distinction between selector keys and account targets.

The existing account Edit alias action is useful for account management, but it does not affect the model picker and therefore does not address this workflow.

Additional context

Thank you for considering this improvement.

Checks

  • I searched existing issues and documentation.
  • This request describes a concrete OpenCodex workflow rather than merely naming a desired technology.
  • I removed secrets and personal data.

Activity

  1. lidge-jun commented on Aug 30, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 39 / 80

    이 이슈가 말하는 구멍은 지금 dev HEAD 870a2adb6 에도 그대로 있다. 패키지 버전은 2.37.0 이고, 작성자가 본 설치본은 v2.36.0 이다. 그 사이 버전 줄만 올라갔을 뿐, 계정 한정 피커의 공개 selector 이름을 대시보드에서 고치는 화면은 없다. 크래시도 아니고 라우팅이 죽은 것도 아니다. #425 가 이미 넣어 둔 기능이 켜지기는 한다. 다만 켜진 뒤에 사람이 읽을 이름(personal / work / backup)을 붙일 자리가 대시보드에 없다.

    동작은 이렇게 된다. Codex 설정 → 다중 계정 인증 → 고급 설정 안에 CodexAccountPickerSetting 토글이 있다. 영어 문구는 Target a specific Codex account from the model picker 다. 켜면 PUT /api/settings 가 codexAccountPickerEnabled: true 만 보낸다. 맵이 비어 있으면 initializeDefaultCodexAccountNamespaces 가 공개 키를 만든다. 메인 로그인은 main (이미 쓰이면 main-2), 추가 계정은 p 뒤에 여섯 자리 난수다. 주석이 일부러 적는다. 별칭이나 계정 id 에서 공개 selector 를 만들지 말라고. 그래서 피커에는 main / 5.6 Sol, p3e98d7 / 5.6 Sol 같은 줄이 생긴다. 표시 문자열은 accountBoundNativeDisplayName 이 selector / 모델이름 으로 붙인다. 선택하면 그 계정만 쓰고, 다른 계정으로 넘어가지 않는다. 그 계약은 이미 맞다.

    계정 카드의 별칭 편집 은 다른 칸이다. CodexAccountPool 의 editAlias 는 PUT /api/codex-auth/accounts/alias 로 account.alias 만 고친다. 카탈로그를 다시 그리지 않는다. selector 맵도 안 건드린다. 타입 주석이 이미 나눈다. 계정 표시 별칭과 이 공개 selector 는 일부러 다르다. 카드에 work 를 붙여도 피커 앞부분은 계속 pxxxxxx 다. 작성자가 본 그대로다.

    Providers 의 JSON 편집도 이 맵을 안 보여 준다. GET /api/config 는 safeConfigDTO 를 돌려주고, 그 객체에는 포트·기본 프로바이더·프로바이더 목록만 있다. codexAccountNamespaces 키 자체가 없다. GUI 쪽 useJsonConfigEditor 의 Config 타입도 같다. 저장은 PUT /api/config 인데, 서버는 405 로 막는다. 전체 설정 PUT 은 꺼져 있고 프로바이더 변경은 POST 를 쓰라고 한다. 그래서 JSON 창에 키를 적어도, 그리고 설정을 저장해도, 이 맵은 안 바뀐다. 지금 남는 우회는 ~/.opencodex/config.json 을 손으로 고치는 것뿐이다.

    검증 규칙은 이미 설정 로드에 있다. 키는 1~64자, 앞뒤는 ASCII 글자나 숫자, 가운데는 글자·숫자·점·밑줄·하이픈이다. __proto__ / prototype / constructor 는 거절한다. openai / combo / policy 와 프로바이더 이름, 콤보 별칭 앞부분, 라우팅 프로필 앞부분과도 겹치면 안 된다. 풀 계정 id 나 다른 selector 의 대상 값을 키로 쓰는 것도 막는다. 값은 @main 이거나 풀 계정 id 다. 내부 __main__ 은 키가 아니다. 대시보드가 새 규칙을 만들 필요는 없다. 있는 검사를 그대로 쓰면 된다. 다만 이름을 바꾸는 일은 표시만 바꾸는 일이 아니다. 저장된 대화와 고른 모델 id 는 옛selector/gpt-5.6-sol 을 들고 있다. 키를 work 로 바꾸면 그 옛 id 는 맵에 없고, 계정 한정 라우팅은 닫히며 실패한다. #2201 과 PR #2715 / #2716 은 발견된 프로바이더 모델의 표시 이름이다. 라우팅 슬러그는 그대로 둔다. 이 이슈는 공개 selector 키 자체를 바꾼다. 다른 면이다. 중복으로 닫지 않는다. #425 는 이 기능을 넣은 이슈이고 이미 닫혀 있다. types.ts/config.ts 분할에 이 GUI 이슈가 통째로 죽지는 않는다. 겹치는 설정 스키마 PR 이 있으면 리베이스보다 닫기가 맞다. 미리보기 배포는 계획에 없다.

    gui/src/components/CodexAccountPickerSetting.tsx 라인 68 - 저장 몸통이 codexAccountPickerEnabled 토글뿐이다. 현재 selector 목록도, 이름 입력도, 미리보기도 없다.
    src/server/management/config-routes.ts 라인 302 - GET /api/settings 가 켜짐/꺼짐만 돌려준다. 맵을 GUI 에 주지 않는다. 라인 460-502 는 켤 때 기본 맵을 채우고 보임이 바뀔 때만 카탈로그를 다시 그린다. 이름 변경 경로가 없다.
    src/codex/auth-api.ts 라인 1476 - 별칭 PUT 은 account.alias 만 고친다. 카탈로그 갱신도, codexAccountNamespaces 수정도 없다. 피커 앞부분은 그대로다.
    src/server/auth-cors.ts 라인 785 - safeConfigDTO 반환 값에 네임스페이스 맵이 없다. 같은 파일의 프로바이더 목록만 나간다. config-routes.ts 라인 252 는 전체 설정 PUT 을 405 로 막는다. Providers JSON 편집은 이 맵의 입구가 아니다.
    src/types/config.ts 라인 584 - 계정 표시 별칭과 공개 selector 를 일부러 나눈다. 별칭 칸을 늘려서 이 이슈를 풀면 계약이 섞인다.
    src/codex/account-namespaces.ts 라인 88 - 기본 맵은 별칭/원본 id 에서 키를 만들지 않는다. 라인 102 는 메인에 main 을 주고, 나머지는 프라이버시용 p 난수 라벨이다. 사람이 읽는 이름은 생성 단계에서 일부러 빠진 값이다.
    src/codex/catalog/account-models.ts 라인 36 - 피커 라벨은 selector / 모델이름 이다. 키를 바꾸면 보이는 글자만 바뀌는 게 아니라 카탈로그 id 자체가 바뀐다. 라인 20 의 공개 목록은 키만 내보내고 계정 id 는 내보내지 않는다. 편집 API 도 그 경계를 지켜야 한다.
    src/config.ts 라인 739 - 키 길이·문자·예약어·프로바이더/콤보/정책 충돌·계정 id 충돌 검사가 이미 있다. GUI 가 새 문법을 만들면 손편집과 어긋난다.

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

    • 이름 변경 때 옛 selector 를 호환 별칭으로 남길지, 경고만 하고 옛 id 는 실패 닫힘으로 둘지. 이슈는 보존 또는 경고를 요청한다. 라우팅 키를 두 개 남기면 피커가 늘고, 지우면 저장된 대화가 끊긴다.
    • 편집기를 고급 설정의 피커 토글 아래에 둘지, 계정 카드의 별칭 옆 두 번째 칸으로 둘지. 이슈가 적은 자리는 토글 아래다. 카드에 붙이면 별칭과 다시 섞인다.
    • [Feature] configurable human-readable display names for discovered provider models #2201 처럼 관리 API 를 먼저 넣고 GUI 를 다음 PR 로 나눌지. selector 목록을 브라우저에 줄 때 계정 id·이메일·자격 증명을 빼는 계약은 API 에서 먼저 고정하는 편이 안전하다.
    • 지금 dev 의 2.37 버전 줄·Kiro·사이드카 작업보다 이것을 앞에 둘지. 이것은 켜진 기능의 이름표이지 장애가 아니다.

    너의 추천
    열어 둔다. 중복이 아니다. #425 는 기능을 넣은 닫힌 이슈다. #2201 과 PR #2715 / #2716 은 발견된 모델 표시 이름이라 이 자리와 다르다. 라벨을 바꾸지 말고, 닫지도 말고, 지금 머지 열차에 넣지 않는다. 다음 패치는 전용 관리 경로다. GET 은 공개 selector 와 카드 별칭 또는 logLabel 만 주고 원본 계정 id·이메일·비밀은 주지 않는다. PUT 은 키만 바꾸고 대상 값은 그대로 둔다. 검사는 기존 src/config.ts 규칙을 그대로 쓴다. 저장은 원자적이고, 성공하면 convergeCodexCatalog 를 부른다. GUI 는 CodexAccountPickerSetting 아래 토글이 켜져 있을 때만 연다. 미리보기는 accountBoundNativeDisplayName 과 같은 work / 5.6 Sol 형식이다. 이름 변경 전에는 저장된 대화가 옛 selector 로 실패 닫힘된다는 경고를 보여 준다. 별칭 편집을 재사용하지 않는다. config.json 전체를 대시보드에 다시 열지 않는다. help wanted 로 두되, 첫 PR 은 GUI 만 올리지 말고 API 계약을 같이 가져온다.

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

  2. lidge-jun commented on Sep 3, 2026

    @lidge-jun
    Owner

    Closing in favor of #3379, which carries the remaining scope forward.

    Thank you @hayabusasxs — the request for a dashboard editor for Codex account selector names is valid and still unimplemented.

    Verified current state. Confirmed: gui/src/components/CodexAccountPickerSetting.tsx only toggles picker visibility, and src/server/management/config-routes.ts exposes no rename API.

    Three open dashboard requests share one shape: the page already shows the data but offers no control over it. #3379 states all three concretely, names this issue, and credits you for the original analysis.

    Please follow #3379; if the consolidation lost a detail you asked for, say so there and it will be added.

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

    enhancementNew feature or requestguiDashboard, tray, settings UI

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions