From 30216e8d7a1b2ab4f812fcc771d35b3b5a8417f8 Mon Sep 17 00:00:00 2001 From: Mushikingh <164845020+mushikingh@users.noreply.github.com> Date: Sun, 1 Nov 2026 04:28:02 +0100 Subject: [PATCH 1/4] docs(t3code): note built-in model routing and title generation T3 Code lists its built-in Claude models under the opencodex instance too; picking one sends the bare name, which opencodex routes to whichever provider claims it. Title generation is a separate structured-output request on the thread's model (Claude) or T3 Code's text-generation model (Codex), and falls back to the message's first line when it fails. --- docs-site/src/content/docs/guides/integrations.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs-site/src/content/docs/guides/integrations.md b/docs-site/src/content/docs/guides/integrations.md index 3d427ac444a..a6f414da70d 100644 --- a/docs-site/src/content/docs/guides/integrations.md +++ b/docs-site/src/content/docs/guides/integrations.md @@ -189,6 +189,10 @@ a custom model to it, or toggling it off rewrites the block. The switch then sho instead of overwriting your edit, and **Replace** restores the generated block. To use different settings, add your own Claude instance in T3 Code beside it. +T3 Code also lists its built-in Claude models under **opencodex**, beside the routed ones. Picking one sends the bare name (for example `claude-sonnet-5`), and opencodex routes it like any other request: to whichever configured provider claims that name, which can be a routed provider such as Kiro rather than your Claude subscription. Pick the `provider/model` entries to be explicit, and hide the built-in rows in T3 Code's model picker if you don't want them there. Your subscription stays on T3 Code's own Claude instance, which does not go through opencodex. + +T3 Code titles a thread with a separate model request. On the **opencodex** instance that request uses the thread's own model and asks for structured JSON output, so the routed provider has to support structured output. Codex threads use T3 Code's text-generation model setting, a native GPT model by default, which needs a usable ChatGPT account. When the title request fails, T3 Code keeps the first line of your message as the title. The thread itself is unaffected. + Generated catalogs include only enabled models from each provider selection. This applies to both downloads and managed integrations, including Pi and Aside. The management model list still shows the full roster so you can enable additional models. From 6daa96346e61d5c21ffe561140844b5047a7c01f Mon Sep 17 00:00:00 2001 From: Mushikingh <164845020+mushikingh@users.noreply.github.com> Date: Sun, 1 Nov 2026 06:22:55 +0100 Subject: [PATCH 2/4] docs(t3code): state the bare-name routing precedence A bare built-in Claude name is not routed to whichever provider lists it: a provider's default model wins first, then the claude-* pattern to a configured Anthropic provider, then a models list. Link the model-routing precedence and describe when Kiro ends up serving it. --- docs-site/src/content/docs/guides/integrations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-site/src/content/docs/guides/integrations.md b/docs-site/src/content/docs/guides/integrations.md index a6f414da70d..4a90159c75a 100644 --- a/docs-site/src/content/docs/guides/integrations.md +++ b/docs-site/src/content/docs/guides/integrations.md @@ -189,7 +189,7 @@ a custom model to it, or toggling it off rewrites the block. The switch then sho instead of overwriting your edit, and **Replace** restores the generated block. To use different settings, add your own Claude instance in T3 Code beside it. -T3 Code also lists its built-in Claude models under **opencodex**, beside the routed ones. Picking one sends the bare name (for example `claude-sonnet-5`), and opencodex routes it like any other request: to whichever configured provider claims that name, which can be a routed provider such as Kiro rather than your Claude subscription. Pick the `provider/model` entries to be explicit, and hide the built-in rows in T3 Code's model picker if you don't want them there. Your subscription stays on T3 Code's own Claude instance, which does not go through opencodex. +T3 Code also lists its built-in Claude models under **opencodex**, beside the routed ones. Picking one sends the bare name (for example `claude-sonnet-5`), and opencodex routes it by the usual [model routing precedence](/guides/model-routing/#precedence): a provider whose default model is that name first, then a configured Anthropic provider for `claude-*` names, then a provider that lists the name in its models. Without an Anthropic provider in opencodex, that last step can pick a routed provider such as Kiro rather than your Claude subscription. Pick the `provider/model` entries to be explicit, and hide the built-in rows in T3 Code's model picker if you don't want them there. Your subscription stays on T3 Code's own Claude instance, which does not go through opencodex. T3 Code titles a thread with a separate model request. On the **opencodex** instance that request uses the thread's own model and asks for structured JSON output, so the routed provider has to support structured output. Codex threads use T3 Code's text-generation model setting, a native GPT model by default, which needs a usable ChatGPT account. When the title request fails, T3 Code keeps the first line of your message as the title. The thread itself is unaffected. From 6c3cc91d6c0bcfa2d074b87b46e18ccefbdebba9 Mon Sep 17 00:00:00 2001 From: Mushikingh <164845020+mushikingh@users.noreply.github.com> Date: Sun, 1 Nov 2026 06:45:21 +0100 Subject: [PATCH 3/4] docs(t3code): name the provider the claude-* routing rule requires Review follow-up. The claude-* prefix rule only applies to an enabled provider named anthropic or anthropic-*; an Anthropic adapter under another name falls through to model-list routing. --- docs-site/src/content/docs/guides/integrations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-site/src/content/docs/guides/integrations.md b/docs-site/src/content/docs/guides/integrations.md index 4a90159c75a..0f3c1163c1a 100644 --- a/docs-site/src/content/docs/guides/integrations.md +++ b/docs-site/src/content/docs/guides/integrations.md @@ -189,7 +189,7 @@ a custom model to it, or toggling it off rewrites the block. The switch then sho instead of overwriting your edit, and **Replace** restores the generated block. To use different settings, add your own Claude instance in T3 Code beside it. -T3 Code also lists its built-in Claude models under **opencodex**, beside the routed ones. Picking one sends the bare name (for example `claude-sonnet-5`), and opencodex routes it by the usual [model routing precedence](/guides/model-routing/#precedence): a provider whose default model is that name first, then a configured Anthropic provider for `claude-*` names, then a provider that lists the name in its models. Without an Anthropic provider in opencodex, that last step can pick a routed provider such as Kiro rather than your Claude subscription. Pick the `provider/model` entries to be explicit, and hide the built-in rows in T3 Code's model picker if you don't want them there. Your subscription stays on T3 Code's own Claude instance, which does not go through opencodex. +T3 Code also lists its built-in Claude models under **opencodex**, beside the routed ones. Picking one sends the bare name (for example `claude-sonnet-5`), and opencodex routes it by the usual [model routing precedence](/guides/model-routing/#precedence): a provider whose default model is that name first, then an enabled provider named `anthropic` or `anthropic-*` for `claude-*` names, then a provider that lists the name in its models. Without such a provider (an Anthropic adapter under another name does not count), that last step can pick a routed provider such as Kiro rather than your Claude subscription. Pick the `provider/model` entries to be explicit, and hide the built-in rows in T3 Code's model picker if you don't want them there. Your subscription stays on T3 Code's own Claude instance, which does not go through opencodex. T3 Code titles a thread with a separate model request. On the **opencodex** instance that request uses the thread's own model and asks for structured JSON output, so the routed provider has to support structured output. Codex threads use T3 Code's text-generation model setting, a native GPT model by default, which needs a usable ChatGPT account. When the title request fails, T3 Code keeps the first line of your message as the title. The thread itself is unaffected. From 46cc2761c9fd70f6b86eb8f0abe1e60d81a5e758 Mon Sep 17 00:00:00 2001 From: Mushikingh <164845020+mushikingh@users.noreply.github.com> Date: Sun, 1 Nov 2026 06:58:52 +0100 Subject: [PATCH 4/4] docs(routing): prefix routing skips disabled providers Review follow-up. The model-routing guide said the built-in prefix matcher does not filter a provider whose disabled flag is true, but routeByKnownModelPattern skips it, like the defaultModel and models[] scans. The T3 Code paragraph links this rule, so correct it in the English guide and all seven translations. --- docs-site/src/content/docs/fr/guides/model-routing.md | 4 ++-- docs-site/src/content/docs/guides/model-routing.md | 4 ++-- docs-site/src/content/docs/ja/guides/model-routing.md | 4 ++-- docs-site/src/content/docs/ko/guides/model-routing.md | 4 ++-- docs-site/src/content/docs/ru/guides/model-routing.md | 4 ++-- docs-site/src/content/docs/tr/guides/model-routing.md | 6 +++--- docs-site/src/content/docs/zh-cn/guides/model-routing.md | 4 ++-- docs-site/src/content/docs/zh-tw/guides/model-routing.md | 4 ++-- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs-site/src/content/docs/fr/guides/model-routing.md b/docs-site/src/content/docs/fr/guides/model-routing.md index 273e2d19011..6a5ce01d681 100644 --- a/docs-site/src/content/docs/fr/guides/model-routing.md +++ b/docs-site/src/content/docs/fr/guides/model-routing.md @@ -60,8 +60,8 @@ rabattent jamais les unes sur les autres. | `claude-`, `claude-sonnet-`, `claude-opus-`, `claude-haiku-` | `anthropic` | | `llama-`, `mixtral-`, `gemma-` | `groq` | - Cette correspondance repose sur le nom et, contrairement aux recherches dans `defaultModel` et `models[]`, - ne filtre actuellement pas un fournisseur correspondant dont l'indicateur `disabled` vaut true. + Cette correspondance repose sur le nom et, comme les recherches dans `defaultModel` et `models[]`, + ignore un fournisseur correspondant dont l'indicateur `disabled` vaut true. 7. **`models[]` d'un fournisseur** — si aucune règle de préfixe ne s'est appliquée et qu'un fournisseur actif répertorie l'identifiant dans son tableau `models[]`, ce fournisseur est utilisé. La règle 4 a déjà acheminé diff --git a/docs-site/src/content/docs/guides/model-routing.md b/docs-site/src/content/docs/guides/model-routing.md index 772a078eb74..4bde4a1baef 100644 --- a/docs-site/src/content/docs/guides/model-routing.md +++ b/docs-site/src/content/docs/guides/model-routing.md @@ -57,8 +57,8 @@ through to one another. | `claude-`, `claude-sonnet-`, `claude-opus-`, `claude-haiku-` | `anthropic` | | `llama-`, `mixtral-`, `gemma-` | `groq` | - This matcher is name-based and, unlike the `defaultModel` / `models[]` scans, currently does not - filter a matching provider whose `disabled` flag is true. + This matcher is name-based and, like the `defaultModel` / `models[]` scans, skips a matching + provider whose `disabled` flag is true. 7. **A provider's `models[]`** — if no prefix rule won and an active provider lists the id in its `models[]`, that provider is used. Rule 4 already sends a bare `gpt-*` id to the canonical enabled diff --git a/docs-site/src/content/docs/ja/guides/model-routing.md b/docs-site/src/content/docs/ja/guides/model-routing.md index 900185715a3..2f5d550ff81 100644 --- a/docs-site/src/content/docs/ja/guides/model-routing.md +++ b/docs-site/src/content/docs/ja/guides/model-routing.md @@ -57,8 +57,8 @@ model ID は変更しません。`openai-apikey/` は API key transport | `claude-`、`claude-sonnet-`、`claude-opus-`、`claude-haiku-` | `anthropic` | | `llama-`、`mixtral-`、`gemma-` | `groq` | - この検査は名前のみを見ます。`defaultModel` / `models[]` 検査と異なり、現在は名前が一致したプロバイダーの - `disabled` 値が true でもスキップしません。 + この検査は名前のみを見ます。`defaultModel` / `models[]` 検査と同じく、名前が一致したプロバイダーの + `disabled` 値が true ならスキップします。 7. **プロバイダーの `models[]`** — プレフィックスルールに一致せず、有効なプロバイダーの `models[]` に ID が あればそのプロバイダーを使います。ルール 4 により、bare `gpt-*` ID は別の provider の diff --git a/docs-site/src/content/docs/ko/guides/model-routing.md b/docs-site/src/content/docs/ko/guides/model-routing.md index d20f8320c7d..e63c7c1d1aa 100644 --- a/docs-site/src/content/docs/ko/guides/model-routing.md +++ b/docs-site/src/content/docs/ko/guides/model-routing.md @@ -56,8 +56,8 @@ fallback하지 않습니다. | `claude-`, `claude-sonnet-`, `claude-opus-`, `claude-haiku-` | `anthropic` | | `llama-`, `mixtral-`, `gemma-` | `groq` | - 이 검사는 이름만 봅니다. `defaultModel` / `models[]` 검사와 달리, 현재는 이름이 일치한 프로바이더의 - `disabled` 값이 true여도 건너뛰지 않습니다. + 이 검사는 이름만 봅니다. `defaultModel` / `models[]` 검사와 마찬가지로, 이름이 일치한 프로바이더의 + `disabled` 값이 true이면 건너뜁니다. 7. **프로바이더의 `models[]`** — 프리픽스 규칙과 일치하지 않고 활성 프로바이더의 `models[]`에 id가 있으면 그 프로바이더를 사용합니다. 규칙 4가 bare `gpt-*` id를 다른 provider의 `models[]`가 diff --git a/docs-site/src/content/docs/ru/guides/model-routing.md b/docs-site/src/content/docs/ru/guides/model-routing.md index 117802629dc..5d49e819790 100644 --- a/docs-site/src/content/docs/ru/guides/model-routing.md +++ b/docs-site/src/content/docs/ru/guides/model-routing.md @@ -59,8 +59,8 @@ description: Как opencodex решает, какой провайдер буд | `claude-`, `claude-sonnet-`, `claude-opus-`, `claude-haiku-` | `anthropic` | | `llama-`, `mixtral-`, `gemma-` | `groq` | - Этот сопоставитель работает только по имени и, в отличие от проверок `defaultModel` / - `models[]`, в настоящее время не отфильтровывает совпавшего провайдера, у которого флаг + Этот сопоставитель работает только по имени и, как и проверки `defaultModel` / + `models[]`, пропускает совпавшего провайдера, у которого флаг `disabled` равен true. 7. **`models[]` провайдера** — если ни одно правило префикса не сработало, а активный провайдер diff --git a/docs-site/src/content/docs/tr/guides/model-routing.md b/docs-site/src/content/docs/tr/guides/model-routing.md index c3183bdcb6d..13e97871adb 100644 --- a/docs-site/src/content/docs/tr/guides/model-routing.md +++ b/docs-site/src/content/docs/tr/guides/model-routing.md @@ -67,9 +67,9 @@ devre dışı bırakılmışsa bu açık form yönlendirmek yerine hata fırlat | `claude-`, `claude-sonnet-`, `claude-opus-`, `claude-haiku-` | `anthropic` | | `llama-`, `mixtral-`, `gemma-` | `groq` | -Bu eşleştirici ada dayalıdır ve `defaultModel` / `models[]` taramalarından -farklı olarak şu anda `disabled` bayrağı true olan eşleşen bir sağlayıcıyı -filtrelemez. +Bu eşleştirici ada dayalıdır ve `defaultModel` / `models[]` taramalarında +olduğu gibi `disabled` bayrağı true olan eşleşen bir sağlayıcıyı +atlar. 7. **Bir sağlayıcının `models[]`'i** — hiçbir önek kuralı kazanmadıysa ve aktif bir sağlayıcı kimliği kendi `models[]` içinde listeliyorsa, o sağlayıcı diff --git a/docs-site/src/content/docs/zh-cn/guides/model-routing.md b/docs-site/src/content/docs/zh-cn/guides/model-routing.md index 1b51859ec35..e651eb1e2d6 100644 --- a/docs-site/src/content/docs/zh-cn/guides/model-routing.md +++ b/docs-site/src/content/docs/zh-cn/guides/model-routing.md @@ -51,8 +51,8 @@ transport;这些凭证路径互不 fallback。 | `claude-`、`claude-sonnet-`、`claude-opus-`、`claude-haiku-` | `anthropic` | | `llama-`、`mixtral-`、`gemma-` | `groq` | - 该匹配器只检查名称。与 `defaultModel` / `models[]` 扫描不同,目前即使匹配提供商的 `disabled` - 为 true,它也不会跳过该提供商。 + 该匹配器只检查名称。与 `defaultModel` / `models[]` 扫描相同,如果匹配提供商的 `disabled` + 为 true,它会跳过该提供商。 7. **某个提供商的 `models[]`** —— 如果前缀规则没有命中,而某个启用的提供商在 `models[]` 中列出 该 id,则使用该提供商。规则 4 已经会在其他 provider 的 `models[]` 声明匹配前,把 bare `gpt-*` diff --git a/docs-site/src/content/docs/zh-tw/guides/model-routing.md b/docs-site/src/content/docs/zh-tw/guides/model-routing.md index 0a716351eea..1b0232d5fa4 100644 --- a/docs-site/src/content/docs/zh-tw/guides/model-routing.md +++ b/docs-site/src/content/docs/zh-tw/guides/model-routing.md @@ -32,8 +32,8 @@ OpenAI 的 bare `gpt-*` 使用單一 `openai` provider。`codexAccountMode` 在 | `gpt-`、`o1-`、`o3-`、`o4-` | bare id 使用已設定的 `openai` 帳號模式;API key 顯式使用 `openai-apikey/` | | `llama-`、`mixtral-`、`gemma-` | `groq` | - 該匹配器只檢查名稱。與 `defaultModel` / `models[]` 掃描不同,目前即使匹配供應商的 `disabled` - 為 true,它也不會跳過該供應商。 + 該匹配器只檢查名稱。與 `defaultModel` / `models[]` 掃描相同,如果匹配供應商的 `disabled` + 為 true,它會跳過該供應商。 4. **某個供應商的 `models[]`** —— 如果字首規則沒有命中,而某個啟用的供應商在 `models[]` 中列出 該 id,則使用該供應商。這個順序很重要:只要設定了 OpenAI 名稱的供應商,裸 `gpt-*` id 就會在