oc-codex-multi-auth 6.23.0 → 6.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +795 -729
- package/assets/icon.svg +7 -7
- package/assets/opencode-logo-ornate-dark.svg +18 -18
- package/assets/readme-hero.svg +31 -31
- package/config/README.md +197 -197
- package/config/minimal-opencode.json +14 -14
- package/config/opencode-legacy.json +1346 -1346
- package/config/opencode-modern.json +466 -466
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -57
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts/persistence.d.ts +6 -6
- package/dist/lib/accounts/persistence.d.ts.map +1 -1
- package/dist/lib/accounts/persistence.js +60 -6
- package/dist/lib/accounts/persistence.js.map +1 -1
- package/dist/lib/accounts/recovery.d.ts +5 -1
- package/dist/lib/accounts/recovery.d.ts.map +1 -1
- package/dist/lib/accounts/recovery.js +26 -1
- package/dist/lib/accounts/recovery.js.map +1 -1
- package/dist/lib/accounts/state.d.ts +18 -0
- package/dist/lib/accounts/state.d.ts.map +1 -1
- package/dist/lib/accounts/state.js +26 -2
- package/dist/lib/accounts/state.js.map +1 -1
- package/dist/lib/accounts.d.ts +2 -0
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +7 -1
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/auth/login-runner.d.ts.map +1 -1
- package/dist/lib/auth/login-runner.js +8 -0
- package/dist/lib/auth/login-runner.js.map +1 -1
- package/dist/lib/auth/plan-tier.d.ts.map +1 -1
- package/dist/lib/auth/plan-tier.js +2 -1
- package/dist/lib/auth/plan-tier.js.map +1 -1
- package/dist/lib/codex-usage.d.ts +84 -0
- package/dist/lib/codex-usage.d.ts.map +1 -1
- package/dist/lib/codex-usage.js +186 -5
- package/dist/lib/codex-usage.js.map +1 -1
- package/dist/lib/config.d.ts +16 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +14 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/context-overflow.js +10 -10
- package/dist/lib/desktop-notifications.js +6 -6
- package/dist/lib/oauth-success.js +202 -202
- package/dist/lib/opencode-v2-provider.d.ts +2 -0
- package/dist/lib/opencode-v2-provider.d.ts.map +1 -0
- package/dist/lib/opencode-v2-provider.js +4 -0
- package/dist/lib/opencode-v2-provider.js.map +1 -0
- package/dist/lib/opencode-v2-rpc.d.ts +31 -0
- package/dist/lib/opencode-v2-rpc.d.ts.map +1 -0
- package/dist/lib/opencode-v2-rpc.js +17 -0
- package/dist/lib/opencode-v2-rpc.js.map +1 -0
- package/dist/lib/opencode-v2-status.d.ts +18 -0
- package/dist/lib/opencode-v2-status.d.ts.map +1 -0
- package/dist/lib/opencode-v2-status.js +98 -0
- package/dist/lib/opencode-v2-status.js.map +1 -0
- package/dist/lib/opencode-v2-tui.d.ts +4 -0
- package/dist/lib/opencode-v2-tui.d.ts.map +1 -0
- package/dist/lib/opencode-v2-tui.js +112 -0
- package/dist/lib/opencode-v2-tui.js.map +1 -0
- package/dist/lib/opencode-v2.d.ts +11 -0
- package/dist/lib/opencode-v2.d.ts.map +1 -0
- package/dist/lib/opencode-v2.js +235 -0
- package/dist/lib/opencode-v2.js.map +1 -0
- package/dist/lib/prompts/codex-opencode-bridge.js +67 -67
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +79 -75
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/quota-capacity.d.ts +4 -0
- package/dist/lib/quota-capacity.d.ts.map +1 -0
- package/dist/lib/quota-capacity.js +45 -0
- package/dist/lib/quota-capacity.js.map +1 -0
- package/dist/lib/quota-overview.d.ts +13 -27
- package/dist/lib/quota-overview.d.ts.map +1 -1
- package/dist/lib/quota-overview.js +59 -99
- package/dist/lib/quota-overview.js.map +1 -1
- package/dist/lib/quota-recovery.d.ts +5 -0
- package/dist/lib/quota-recovery.d.ts.map +1 -0
- package/dist/lib/quota-recovery.js +66 -0
- package/dist/lib/quota-recovery.js.map +1 -0
- package/dist/lib/request/fetch-helpers.d.ts +1 -1
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +1 -1
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/schemas.d.ts +14 -1
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +7 -2
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/load-save.d.ts.map +1 -1
- package/dist/lib/storage/load-save.js +22 -20
- package/dist/lib/storage/load-save.js.map +1 -1
- package/dist/lib/storage/state.d.ts +8 -0
- package/dist/lib/storage/state.d.ts.map +1 -1
- package/dist/lib/storage/state.js +47 -20
- package/dist/lib/storage/state.js.map +1 -1
- package/dist/lib/tools/codex-limits.d.ts.map +1 -1
- package/dist/lib/tools/codex-limits.js +49 -3
- package/dist/lib/tools/codex-limits.js.map +1 -1
- package/dist/lib/tui-quota-cache.d.ts +8 -0
- package/dist/lib/tui-quota-cache.d.ts.map +1 -1
- package/dist/lib/tui-quota-cache.js +4 -1
- package/dist/lib/tui-quota-cache.js.map +1 -1
- package/dist/lib/tui-quota-overview.d.ts.map +1 -1
- package/dist/lib/tui-quota-overview.js +15 -2
- package/dist/lib/tui-quota-overview.js.map +1 -1
- package/dist/lib/tui-status-slot.d.ts +3 -0
- package/dist/lib/tui-status-slot.d.ts.map +1 -0
- package/dist/lib/tui-status-slot.js +27 -0
- package/dist/lib/tui-status-slot.js.map +1 -0
- package/dist/lib/tui-status.d.ts +1 -0
- package/dist/lib/tui-status.d.ts.map +1 -1
- package/dist/lib/tui-status.js +1 -0
- package/dist/lib/tui-status.js.map +1 -1
- package/dist/tui.d.ts +10 -3
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +22 -1
- package/dist/tui.js.map +1 -1
- package/package.json +157 -155
- package/scripts/audit-dev-allowlist.js +114 -114
- package/scripts/clean-dist.js +27 -27
- package/scripts/copy-oauth-success.js +47 -47
- package/scripts/install-oc-codex-multi-auth-core.js +2661 -2016
- package/scripts/install-oc-codex-multi-auth.js +37 -37
- package/scripts/test-all-models.sh +260 -260
- package/scripts/validate-model-map.sh +97 -97
package/assets/icon.svg
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-label="oc-codex-multi-auth icon">
|
|
2
|
-
<rect width="512" height="512" rx="112" fill="#0b0f19"/>
|
|
3
|
-
<circle cx="168" cy="178" r="54" fill="#38bdf8" opacity=".95"/>
|
|
4
|
-
<circle cx="344" cy="178" r="54" fill="#a78bfa" opacity=".95"/>
|
|
5
|
-
<circle cx="256" cy="334" r="64" fill="#34d399" opacity=".95"/>
|
|
6
|
-
<path d="M206 205 256 282l50-77" fill="none" stroke="#f8fafc" stroke-width="34" stroke-linecap="round" stroke-linejoin="round" opacity=".92"/>
|
|
7
|
-
<path d="M144 334h224" fill="none" stroke="#f8fafc" stroke-width="28" stroke-linecap="round" opacity=".9"/>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-label="oc-codex-multi-auth icon">
|
|
2
|
+
<rect width="512" height="512" rx="112" fill="#0b0f19"/>
|
|
3
|
+
<circle cx="168" cy="178" r="54" fill="#38bdf8" opacity=".95"/>
|
|
4
|
+
<circle cx="344" cy="178" r="54" fill="#a78bfa" opacity=".95"/>
|
|
5
|
+
<circle cx="256" cy="334" r="64" fill="#34d399" opacity=".95"/>
|
|
6
|
+
<path d="M206 205 256 282l50-77" fill="none" stroke="#f8fafc" stroke-width="34" stroke-linecap="round" stroke-linejoin="round" opacity=".92"/>
|
|
7
|
+
<path d="M144 334h224" fill="none" stroke="#f8fafc" stroke-width="28" stroke-linecap="round" opacity=".9"/>
|
|
8
8
|
</svg>
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
<svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M18 30H6V18H18V30Z" fill="#4B4646"/>
|
|
3
|
-
<path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#B7B1B1"/>
|
|
4
|
-
<path d="M48 30H36V18H48V30Z" fill="#4B4646"/>
|
|
5
|
-
<path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#B7B1B1"/>
|
|
6
|
-
<path d="M84 24V30H66V24H84Z" fill="#4B4646"/>
|
|
7
|
-
<path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#B7B1B1"/>
|
|
8
|
-
<path d="M108 36H96V18H108V36Z" fill="#4B4646"/>
|
|
9
|
-
<path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#B7B1B1"/>
|
|
10
|
-
<path d="M144 30H126V18H144V30Z" fill="#4B4646"/>
|
|
11
|
-
<path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#F1ECEC"/>
|
|
12
|
-
<path d="M168 30H156V18H168V30Z" fill="#4B4646"/>
|
|
13
|
-
<path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#F1ECEC"/>
|
|
14
|
-
<path d="M198 30H186V18H198V30Z" fill="#4B4646"/>
|
|
15
|
-
<path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#F1ECEC"/>
|
|
16
|
-
<path d="M234 24V30H216V24H234Z" fill="#4B4646"/>
|
|
17
|
-
<path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#F1ECEC"/>
|
|
18
|
-
</svg>
|
|
1
|
+
<svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M18 30H6V18H18V30Z" fill="#4B4646"/>
|
|
3
|
+
<path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#B7B1B1"/>
|
|
4
|
+
<path d="M48 30H36V18H48V30Z" fill="#4B4646"/>
|
|
5
|
+
<path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#B7B1B1"/>
|
|
6
|
+
<path d="M84 24V30H66V24H84Z" fill="#4B4646"/>
|
|
7
|
+
<path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#B7B1B1"/>
|
|
8
|
+
<path d="M108 36H96V18H108V36Z" fill="#4B4646"/>
|
|
9
|
+
<path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#B7B1B1"/>
|
|
10
|
+
<path d="M144 30H126V18H144V30Z" fill="#4B4646"/>
|
|
11
|
+
<path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#F1ECEC"/>
|
|
12
|
+
<path d="M168 30H156V18H168V30Z" fill="#4B4646"/>
|
|
13
|
+
<path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#F1ECEC"/>
|
|
14
|
+
<path d="M198 30H186V18H198V30Z" fill="#4B4646"/>
|
|
15
|
+
<path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#F1ECEC"/>
|
|
16
|
+
<path d="M234 24V30H216V24H234Z" fill="#4B4646"/>
|
|
17
|
+
<path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#F1ECEC"/>
|
|
18
|
+
</svg>
|
package/assets/readme-hero.svg
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="300" viewBox="0 0 1200 300" role="img" aria-label="oc-codex-multi-auth">
|
|
2
|
-
<defs>
|
|
3
|
-
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
-
<stop offset="0%" stop-color="#0f172a" />
|
|
5
|
-
<stop offset="100%" stop-color="#1f2937" />
|
|
6
|
-
</linearGradient>
|
|
7
|
-
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
|
8
|
-
<stop offset="0%" stop-color="#38bdf8" />
|
|
9
|
-
<stop offset="100%" stop-color="#22d3ee" />
|
|
10
|
-
</linearGradient>
|
|
11
|
-
</defs>
|
|
12
|
-
<rect width="1200" height="300" rx="28" fill="url(#bg)" />
|
|
13
|
-
<g opacity="0.12">
|
|
14
|
-
<circle cx="1020" cy="70" r="120" fill="#38bdf8" />
|
|
15
|
-
<circle cx="150" cy="260" r="140" fill="#22d3ee" />
|
|
16
|
-
</g>
|
|
17
|
-
<g fill="none" stroke="url(#accent)" stroke-width="8" stroke-linecap="round" stroke-linejoin="round">
|
|
18
|
-
<path d="M160 95 L100 150 L160 205" />
|
|
19
|
-
<path d="M280 95 L340 150 L280 205" />
|
|
20
|
-
<path d="M205 80 L235 220" />
|
|
21
|
-
</g>
|
|
22
|
-
<text x="420" y="120" fill="#e2e8f0" font-size="42" font-family="'IBM Plex Sans','Segoe UI',Arial,sans-serif" font-weight="600">
|
|
23
|
-
oc-codex-multi-auth
|
|
24
|
-
</text>
|
|
25
|
-
<text x="420" y="170" fill="#cbd5f5" font-size="24" font-family="'IBM Plex Sans','Segoe UI',Arial,sans-serif">
|
|
26
|
-
Codex-first ChatGPT Plus/Pro auth for OpenCode
|
|
27
|
-
</text>
|
|
28
|
-
<text x="420" y="220" fill="#7dd3fc" font-size="18" font-family="'IBM Plex Sans','Segoe UI',Arial,sans-serif">
|
|
29
|
-
One-command install, account migration, modern variants
|
|
30
|
-
</text>
|
|
31
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="300" viewBox="0 0 1200 300" role="img" aria-label="oc-codex-multi-auth">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0%" stop-color="#0f172a" />
|
|
5
|
+
<stop offset="100%" stop-color="#1f2937" />
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
|
8
|
+
<stop offset="0%" stop-color="#38bdf8" />
|
|
9
|
+
<stop offset="100%" stop-color="#22d3ee" />
|
|
10
|
+
</linearGradient>
|
|
11
|
+
</defs>
|
|
12
|
+
<rect width="1200" height="300" rx="28" fill="url(#bg)" />
|
|
13
|
+
<g opacity="0.12">
|
|
14
|
+
<circle cx="1020" cy="70" r="120" fill="#38bdf8" />
|
|
15
|
+
<circle cx="150" cy="260" r="140" fill="#22d3ee" />
|
|
16
|
+
</g>
|
|
17
|
+
<g fill="none" stroke="url(#accent)" stroke-width="8" stroke-linecap="round" stroke-linejoin="round">
|
|
18
|
+
<path d="M160 95 L100 150 L160 205" />
|
|
19
|
+
<path d="M280 95 L340 150 L280 205" />
|
|
20
|
+
<path d="M205 80 L235 220" />
|
|
21
|
+
</g>
|
|
22
|
+
<text x="420" y="120" fill="#e2e8f0" font-size="42" font-family="'IBM Plex Sans','Segoe UI',Arial,sans-serif" font-weight="600">
|
|
23
|
+
oc-codex-multi-auth
|
|
24
|
+
</text>
|
|
25
|
+
<text x="420" y="170" fill="#cbd5f5" font-size="24" font-family="'IBM Plex Sans','Segoe UI',Arial,sans-serif">
|
|
26
|
+
Codex-first ChatGPT Plus/Pro auth for OpenCode
|
|
27
|
+
</text>
|
|
28
|
+
<text x="420" y="220" fill="#7dd3fc" font-size="18" font-family="'IBM Plex Sans','Segoe UI',Arial,sans-serif">
|
|
29
|
+
One-command install, account migration, modern variants
|
|
30
|
+
</text>
|
|
31
|
+
</svg>
|
package/config/README.md
CHANGED
|
@@ -1,197 +1,197 @@
|
|
|
1
|
-
# Configuration
|
|
2
|
-
|
|
3
|
-
This directory contains the official OpenCode config templates for `oc-codex-multi-auth`.
|
|
4
|
-
|
|
5
|
-
## Required: choose the right config file
|
|
6
|
-
|
|
7
|
-
| File | OpenCode version | Description |
|
|
8
|
-
|------|------------------|-------------|
|
|
9
|
-
| [`opencode-modern.json`](./opencode-modern.json) | **v1.0.210+** | Variant-based config: **10 base models**, **53 variants** total |
|
|
10
|
-
| [`opencode-legacy.json`](./opencode-legacy.json) | **v1.0.209 and below** | Legacy explicit entries: **53** individual model definitions |
|
|
11
|
-
|
|
12
|
-
## Install modes
|
|
13
|
-
|
|
14
|
-
| Installer flag | What gets written |
|
|
15
|
-
|----------------|-------------------|
|
|
16
|
-
| default / `--plugin-only` | Register plugin entries; preserve `provider.openai` |
|
|
17
|
-
| `--modern` | Compact modern: 10 base OAuth families + variant picker |
|
|
18
|
-
| `--full` | Modern bases **plus** explicit legacy selector IDs |
|
|
19
|
-
| `--legacy` | Explicit-only catalog (53 preset model entries) |
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
npx -y oc-codex-multi-auth@latest # plugin entries only
|
|
23
|
-
npx -y oc-codex-multi-auth@latest --modern # compact modern catalog
|
|
24
|
-
npx -y oc-codex-multi-auth@latest --full # modern + explicit IDs
|
|
25
|
-
npx -y oc-codex-multi-auth@latest --legacy # explicit only
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Run the installer with `--modern` to remove explicit preset IDs and stale base models left by earlier plugin catalogs.
|
|
29
|
-
|
|
30
|
-
## Quick pick
|
|
31
|
-
|
|
32
|
-
If your OpenCode version is v1.0.210 or newer:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
cp config/opencode-modern.json ~/.config/opencode/opencode.json
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
If your OpenCode version is v1.0.209 or older:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
cp config/opencode-legacy.json ~/.config/opencode/opencode.json
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Check your version with:
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
opencode --version
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Why there are two templates
|
|
51
|
-
|
|
52
|
-
OpenCode v1.0.210+ added model `variants`, so one model entry can expose multiple reasoning levels. That keeps modern config smaller while preserving the same effective presets.
|
|
53
|
-
|
|
54
|
-
Both templates include:
|
|
55
|
-
|
|
56
|
-
### Base model families (10)
|
|
57
|
-
|
|
58
|
-
| Base | Variants (modern) |
|
|
59
|
-
|------|-------------------|
|
|
60
|
-
| `gpt-6-astra` | low, medium, high, xhigh, max, ultra |
|
|
61
|
-
| `gpt-6-sol` | low, medium, high, xhigh, max, ultra |
|
|
62
|
-
| `gpt-6-luna` | low, medium, high, xhigh, max |
|
|
63
|
-
| `gpt-5.6-sol` | low, medium, high, xhigh, max, ultra |
|
|
64
|
-
| `gpt-5.6-terra` | low, medium, high, xhigh, max, ultra |
|
|
65
|
-
| `gpt-5.6-luna` | low, medium, high, xhigh, max |
|
|
66
|
-
| `gpt-5.5` | none, low, medium, high, xhigh |
|
|
67
|
-
| `gpt-5.5-fast` | none, low, medium, high, xhigh |
|
|
68
|
-
| `gpt-5.4-nano` | none, low, medium, high, xhigh |
|
|
69
|
-
| `gpt-5.1` | none, low, medium, high |
|
|
70
|
-
|
|
71
|
-
`gpt-5.4-mini`, `gpt-5-codex`, `gpt-5.1-codex`, `gpt-5.1-codex-max`, and `gpt-5.1-codex-mini` were removed from both templates: `gpt-5.4-mini` retired from Codex with ChatGPT sign-in on 2026-08-31 (replacement `gpt-6-luna`), and `gpt-5-codex`/`gpt-5.1-codex`/`gpt-5.1-codex-max`/`gpt-5.1-codex-mini` were shut down from the OpenAI API on 2026-07-23 (replacement `gpt-5.6-sol`, or `gpt-5.6-terra` for `gpt-5.1-codex-mini`). They are no longer shipped, but routing is unchanged: a user who still types one of these ids by hand is still routed and rescued by the default fallback chains below.
|
|
72
|
-
|
|
73
|
-
Shared template requirements:
|
|
74
|
-
|
|
75
|
-
- `store: false` and `include: ["reasoning.encrypted_content"]`
|
|
76
|
-
- Context metadata:
|
|
77
|
-
- `gpt-6-astra` / `gpt-6-sol` / `gpt-6-luna` / `gpt-5.6-sol` / `gpt-5.6-terra` / `gpt-5.6-luna` / `gpt-5.5` / `gpt-5.5-fast`: context **1,050,000**, output **128,000**
|
|
78
|
-
- `gpt-5.4-nano`: context **400,000**, output **128,000**
|
|
79
|
-
- `gpt-5.1`: context **272,000**, output **128,000**
|
|
80
|
-
|
|
81
|
-
Use `opencode debug config` to verify that these template entries were merged into your effective config. A `--modern` install shows base OAuth entries such as `gpt-5.5` / `gpt-5.6-sol`; the separate OpenCode variant picker exposes the reasoning presets. The default install writes no catalog, so these entries appear only if OpenCode supplies them itself.
|
|
82
|
-
|
|
83
|
-
If your OpenCode runtime supports global compaction tuning, you can also set values near the largest context windows (for example ~1M context / slightly lower auto-compact limit). Prefer values that match your selected model family.
|
|
84
|
-
|
|
85
|
-
## GPT-6 Astra notes
|
|
86
|
-
|
|
87
|
-
- Served over the **responses-lite** path. Astra's catalog entry landed in openai/codex commit `ed391d4d` (2026-09-03) and reads `use_responses_lite: true`, `tool_mode: "code_mode_only"`, `multi_agent_version: "v2"`, so the shape is read rather than inferred. The `CODEX_AUTH_ASTRA_RESPONSES_LITE` switch that 6.17.0 carried while this was unverifiable has been removed.
|
|
88
|
-
- Rollout gate: Astra reached a limited set of organizations first, so accounts outside it auto-fallback
|
|
89
|
-
`gpt-6-astra → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
90
|
-
(disable with `CODEX_AUTH_DISABLE_GPT6_AUTO_FALLBACK=1`).
|
|
91
|
-
- Efforts are low through `ultra`, per OpenAI's Codex model list. `ultra` is sent as `max` on the wire, as with 5.6.
|
|
92
|
-
- Bare `gpt-6` is a plugin-side alias for `gpt-6-astra`, unchanged by the Sol/Luna additions. `gpt-6-astra-pro` is not a Codex-routable id and collapses onto `gpt-6-astra`.
|
|
93
|
-
|
|
94
|
-
## GPT-6 Sol / Luna notes
|
|
95
|
-
|
|
96
|
-
- `gpt-6-sol` ("GPT 6 Sol") and `gpt-6-luna` ("GPT 6 Luna") were added to the Codex model catalog on 2026-09-22 (openai/codex commit `49e95cc7`). Sol is the workhorse model for coding and everyday work; Luna is the fast, affordable model for easier tasks.
|
|
97
|
-
- Both ship in the modern and legacy templates. Sol supports low/medium/high/xhigh/max/ultra; Luna supports low/medium/high/xhigh/max (no `ultra`). Neither accepts `none` or `minimal`; both clamp to `low`.
|
|
98
|
-
- Served over the **responses-lite** path with default client identity `opencode`, same as Astra.
|
|
99
|
-
- `ultra` is sent as `max` on the wire, as with Astra and 5.6.
|
|
100
|
-
- Covered by the same `CODEX_AUTH_DISABLE_GPT6_AUTO_FALLBACK` opt-out as Astra.
|
|
101
|
-
|
|
102
|
-
## GPT-5.5 notes
|
|
103
|
-
|
|
104
|
-
- Still shipped and live. OpenAI's Codex models page lists GPT-5.5 as retiring from Codex with ChatGPT sign-in on 2026-10-14, with `gpt-6-sol` as the replacement on Plus/Pro/Business/Enterprise/Edu and `gpt-6-luna` on Free/Go.
|
|
105
|
-
|
|
106
|
-
## Cyber tier notes (Daybreak-gated)
|
|
107
|
-
|
|
108
|
-
- `gpt-daybreak-blue-latest` (defensive) and `gpt-daybreak-red-latest` (cyber-permissive, for authorized security research) are catalog-verified cyber-specialty models, served over the responses-lite path. `gpt-5.6-cyber` is OpenAI's published alias fronting them, and belongs to the 5.6 generation rather than GPT-6.
|
|
109
|
-
- All three need Daybreak program approval, and Blue/Red are `visibility: "hide"` in the catalog, so they are **not** in the shipped templates, the same policy as `gpt-5.3-codex-spark` below. The plugin routes them fully; entitled users add the ids by hand.
|
|
110
|
-
- None has a fallback chain on purpose, because a cyber-specialty request must not be silently answered by a general model.
|
|
111
|
-
|
|
112
|
-
## GPT-5.6 notes
|
|
113
|
-
|
|
114
|
-
- Served over the **responses-lite** path (`use_responses_lite`).
|
|
115
|
-
- Preview entitlement: accounts without access auto-fallback
|
|
116
|
-
`gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
117
|
-
(disable with `CODEX_AUTH_DISABLE_GPT56_AUTO_FALLBACK=1`).
|
|
118
|
-
- Default client identity for every responses-lite model (5.6, GPT-6 Astra/Sol/Luna, Daybreak) is host/opencode (`originator: opencode`); other families default to Codex CLI identity.
|
|
119
|
-
- `ultra` is accepted as a client-side alias and sent as `max` on the wire (no subagent orchestration in this plugin).
|
|
120
|
-
|
|
121
|
-
## Spark model note
|
|
122
|
-
|
|
123
|
-
The templates intentionally do **not** include `gpt-5.3-codex-spark` by default. Spark is a distinct backend model id, not an alias of `gpt-5-codex`, and it is often entitlement-gated at the account/workspace level, so shipping it by default causes avoidable startup failures for many users.
|
|
124
|
-
|
|
125
|
-
If your workspace is entitled, you can add Spark model IDs manually.
|
|
126
|
-
|
|
127
|
-
## Usage examples
|
|
128
|
-
|
|
129
|
-
Recommended compact UI selectors:
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
opencode run "task" --model=openai/gpt-5.5 --variant=medium
|
|
133
|
-
opencode run "task" --model=openai/gpt-5.5-fast --variant=medium
|
|
134
|
-
opencode run "task" --model=openai/gpt-6-astra --variant=medium
|
|
135
|
-
opencode run "task" --model=openai/gpt-6-sol --variant=medium
|
|
136
|
-
opencode run "task" --model=openai/gpt-6-luna --variant=medium
|
|
137
|
-
opencode run "task" --model=openai/gpt-5.6-sol --variant=medium
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
If you need direct explicit selector IDs for scripts, install with:
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
npx -y oc-codex-multi-auth@latest --full
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
## Minimal config (advanced)
|
|
147
|
-
|
|
148
|
-
A barebones debug template is available at [`minimal-opencode.json`](./minimal-opencode.json). It omits the full preset catalog.
|
|
149
|
-
|
|
150
|
-
## Unsupported-model behavior
|
|
151
|
-
|
|
152
|
-
Current defaults are strict entitlement handling except for common default-selector entitlement gates:
|
|
153
|
-
|
|
154
|
-
- **GPT-6 Astra** auto-fallback: `gpt-6-astra → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
155
|
-
- **Daybreak** cyber tiers: no fallback chain, deliberately
|
|
156
|
-
- **GPT-5.6** auto-fallback: `gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
157
|
-
- **`gpt-5.5`** can auto-fallback through `gpt-6-sol`, `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-6-luna`, then `gpt-5.6-luna`; canonical **`gpt-5-codex`** can auto-fallback through `gpt-5.6-terra`, then `gpt-5.6-luna` when the backend reports the selected model is not supported
|
|
158
|
-
- `unsupportedCodexPolicy: "strict"` returns other entitlement errors directly
|
|
159
|
-
- set `unsupportedCodexPolicy: "fallback"` (or `CODEX_AUTH_UNSUPPORTED_MODEL_POLICY=fallback`) to enable the full fallback chain for manual/legacy selectors
|
|
160
|
-
- `fallbackToGpt52OnUnsupportedGpt53: true` keeps the legacy `gpt-5.3-codex -> gpt-5.2-codex` edge inside fallback mode
|
|
161
|
-
- user-typed `gpt-5.5-pro*` is canonicalized to `gpt-5.5` before fallback because GPT-5.5 Pro is ChatGPT-only, not a Codex-routable model; `gpt-6-astra-pro*` is canonicalized to `gpt-6-astra` for the same reason
|
|
162
|
-
- legacy Codex selector `gpt-5.1-codex` normalizes to canonical `gpt-5-codex`, while `gpt-5.2-codex` and `gpt-5.3-codex` route as distinct backend model IDs; if canonical Codex or a gated model fails entitlement, default auto-fallback can retry through `gpt-5.6-terra`, then `gpt-5.6-luna`
|
|
163
|
-
- set `CODEX_AUTH_DISABLE_GPT6_AUTO_FALLBACK=1` to disable GPT-6 Astra/Sol/Luna auto-fallback
|
|
164
|
-
- set `CODEX_AUTH_DISABLE_GPT56_AUTO_FALLBACK=1` to disable GPT-5.6 auto-fallback
|
|
165
|
-
- set `CODEX_AUTH_DISABLE_GPT55_AUTO_FALLBACK=1` to disable GPT-5.5 auto-fallback
|
|
166
|
-
- set `CODEX_AUTH_DISABLE_CODEX_AUTO_FALLBACK=1` to disable canonical Codex/GPT-5.4-family auto-fallback
|
|
167
|
-
- `gpt-5.4-pro -> gpt-6-sol -> gpt-5.6-terra -> gpt-5.6-luna` applies when you manually select `gpt-5.4-pro`
|
|
168
|
-
- `unsupportedCodexFallbackChain` lets you override fallback order per model
|
|
169
|
-
- a single request hops across at most 6 quota-exhausted models (`MAX_QUOTA_FALLBACK_SWITCHES`, was 3)
|
|
170
|
-
|
|
171
|
-
Default chains when generic fallback policy is enabled (and empty override map). The general rows follow one order, most capable first (`gpt-6-astra > gpt-6-sol > gpt-5.6-sol > gpt-5.6-terra > gpt-5.5 > gpt-6-luna > gpt-5.6-luna`), and each row is that order's tail after its own model:
|
|
172
|
-
|
|
173
|
-
- `gpt-6-astra → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna` (also auto under default strict for rollout gates)
|
|
174
|
-
- `gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
175
|
-
- `gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna` (also auto under default strict for preview gates)
|
|
176
|
-
- `gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
177
|
-
- `gpt-5.5 → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-6-luna → gpt-5.6-luna`
|
|
178
|
-
- `gpt-6-luna → gpt-5.6-luna → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5`
|
|
179
|
-
- `gpt-5.6-luna → gpt-6-luna → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5`
|
|
180
|
-
- `gpt-5-codex → gpt-5.6-terra → gpt-5.6-luna`
|
|
181
|
-
|
|
182
|
-
> The terminal is `gpt-5.6-luna`, not `gpt-5.5`: OpenAI's Codex model docs say GPT-5.5 retires from Codex with ChatGPT sign-in on 2026-10-14, while 5.6 Luna is listed for every plan with no retirement date. `gpt-5.2`, the terminal before that, left the catalog in openai/codex #44250 (2026-09-09). GPT-5.4 and GPT-5.4 Mini were retired from Codex on 2026-08-31; the catalog marks both `visibility: "hide"` and names their replacements (`gpt-5.4` -> `gpt-6-sol`, `gpt-5.4-mini` -> `gpt-6-luna`), and `gpt-5.4-nano` has no catalog entry. The default chains therefore end at live models rather than leading with retired ones.
|
|
183
|
-
- `gpt-5.4 → gpt-6-sol → gpt-5.6-terra → gpt-5.6-luna`
|
|
184
|
-
- `gpt-5.4-mini → gpt-6-luna → gpt-5.6-luna`
|
|
185
|
-
- `gpt-5.4-nano → gpt-6-luna → gpt-5.6-luna`
|
|
186
|
-
- `gpt-5.4-pro → gpt-6-sol → gpt-5.6-terra → gpt-5.6-luna` (if you manually select `gpt-5.4-pro`)
|
|
187
|
-
- `gpt-5.3-codex → gpt-5-codex → gpt-5.2-codex`
|
|
188
|
-
- `gpt-5.3-codex-spark → gpt-5-codex → gpt-5.3-codex → gpt-5.2-codex` (only if Spark IDs are added manually)
|
|
189
|
-
- `gpt-5.2-codex → gpt-5-codex`
|
|
190
|
-
- `gpt-5.1-codex → gpt-5-codex`
|
|
191
|
-
|
|
192
|
-
## Additional docs
|
|
193
|
-
|
|
194
|
-
- Main config reference: [`docs/configuration.md`](../docs/configuration.md)
|
|
195
|
-
- Getting started: [`docs/getting-started.md`](../docs/getting-started.md)
|
|
196
|
-
- Tools and CLI: [`docs/tools-and-cli.md`](../docs/tools-and-cli.md)
|
|
197
|
-
- Troubleshooting: [`docs/troubleshooting.md`](../docs/troubleshooting.md)
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
This directory contains the official OpenCode config templates for `oc-codex-multi-auth`.
|
|
4
|
+
|
|
5
|
+
## Required: choose the right config file
|
|
6
|
+
|
|
7
|
+
| File | OpenCode version | Description |
|
|
8
|
+
|------|------------------|-------------|
|
|
9
|
+
| [`opencode-modern.json`](./opencode-modern.json) | **v1.0.210+** | Variant-based config: **10 base models**, **53 variants** total |
|
|
10
|
+
| [`opencode-legacy.json`](./opencode-legacy.json) | **v1.0.209 and below** | Legacy explicit entries: **53** individual model definitions |
|
|
11
|
+
|
|
12
|
+
## Install modes
|
|
13
|
+
|
|
14
|
+
| Installer flag | What gets written |
|
|
15
|
+
|----------------|-------------------|
|
|
16
|
+
| default / `--plugin-only` | Register plugin entries; preserve `provider.openai` |
|
|
17
|
+
| `--modern` | Compact modern: 10 base OAuth families + variant picker |
|
|
18
|
+
| `--full` | Modern bases **plus** explicit legacy selector IDs |
|
|
19
|
+
| `--legacy` | Explicit-only catalog (53 preset model entries) |
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx -y oc-codex-multi-auth@latest # plugin entries only
|
|
23
|
+
npx -y oc-codex-multi-auth@latest --modern # compact modern catalog
|
|
24
|
+
npx -y oc-codex-multi-auth@latest --full # modern + explicit IDs
|
|
25
|
+
npx -y oc-codex-multi-auth@latest --legacy # explicit only
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Run the installer with `--modern` to remove explicit preset IDs and stale base models left by earlier plugin catalogs.
|
|
29
|
+
|
|
30
|
+
## Quick pick
|
|
31
|
+
|
|
32
|
+
If your OpenCode version is v1.0.210 or newer:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
cp config/opencode-modern.json ~/.config/opencode/opencode.json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
If your OpenCode version is v1.0.209 or older:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
cp config/opencode-legacy.json ~/.config/opencode/opencode.json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Check your version with:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
opencode --version
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Why there are two templates
|
|
51
|
+
|
|
52
|
+
OpenCode v1.0.210+ added model `variants`, so one model entry can expose multiple reasoning levels. That keeps modern config smaller while preserving the same effective presets.
|
|
53
|
+
|
|
54
|
+
Both templates include:
|
|
55
|
+
|
|
56
|
+
### Base model families (10)
|
|
57
|
+
|
|
58
|
+
| Base | Variants (modern) |
|
|
59
|
+
|------|-------------------|
|
|
60
|
+
| `gpt-6-astra` | low, medium, high, xhigh, max, ultra |
|
|
61
|
+
| `gpt-6-sol` | low, medium, high, xhigh, max, ultra |
|
|
62
|
+
| `gpt-6-luna` | low, medium, high, xhigh, max |
|
|
63
|
+
| `gpt-5.6-sol` | low, medium, high, xhigh, max, ultra |
|
|
64
|
+
| `gpt-5.6-terra` | low, medium, high, xhigh, max, ultra |
|
|
65
|
+
| `gpt-5.6-luna` | low, medium, high, xhigh, max |
|
|
66
|
+
| `gpt-5.5` | none, low, medium, high, xhigh |
|
|
67
|
+
| `gpt-5.5-fast` | none, low, medium, high, xhigh |
|
|
68
|
+
| `gpt-5.4-nano` | none, low, medium, high, xhigh |
|
|
69
|
+
| `gpt-5.1` | none, low, medium, high |
|
|
70
|
+
|
|
71
|
+
`gpt-5.4-mini`, `gpt-5-codex`, `gpt-5.1-codex`, `gpt-5.1-codex-max`, and `gpt-5.1-codex-mini` were removed from both templates: `gpt-5.4-mini` retired from Codex with ChatGPT sign-in on 2026-08-31 (replacement `gpt-6-luna`), and `gpt-5-codex`/`gpt-5.1-codex`/`gpt-5.1-codex-max`/`gpt-5.1-codex-mini` were shut down from the OpenAI API on 2026-07-23 (replacement `gpt-5.6-sol`, or `gpt-5.6-terra` for `gpt-5.1-codex-mini`). They are no longer shipped, but routing is unchanged: a user who still types one of these ids by hand is still routed and rescued by the default fallback chains below.
|
|
72
|
+
|
|
73
|
+
Shared template requirements:
|
|
74
|
+
|
|
75
|
+
- `store: false` and `include: ["reasoning.encrypted_content"]`
|
|
76
|
+
- Context metadata:
|
|
77
|
+
- `gpt-6-astra` / `gpt-6-sol` / `gpt-6-luna` / `gpt-5.6-sol` / `gpt-5.6-terra` / `gpt-5.6-luna` / `gpt-5.5` / `gpt-5.5-fast`: context **1,050,000**, output **128,000**
|
|
78
|
+
- `gpt-5.4-nano`: context **400,000**, output **128,000**
|
|
79
|
+
- `gpt-5.1`: context **272,000**, output **128,000**
|
|
80
|
+
|
|
81
|
+
Use `opencode debug config` to verify that these template entries were merged into your effective config. A `--modern` install shows base OAuth entries such as `gpt-5.5` / `gpt-5.6-sol`; the separate OpenCode variant picker exposes the reasoning presets. The default install writes no catalog, so these entries appear only if OpenCode supplies them itself.
|
|
82
|
+
|
|
83
|
+
If your OpenCode runtime supports global compaction tuning, you can also set values near the largest context windows (for example ~1M context / slightly lower auto-compact limit). Prefer values that match your selected model family.
|
|
84
|
+
|
|
85
|
+
## GPT-6 Astra notes
|
|
86
|
+
|
|
87
|
+
- Served over the **responses-lite** path. Astra's catalog entry landed in openai/codex commit `ed391d4d` (2026-09-03) and reads `use_responses_lite: true`, `tool_mode: "code_mode_only"`, `multi_agent_version: "v2"`, so the shape is read rather than inferred. The `CODEX_AUTH_ASTRA_RESPONSES_LITE` switch that 6.17.0 carried while this was unverifiable has been removed.
|
|
88
|
+
- Rollout gate: Astra reached a limited set of organizations first, so accounts outside it auto-fallback
|
|
89
|
+
`gpt-6-astra → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
90
|
+
(disable with `CODEX_AUTH_DISABLE_GPT6_AUTO_FALLBACK=1`).
|
|
91
|
+
- Efforts are low through `ultra`, per OpenAI's Codex model list. `ultra` is sent as `max` on the wire, as with 5.6.
|
|
92
|
+
- Bare `gpt-6` is a plugin-side alias for `gpt-6-astra`, unchanged by the Sol/Luna additions. `gpt-6-astra-pro` is not a Codex-routable id and collapses onto `gpt-6-astra`.
|
|
93
|
+
|
|
94
|
+
## GPT-6 Sol / Luna notes
|
|
95
|
+
|
|
96
|
+
- `gpt-6-sol` ("GPT 6 Sol") and `gpt-6-luna` ("GPT 6 Luna") were added to the Codex model catalog on 2026-09-22 (openai/codex commit `49e95cc7`). Sol is the workhorse model for coding and everyday work; Luna is the fast, affordable model for easier tasks.
|
|
97
|
+
- Both ship in the modern and legacy templates. Sol supports low/medium/high/xhigh/max/ultra; Luna supports low/medium/high/xhigh/max (no `ultra`). Neither accepts `none` or `minimal`; both clamp to `low`.
|
|
98
|
+
- Served over the **responses-lite** path with default client identity `opencode`, same as Astra.
|
|
99
|
+
- `ultra` is sent as `max` on the wire, as with Astra and 5.6.
|
|
100
|
+
- Covered by the same `CODEX_AUTH_DISABLE_GPT6_AUTO_FALLBACK` opt-out as Astra.
|
|
101
|
+
|
|
102
|
+
## GPT-5.5 notes
|
|
103
|
+
|
|
104
|
+
- Still shipped and live. OpenAI's Codex models page lists GPT-5.5 as retiring from Codex with ChatGPT sign-in on 2026-10-14, with `gpt-6-sol` as the replacement on Plus/Pro/Business/Enterprise/Edu and `gpt-6-luna` on Free/Go.
|
|
105
|
+
|
|
106
|
+
## Cyber tier notes (Daybreak-gated)
|
|
107
|
+
|
|
108
|
+
- `gpt-daybreak-blue-latest` (defensive) and `gpt-daybreak-red-latest` (cyber-permissive, for authorized security research) are catalog-verified cyber-specialty models, served over the responses-lite path. `gpt-5.6-cyber` is OpenAI's published alias fronting them, and belongs to the 5.6 generation rather than GPT-6.
|
|
109
|
+
- All three need Daybreak program approval, and Blue/Red are `visibility: "hide"` in the catalog, so they are **not** in the shipped templates, the same policy as `gpt-5.3-codex-spark` below. The plugin routes them fully; entitled users add the ids by hand.
|
|
110
|
+
- None has a fallback chain on purpose, because a cyber-specialty request must not be silently answered by a general model.
|
|
111
|
+
|
|
112
|
+
## GPT-5.6 notes
|
|
113
|
+
|
|
114
|
+
- Served over the **responses-lite** path (`use_responses_lite`).
|
|
115
|
+
- Preview entitlement: accounts without access auto-fallback
|
|
116
|
+
`gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
117
|
+
(disable with `CODEX_AUTH_DISABLE_GPT56_AUTO_FALLBACK=1`).
|
|
118
|
+
- Default client identity for every responses-lite model (5.6, GPT-6 Astra/Sol/Luna, Daybreak) is host/opencode (`originator: opencode`); other families default to Codex CLI identity.
|
|
119
|
+
- `ultra` is accepted as a client-side alias and sent as `max` on the wire (no subagent orchestration in this plugin).
|
|
120
|
+
|
|
121
|
+
## Spark model note
|
|
122
|
+
|
|
123
|
+
The templates intentionally do **not** include `gpt-5.3-codex-spark` by default. Spark is a distinct backend model id, not an alias of `gpt-5-codex`, and it is often entitlement-gated at the account/workspace level, so shipping it by default causes avoidable startup failures for many users.
|
|
124
|
+
|
|
125
|
+
If your workspace is entitled, you can add Spark model IDs manually.
|
|
126
|
+
|
|
127
|
+
## Usage examples
|
|
128
|
+
|
|
129
|
+
Recommended compact UI selectors:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
opencode run "task" --model=openai/gpt-5.5 --variant=medium
|
|
133
|
+
opencode run "task" --model=openai/gpt-5.5-fast --variant=medium
|
|
134
|
+
opencode run "task" --model=openai/gpt-6-astra --variant=medium
|
|
135
|
+
opencode run "task" --model=openai/gpt-6-sol --variant=medium
|
|
136
|
+
opencode run "task" --model=openai/gpt-6-luna --variant=medium
|
|
137
|
+
opencode run "task" --model=openai/gpt-5.6-sol --variant=medium
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
If you need direct explicit selector IDs for scripts, install with:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
npx -y oc-codex-multi-auth@latest --full
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Minimal config (advanced)
|
|
147
|
+
|
|
148
|
+
A barebones debug template is available at [`minimal-opencode.json`](./minimal-opencode.json). It omits the full preset catalog.
|
|
149
|
+
|
|
150
|
+
## Unsupported-model behavior
|
|
151
|
+
|
|
152
|
+
Current defaults are strict entitlement handling except for common default-selector entitlement gates:
|
|
153
|
+
|
|
154
|
+
- **GPT-6 Astra** auto-fallback: `gpt-6-astra → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
155
|
+
- **Daybreak** cyber tiers: no fallback chain, deliberately
|
|
156
|
+
- **GPT-5.6** auto-fallback: `gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
157
|
+
- **`gpt-5.5`** can auto-fallback through `gpt-6-sol`, `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-6-luna`, then `gpt-5.6-luna`; canonical **`gpt-5-codex`** can auto-fallback through `gpt-5.6-terra`, then `gpt-5.6-luna` when the backend reports the selected model is not supported
|
|
158
|
+
- `unsupportedCodexPolicy: "strict"` returns other entitlement errors directly
|
|
159
|
+
- set `unsupportedCodexPolicy: "fallback"` (or `CODEX_AUTH_UNSUPPORTED_MODEL_POLICY=fallback`) to enable the full fallback chain for manual/legacy selectors
|
|
160
|
+
- `fallbackToGpt52OnUnsupportedGpt53: true` keeps the legacy `gpt-5.3-codex -> gpt-5.2-codex` edge inside fallback mode
|
|
161
|
+
- user-typed `gpt-5.5-pro*` is canonicalized to `gpt-5.5` before fallback because GPT-5.5 Pro is ChatGPT-only, not a Codex-routable model; `gpt-6-astra-pro*` is canonicalized to `gpt-6-astra` for the same reason
|
|
162
|
+
- legacy Codex selector `gpt-5.1-codex` normalizes to canonical `gpt-5-codex`, while `gpt-5.2-codex` and `gpt-5.3-codex` route as distinct backend model IDs; if canonical Codex or a gated model fails entitlement, default auto-fallback can retry through `gpt-5.6-terra`, then `gpt-5.6-luna`
|
|
163
|
+
- set `CODEX_AUTH_DISABLE_GPT6_AUTO_FALLBACK=1` to disable GPT-6 Astra/Sol/Luna auto-fallback
|
|
164
|
+
- set `CODEX_AUTH_DISABLE_GPT56_AUTO_FALLBACK=1` to disable GPT-5.6 auto-fallback
|
|
165
|
+
- set `CODEX_AUTH_DISABLE_GPT55_AUTO_FALLBACK=1` to disable GPT-5.5 auto-fallback
|
|
166
|
+
- set `CODEX_AUTH_DISABLE_CODEX_AUTO_FALLBACK=1` to disable canonical Codex/GPT-5.4-family auto-fallback
|
|
167
|
+
- `gpt-5.4-pro -> gpt-6-sol -> gpt-5.6-terra -> gpt-5.6-luna` applies when you manually select `gpt-5.4-pro`
|
|
168
|
+
- `unsupportedCodexFallbackChain` lets you override fallback order per model
|
|
169
|
+
- a single request hops across at most 6 quota-exhausted models (`MAX_QUOTA_FALLBACK_SWITCHES`, was 3)
|
|
170
|
+
|
|
171
|
+
Default chains when generic fallback policy is enabled (and empty override map). The general rows follow one order, most capable first (`gpt-6-astra > gpt-6-sol > gpt-5.6-sol > gpt-5.6-terra > gpt-5.5 > gpt-6-luna > gpt-5.6-luna`), and each row is that order's tail after its own model:
|
|
172
|
+
|
|
173
|
+
- `gpt-6-astra → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna` (also auto under default strict for rollout gates)
|
|
174
|
+
- `gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
175
|
+
- `gpt-5.6-sol → gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna` (also auto under default strict for preview gates)
|
|
176
|
+
- `gpt-5.6-terra → gpt-5.5 → gpt-6-luna → gpt-5.6-luna`
|
|
177
|
+
- `gpt-5.5 → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-6-luna → gpt-5.6-luna`
|
|
178
|
+
- `gpt-6-luna → gpt-5.6-luna → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5`
|
|
179
|
+
- `gpt-5.6-luna → gpt-6-luna → gpt-6-sol → gpt-5.6-sol → gpt-5.6-terra → gpt-5.5`
|
|
180
|
+
- `gpt-5-codex → gpt-5.6-terra → gpt-5.6-luna`
|
|
181
|
+
|
|
182
|
+
> The terminal is `gpt-5.6-luna`, not `gpt-5.5`: OpenAI's Codex model docs say GPT-5.5 retires from Codex with ChatGPT sign-in on 2026-10-14, while 5.6 Luna is listed for every plan with no retirement date. `gpt-5.2`, the terminal before that, left the catalog in openai/codex #44250 (2026-09-09). GPT-5.4 and GPT-5.4 Mini were retired from Codex on 2026-08-31; the catalog marks both `visibility: "hide"` and names their replacements (`gpt-5.4` -> `gpt-6-sol`, `gpt-5.4-mini` -> `gpt-6-luna`), and `gpt-5.4-nano` has no catalog entry. The default chains therefore end at live models rather than leading with retired ones.
|
|
183
|
+
- `gpt-5.4 → gpt-6-sol → gpt-5.6-terra → gpt-5.6-luna`
|
|
184
|
+
- `gpt-5.4-mini → gpt-6-luna → gpt-5.6-luna`
|
|
185
|
+
- `gpt-5.4-nano → gpt-6-luna → gpt-5.6-luna`
|
|
186
|
+
- `gpt-5.4-pro → gpt-6-sol → gpt-5.6-terra → gpt-5.6-luna` (if you manually select `gpt-5.4-pro`)
|
|
187
|
+
- `gpt-5.3-codex → gpt-5-codex → gpt-5.2-codex`
|
|
188
|
+
- `gpt-5.3-codex-spark → gpt-5-codex → gpt-5.3-codex → gpt-5.2-codex` (only if Spark IDs are added manually)
|
|
189
|
+
- `gpt-5.2-codex → gpt-5-codex`
|
|
190
|
+
- `gpt-5.1-codex → gpt-5-codex`
|
|
191
|
+
|
|
192
|
+
## Additional docs
|
|
193
|
+
|
|
194
|
+
- Main config reference: [`docs/configuration.md`](../docs/configuration.md)
|
|
195
|
+
- Getting started: [`docs/getting-started.md`](../docs/getting-started.md)
|
|
196
|
+
- Tools and CLI: [`docs/tools-and-cli.md`](../docs/tools-and-cli.md)
|
|
197
|
+
- Troubleshooting: [`docs/troubleshooting.md`](../docs/troubleshooting.md)
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://opencode.ai/config.json",
|
|
3
|
-
"plugin": ["oc-codex-multi-auth"],
|
|
4
|
-
|
|
5
|
-
"provider": {
|
|
6
|
-
"openai": {
|
|
7
|
-
"options": {
|
|
8
|
-
"store": false,
|
|
9
|
-
"include": ["reasoning.encrypted_content"]
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
"model": "openai/gpt-5-codex"
|
|
14
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opencode.ai/config.json",
|
|
3
|
+
"plugin": ["oc-codex-multi-auth"],
|
|
4
|
+
|
|
5
|
+
"provider": {
|
|
6
|
+
"openai": {
|
|
7
|
+
"options": {
|
|
8
|
+
"store": false,
|
|
9
|
+
"include": ["reasoning.encrypted_content"]
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"model": "openai/gpt-5-codex"
|
|
14
|
+
}
|