Repository navigation
[Bug] Codex Auth: primary_window가 월간(≈30d)인데 UI/API가 주간(Week)으로 표시됨 #315
Copy link
Copy link
Closed
Description
요약
Codex Auth 계정 풀에서 일부 Team 계정은 WHAM primary_window.limit_window_seconds=2628000(약 30.4일)인데, OpenCodex가 이를 무조건 weeklyPercent/Week로 매핑합니다.
결과적으로 월간 한도 계정이 대시보드와 /api/codex-auth/accounts에서 주간 한도로 잘못 표시됩니다.
환경
- OpenCodex:
2.7.33(@bitkyc08/opencodex) - OS: WSL2 / Linux
- Dashboard:
http://localhost:10100/#codex-auth - OpenAI account mode: Pool mode
재현 결과 (실측)
같은 Team plan이라도 limit_window_seconds가 계정별로 다릅니다.
(계정 alias / email / account id는 마스킹)
| account | plan | limit_window_seconds |
reset (local) | 실제 의미 | UI/API 표시 |
|---|---|---|---|---|---|
monthly-1 |
team | 2628000 (~30.4d) |
2026-08-22 03:20 KST | 월간 | Week / weeklyPercent |
monthly-2 |
team | 2628000 (~30.4d) |
2026-08-22 21:22 KST | 월간 | Week / weeklyPercent |
weekly-1 |
team | 604800 (7d) |
2026-07-29 10:06 KST | 주간 | Week / weeklyPercent |
weekly-2 |
team | 604800 (7d) |
2026-07-29 11:10 KST | 주간 | Week / weeklyPercent |
chatgpt.com/backend-api/wham/usage 원본(민감정보 제외):
{
"account": "monthly-1",
"plan_type": "team",
"primary_window": {
"used_percent": 6,
"reset_at": 1787336442,
"limit_window_seconds": 2628000,
"reset_after_seconds": 2549330
},
"secondary_window": null,
"tertiary_window": null
}{
"account": "monthly-2",
"plan_type": "team",
"primary_window": {
"used_percent": 39,
"reset_at": 1787401330,
"limit_window_seconds": 2628000,
"reset_after_seconds": 2614217
},
"secondary_window": null,
"tertiary_window": null
}반면 OpenCodex /api/codex-auth/accounts?refresh=1 응답은 위 계정들을 모두 주간으로 내립니다:
{
"account": "monthly-1",
"quota": {
"weeklyPercent": 6,
"weeklyResetAt": 1787336442,
"resetCredits": 0
}
}{
"account": "monthly-2",
"quota": {
"weeklyPercent": 38,
"weeklyResetAt": 1787401330,
"resetCredits": 0
}
}대시보드 Codex Auth UI도 두 월간 계정 모두 Week로 표시합니다.
원인 추정
src/codex/quota.ts의 parseUsageQuota()가 primary_window를 항상 weekly로 취급합니다.
// primary_window was the 5h window; it now carries weekly data for GPT plans.
// secondary_window is the legacy weekly source; prefer primary when present.
const weeklyPercent = primaryPercent ?? secondaryPercent;
const monthlyPercent = normalizeUsagePercent(data.rate_limit.tertiary_window?.used_percent);또한 WhamUsageResponse 타입에 limit_window_seconds가 없어, 실제 윈도우 길이로 주간/월간을 구분하지 않습니다.
월간은 tertiary_window만 본다고 가정하지만, 위 Team 계정은 primary_window만 있고 그 값이 월간입니다.
영향
- Codex Auth UI에서 월간 한도가
Week로 오표시됨 /api/codex-auth/accounts가monthlyPercent대신weeklyPercent만 반환- 계정 로테이션/usage score가 잘못된 window를 기준으로 동작할 수 있음
기대 동작
limit_window_seconds ≈ 604800→ weekly (weeklyPercent/Week)limit_window_seconds ≈ 2628000(또는 30d 근처) → monthly (monthlyPercent/30d/Month)- 가능하면 window 길이(또는 명시 필드)로 판별하고, plan_type만으로 하드코딩하지 않기
제안 수정
- WHAM window 타입에
limit_window_seconds반영 parseUsageQuota()에서 window 길이로 weekly/monthly 분류- Codex Auth UI는
monthlyPercent가 있으면30d/Month로 표시 - 회귀 테스트: weekly(7d) primary / monthly(≈30d) primary / tertiary monthly 케이스
참고
- 재현 시점: 2026-07-23
- 동일 증상 open/closed 이슈는 검색 시 확인되지 않음
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
Ingwannu commentedon Jul 23, 2026
재현 확인했습니다. 최신
dev에서도primary_window.limit_window_seconds=2628000인 Team 응답이 실제로weeklyPercent로 파싱됩니다.다음 방식으로 수정하겠습니다.
limit_window_seconds를 반영합니다.primary_window가 월간이면monthlyPercent/monthlyResetAt으로 내리고, 함께 존재하는secondary_window는 주간 fallback으로 보존합니다. 기존tertiary_window월간 처리도 유지합니다.수정 후 전체 테스트와 타입/프라이버시 검사를 통과시킨 뒤
devPR 및 완료 결과를 다시 남기겠습니다.Ingwannu commentedon Jul 23, 2026
수정 완료 후
dev에 병합했습니다: #317 (merge commit은 PR 병합 상태에 기록됨).반영 내용:
limit_window_seconds를 유지합니다.monthlyPercent/monthlyResetAt으로 분류합니다.검증: 전체 3,624개 테스트 통과(실패 0), typecheck·privacy scan 및 Linux/macOS/Windows CI 전체 통과했습니다. 완료 처리합니다.
devlog: 260723_issue_fixes WP0 roadmap — diff-level docs for #315/#311/…
fix(quota): classify monthly primary_window via limit_window_seconds …
devlog: 260723_issue_fixes loop close-out (DONE — #315/#311/#252)
devlog: 260723_issue_fixes WP0 roadmap — diff-level docs for lidge-ju…
fix(quota): classify monthly primary_window via limit_window_seconds …
devlog: 260723_issue_fixes loop close-out (DONE — lidge-jun#315/lidge…