Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
b933aa2
fix(cursor): bound local installer manifests (#6319)
luvs01 Sep 30, 2026
2713b60
fix(codex): preserve TOML values and routing marker ownership (#6308)
luvs01 Sep 30, 2026
57fc9cc
fix(devin): bound held signature-type payloads (#6315)
luvs01 Sep 30, 2026
8326838
fix(devin): score family axes sparsely with own-key targets (#6324)
luvs01 Sep 30, 2026
f5e9fda
fix(redaction): bound XML identifying-attribute scans (#6325)
luvs01 Sep 30, 2026
b0d275d
fix(codex): require live credential evidence for pool quota policy (#…
luvs01 Sep 30, 2026
662dfe1
fix(devin): apply Cognition blocklist rewrites to the system prompt (…
lidge-jun Sep 30, 2026
6c32c4d
fix(anthropic): give each Claude model its real 128K output maximum (…
lidge-jun Sep 30, 2026
87e182f
fix(claude): record why a native passthrough failed in its request-lo…
lidge-jun Sep 30, 2026
f9bfca0
fix(models): apply new-model policy before discovery, sync and export…
lidge-jun Sep 30, 2026
4f31822
docs(structure): keep providers-and-adapters.md within its 600-line b…
lidge-jun Sep 30, 2026
349588e
fix(models): project drifted discovery reads without mutating live po…
lidge-jun Sep 30, 2026
6f2f6ae
fix(xai): report a current Grok CLI version on the OAuth path (#6341)
lidge-jun Oct 1, 2026
a8c6c3f
fix(xai): report the current stable Grok CLI 1.0.46 (#6343)
lidge-jun Oct 1, 2026
7ea77aa
docs(providers): link the TokenLab OpenCodex integration guide (#6342)
lidge-jun Oct 1, 2026
ee3845f
fix(claude): preserve Devin answers with late reasoning signatures (#…
lidge-jun Oct 1, 2026
8ad261e
fix(gui): bridge quota popover hover gap and link account management …
lidge-jun Oct 1, 2026
09a86e1
fix(subagents): accept visible bare native ids in pickerOrder (#6346)
lidge-jun Oct 1, 2026
c4a5219
fix(anthropic): fail over on proven pre-output account 403 refusals (…
lidge-jun Oct 1, 2026
82a4955
test(anthropic): follow the renamed refusal rotators in source oracle…
lidge-jun Oct 1, 2026
474d601
Merge preview into 2.75.0-preview.20261001 promotion
lidge-jun Oct 1, 2026
e63d1cd
chore(release): 2.75.0-preview.20261001
lidge-jun Oct 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion desktop/src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion desktop/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "opencodex-desktop"
version = "2.74.0-preview.20260930"
version = "2.75.0-preview.20261001"
description = "OpenCodex desktop shell"
authors = ["OpenCodex contributors"]
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion desktop/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "OpenCodex",
"version": "2.74.0-preview.20260930",
"version": "2.75.0-preview.20261001",
"identifier": "com.opencodex.desktop",
"build": {
"frontendDist": "../ui",
Expand Down
3 changes: 1 addition & 2 deletions docs-site/src/content/docs/fr/guides/claude-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ Comportement lorsque cette option est activée :
- Un **429** en amont place le compte en temporisation selon `Retry-After` lorsqu'il est présent, ou selon un délai de repli,
efface ses affinités et peut faire basculer la requête vers un autre compte admissible, dans les limites prévues.
- L'affinité est **locale au processus** et disparaît au redémarrage du proxy.
- Les erreurs d'identification **401/403** mettent le compte en quarantaine (`needsReauth`) afin de l'exclure de la
sélection jusqu'à sa réauthentification.
- Les erreurs de renouvellement du jeton conservent la règle `needsReauth`. Un 403 confirmé lié à un abonnement ou à la facturation du compte peut déclencher un basculement avant la sortie, avec une temporisation selon `Retry-After` ou de dix minutes. Un refus d’autorisation ordinaire reste terminal. Voir la [reprise des comptes](/guides/claude-code/).
- Si chaque compte éligible est en temporisation, le proxy renvoie **429** (et non 401) avec `Retry-After`
lorsqu'il est connu.
- La récupération, y compris le basculement 429, utilise `quotaWindow` pour classer les comptes de
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,8 +246,7 @@ rotation automatique peut déclencher des restrictions du fournisseur.
| `anthropicAccountPool.stickyLimit?` | `number` | `1` | Liaisons de nouvelle session réussies conservées sur une sélection à tour de rôle. Portée 1–100. |

Lorsque cette option est activée, un 429 enregistre une temporisation bornée à partir de `Retry-After` ou d'un délai de repli, puis peut
faire basculer la requête vers un autre compte. L'affinité est locale au processus et de taille bornée. Un 401/403 lié aux identifiants marque le compte
comme devant être réauthentifié. Si tous les comptes admissibles sont en temporisation, les clients reçoivent un 429 accompagné de
faire basculer la requête vers un autre compte. L'affinité est locale au processus et de taille bornée. Les erreurs de renouvellement du jeton suivent les règles de réauthentification existantes. Un 403 confirmé lié à un abonnement ou à la facturation du compte permet un basculement avant la sortie, avec une temporisation selon `Retry-After` ou de dix minutes par défaut. Un refus d’autorisation ordinaire ne déclenche pas de basculement. Si tous les comptes admissibles sont en temporisation, les clients reçoivent un 429 accompagné de
`Retry-After` lorsqu'il est connu, et non une erreur d'authentification.

:::caution[Expérimental]
Expand Down
18 changes: 16 additions & 2 deletions docs-site/src/content/docs/guides/claude-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ opencodex serves `POST /v1/messages` (plus `count_tokens`) alongside `/v1/respon
Code can use every routed provider — OAuth logins, account pools, key failover and sidecars
included — with zero extra auth work.

On Devin routes (including SWE-2) reached through the Messages API, text and tool calls wait
for the upstream turn to complete so its late reasoning signature can precede the answer. This prevents Claude Code's final
result from becoming empty; reasoning and keepalive progress still flow during generation.
The buffer shares the request's 32 MiB translation limit and cancellation stops the producer.
This output-order fix does not resolve Cognition's separate refusal of some generated system
text. It preserves system instructions and safety constraints.

For an Anthropic route on stored OAuth or an Anthropic API key, native Fast is available on
`claude-opus-5-5`, `claude-opus-5`, and `claude-opus-4-8`: pick the model's `--fast` row (listed
when Fast rows are enabled) or set `fastMode: true`. Claude Code's own `/fast` toggle is not
Expand Down Expand Up @@ -54,8 +61,15 @@ Operational contract when enabled:
whose known reset time has passed are discarded as unknown, including retained model-specific
windows. Values without a known reset are preserved; missing data is never reported as zero usage.
- Affinity is **process-local** (lost on proxy restart).
- **401/403** credential failures quarantine the account (`needsReauth`) so it is excluded from
selection until re-authenticated.
- A complete, structured **403** account-entitlement or billing refusal can rotate before
output. Recognized cases include no Claude Code access, an expired/inactive subscription,
and an insufficient Anthropic credit balance. The refused account loses its affinities and
cools for `Retry-After`, or ten minutes without a deadline. Generic permission, model/resource
access, policy and unrecognized errors stay terminal. Recovery respects model routes and
send limits; if no replacement is eligible, the original 403 is returned. This also works
with proactive pooling off. A 403 after assistant output starts never switches accounts.
- Token-refresh credential failures retain the existing `needsReauth` policy. Subscription
renewal does not require reauthentication, but the account waits for its cooldown to expire.
- If every eligible account is cooling, the proxy returns **429** (not 401) with `Retry-After`
when known.
- Recovery, including 429 failover, uses `quotaWindow` to rank eligible replacements without
Expand Down
2 changes: 2 additions & 0 deletions docs-site/src/content/docs/guides/codex-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -940,6 +940,8 @@ threshold. The Desktop/main account keeps its separate 98% hard lock.
Set `codexPool.lowQuotaProtection` in configuration to pause accounts, record a log-and-API
alert, or both; see [routing configuration](/reference/configuration/routing/#codex-pool-low-quota-protection).
A pause takes effect for the next selection immediately, while saving it to disk is deferred.
Pool quota responses can authorize a pause only with valid usage and a captured credential
that is still current. A response without that proof may refresh displayed usage without pausing an account.
Check this server’s authenticated `GET /api/codex-auth/low-quota-events` history for `logged`
alerts or save failures. Manual resume remains in force for the current quota episode. The
default alert reaches only the log and API; it does not produce a desktop or OS notification.
Expand Down
5 changes: 5 additions & 0 deletions docs-site/src/content/docs/guides/model-routing.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ Routing and catalog visibility are separate controls:
- Fresh installs set `modelDiscovery.newModelPolicy` to `"off"`. After the first successful live
fetch establishes a baseline, later arrivals are appended to `disabledModels` and carry a **NEW**
dashboard badge until enabled or acknowledged. Existing installs remain `"on"` until opted in.
The policy applies before publishing newly discovered models through `/v1/models`, the dashboard,
client configuration exports, or a Codex catalog sync (including service startup).
Enabling an arrival manually keeps it enabled on later refreshes and exports.
If the running provider configuration differs from disk, model lists still apply the policy
using a temporary projection; they leave the running configuration and saved choices untouched.
Use `ocx models new-policy off` globally, add `--provider <name>` for an override, and inspect
`ocx models new-arrivals [--json]`. Failed/degraded fetches never change the baseline. Providers
with a non-empty `selectedModels` (including preset mode) are already curated, so this policy is
Expand Down
2 changes: 2 additions & 0 deletions docs-site/src/content/docs/guides/providers.md
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,8 @@ OpenAI-compatible API gateway at [tokenlab.sh](https://tokenlab.sh/r/OPENCODEX),
operated by TOKENLAB AI INC.
Create a workspace [API key](https://tokenlab.sh/dashboard/api?tab=keys), then run
`ocx provider add tokenlab` or select **TokenLab** in the dashboard's **Add provider** picker.
TokenLab maintains a step-by-step [OpenCodex integration guide](https://docs.tokenlab.sh/integrations/opencodex)
([한국어](https://docs.tokenlab.sh/ko/integrations/opencodex)) covering setup and per-model routing.
The preset uses [Chat Completions](https://docs.tokenlab.sh/quickstart) and discovers models at
`GET /v1/models?category=chat`, keeping only entries that declare `tool-use` capability.
Image, video, audio, embedding and decision models are excluded from this chat preset.
Expand Down
7 changes: 5 additions & 2 deletions docs-site/src/content/docs/guides/web-dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,12 @@ is visible) and never forces an upstream refresh.
provider-named window or prepaid credits.
- A chip turns amber at 70% used and red at 90% used.
- Hover or keyboard-focus a chip to see every reported window with its reset time and the time the
reading was taken. On a touch screen, the first tap shows those details.
reading was taken. The details stay open as the pointer moves from the chip into the popover,
including across the small visual gap. On a touch screen, the first tap shows those details.
- Click a chip (or tap it a second time) to open that provider's Accounts tab in Providers, where
its accounts or API keys are managed.
its accounts or API keys are managed. The popover's **Open account management** link opens the
same tab; keyboard users can Tab from the chip to this link and press Enter. Escape closes the
popover and returns focus to the chip when focus was inside the popover.
- The bar always stays on one line. When the chips do not fit, scroll it sideways or use the « and
» buttons at either end.
- Providers that report no quota window are left out. The bar is hidden when no provider reports one.
Expand Down
7 changes: 7 additions & 0 deletions docs-site/src/content/docs/ja/guides/claude-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ opencodex は `/v1/responses` と共に `POST /v1/messages`(`count_tokens` も)
Code から OAuth ログイン、アカウントプール、キーフェイルオーバー、サイドカーを含むすべてのルーティングプロバイダーを別途の
認証作業なしで使えます。

Messages API 経由の Devin ルート(SWE-2 を含む)では、テキストとツール呼び出しの送信を
上流のターンが完了するまで待ち、遅れて届く推論署名を回答より先に送ります。これにより Claude Code の
最終結果が空になるのを防ぎます。生成中も推論と keepalive による進行通知は送信されます。
バッファはリクエストの 32 MiB の変換上限を共有し、キャンセルすると生成処理も停止します。
この出力順序の修正は、生成された一部のシステムテキストを Cognition が拒否する別の問題を解決するものではありません。
システム指示と安全上の制約は保持されます。

## クイックスタート

```bash
Expand Down
9 changes: 9 additions & 0 deletions docs-site/src/content/docs/ja/guides/model-routing.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,15 @@ model ID は変更しません。`openai-apikey/<model>` は API key transport
ブロックしません。
- プロバイダーの `selectedModels` が空でなければカタログ許可リストとして動作します。ライブモデル探索と
直接ルーティングはそのままに、カタログと `/v1/models` に公開するモデルだけ絞ります。
- `modelDiscovery.newModelPolicy` が `"off"` の場合、最初の成功したライブ探索で基準を確立し、
その後に追加されたモデルを `disabledModels` に入れます。これは `/v1/models`、ダッシュボード、
クライアント設定のエクスポート、サービス起動時を含む Codex カタログ同期で公開する前に
適用されます。手動で有効化したモデルは、その後の更新やエクスポートでも有効なままです。
新規インストールの既定値は `"off"`、既存のインストールは変更するまで `"on"` です。
`ocx models new-policy off` で全体に適用し、`--provider <name>` で個別に上書きします。
`ocx models new-arrivals [--json]` で追加モデルを確認できます。失敗または縮退した探索では
基準は変わりません。`selectedModels` が空でないプロバイダーはすでに選別済みのため、
このポリシーによる自動無効化は行いません。
- `provider.disabled: true` のプロバイダーはカタログ探索から除外されます。明示的 `provider/model` リクエストは
失敗し、`defaultModel` / `models[]` 検査でもスキップします。
- `providerContextCaps` はプロバイダーごとに Codex に表示するコンテキスト上限を指定します。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ affinity を維持します。これらの戦略は provider enforcement を回
| `anthropicAccountPool.quotaWindow?` | `"five-hour" \| "weekly" \| "max-utilization"` | `"five-hour"` |使用量ベースのアカウント選択で使う、プロバイダー報告のキャッシュ済み使用率です。`five-hour` は従来の動作を維持します。`weekly` は週次使用量を使い、他に対象アカウントが残る間だけ 5 時間使用量が上限に達したアカウントを除外し、残らない場合はそれらへフォールバックします。`max-utilization` は判明している値のうち最も高いものを使うため、週次使用量が未取得でも 5 時間使用量を利用できます。どちらも不明なら unknown の順位付けに従います。既知の使用量は unknown より先ですが、対象がすべて unknown でも対象順の先頭を選択します。記載した 5 時間使用量による同点判定後も完全に同点なら、対象順を維持します。正常な affinity セッションを先回りして再配置することはありません。新規セッションの割り当てと、対象となる 429 代替後のルーティング復旧では、`quota` はこの期間で対象候補を直接順位付けし、`fill-first` はこの期間のしきい値と上限到達ルールを使って安定順に進み、`round-robin` はこの設定を無視します。クールダウン、フェイルオーバー上限、再認証の適格性は別のローカル状態です。アカウント別の週次使用量は、ダッシュボードのプロバイダーページで取得した後にのみ利用できます。 |
| `anthropicAccountPool.stickyLimit?` | `number` | `1` |成功した新しいセッションのバインドは 1 つのラウンドロビン選択で保持されます。範囲は 1 ~ 100。 |

有効にすると、429 レコードは `Retry-After` またはデフォルトのバックオフからの制限されたクールダウンを記録し、リクエスト内でローテーションする可能性があります。アフィニティはプロセスローカルであり、サイズ制限があります。資格情報 401/403 は、アカウントに再認証が必要であることをマークします。すべての対象となるアカウントが冷却されている場合、クライアントは、既知の場合、認証エラーではなく、`Retry-After` を含む 429 を受け取ります。
有効にすると、429 レコードは `Retry-After` またはデフォルトのバックオフからの制限されたクールダウンを記録し、リクエスト内でローテーションする可能性があります。アフィニティはプロセスローカルであり、サイズ制限があります。トークン更新の失敗は既存の再認証ルールに従います。確認済みの契約・アカウント請求の 403 は出力前に別アカウントへ切り替え、`Retry-After` または既定の10分間のクールダウンを記録します。一般的な権限拒否では切り替えません。すべての対象となるアカウントが冷却されている場合、クライアントは、既知の場合、認証エラーではなく、`Retry-After` を含む 429 を受け取ります。

:::caution[実験的]
Anthropic アカウント ポリシーのリスクを理解していない限り、これは無効のままにしてください。不明な場合は、`ocx account use anthropic <id>` を手動で切り替えることをお勧めします。
Expand Down
7 changes: 7 additions & 0 deletions docs-site/src/content/docs/ko/guides/claude-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ opencodex는 `/v1/responses`와 함께 `POST /v1/messages`(및 `count_tokens`)
Code에서 OAuth 로그인, 계정 풀, 키 장애 조치, 사이드카를 포함한 모든 라우팅 제공자를 별도의
인증 작업 없이 사용할 수 있어요.

Messages API를 통해 사용하는 Devin 경로(SWE-2 포함)에서는 늦게 도착하는 추론 서명을 답변보다 먼저
보낼 수 있도록, 상위 제공자의 턴이 완료될 때까지 텍스트와 도구 호출 전송을 기다려요. 이렇게 하면 Claude Code의
최종 결과가 비어 버리는 것을 막을 수 있어요. 생성 중에도 추론과 keepalive 진행 알림은 계속 전달돼요.
버퍼에는 요청의 32 MiB 변환 한도가 함께 적용되며, 요청을 취소하면 생성 작업도 중단돼요.
이 출력 순서 수정으로 Cognition이 생성된 일부 시스템 텍스트를 거부하는 별개의 문제가 해결되지는 않아요.
시스템 지시와 안전 제약은 그대로 유지해요.

## 빠른 시작

```bash
Expand Down
9 changes: 9 additions & 0 deletions docs-site/src/content/docs/ko/guides/model-routing.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,15 @@ fallback하지 않습니다.
막지는 않습니다.
- 프로바이더의 `selectedModels`가 비어 있지 않으면 카탈로그 허용 목록으로 동작합니다. 실시간 모델 탐색과
직접 라우팅은 그대로 두고, 카탈로그와 `/v1/models`에 내보낼 모델만 줄입니다.
- `modelDiscovery.newModelPolicy`가 `"off"`이면 첫 실시간 탐색 성공 시 기준을 만들고,
이후 추가된 모델을 `disabledModels`에 넣습니다. 이 정책은 `/v1/models`, 대시보드,
클라이언트 설정 내보내기, 서비스 시작을 포함한 Codex 카탈로그 동기화에서 새 모델을 공개하기
전에 적용됩니다. 수동으로 활성화한 모델은 이후 새로고침과 내보내기에서도 활성 상태를 유지합니다.
새 설치의 기본값은 `"off"`이며, 기존 설치는 직접 바꾸기 전까지 `"on"`을 유지합니다.
`ocx models new-policy off`로 전역 정책을 설정하고, `--provider <name>`으로 프로바이더별
정책을 지정합니다. `ocx models new-arrivals [--json]`으로 새 모델을 확인할 수 있습니다.
실패하거나 제한된 탐색은 기준을 바꾸지 않습니다. `selectedModels`가 비어 있지 않은
프로바이더는 이미 선택 목록을 사용하므로 이 정책으로 모델을 자동 비활성화하지 않습니다.
- `provider.disabled: true`인 프로바이더는 카탈로그 탐색에서 제외됩니다. 명시적 `provider/model` 요청은
실패하고, `defaultModel` / `models[]` 검사에서도 건너뜁니다.
- `providerContextCaps`는 공급자별로 Codex에 표시할 컨텍스트 상한을 지정합니다.
Expand Down
Loading
Loading