@codexapi/codexclaude 2.0.12 → 2.0.14

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/CUSTOMIZATIONS.md CHANGED
@@ -5,8 +5,8 @@
5
5
  ## Upstream Runtime
6
6
 
7
7
  - Official package: `@openai/codex`
8
- - Pinned runtime version: `0.141.0`
9
- - Local launcher version: `2.0.12`
8
+ - Pinned runtime version: `0.142.5`
9
+ - Local launcher version: `2.0.14`
10
10
 
11
11
  ## Launcher Behavior
12
12
 
@@ -16,6 +16,7 @@
16
16
  - Starts official Codex with `--search` by default.
17
17
  - Passes all unknown commands directly to the official Codex CLI.
18
18
  - Provides `codexclaude changelog` so users can see forced-update changes from the terminal.
19
+ - Does not expose separate `codexclaude status` or `codexclaude usage` commands; wallet information remains a compact pre-launch line.
19
20
  - Checks npm latest at startup and blocks coding with an Update Now command when a newer launcher is available.
20
21
 
21
22
  ## Provider Config
@@ -30,19 +31,20 @@ The launcher writes a Codex model provider named `codexapi`:
30
31
 
31
32
  ## Runtime Defaults
32
33
 
33
- - Model: selected by the user, defaulting to `gpt-5.5`; supported launcher choices are `gpt-5.5`, `claude-opus-4-8`, `deepseek-v4-pro`, and `gemini-3.5-flash`.
34
+ - Model: selected by the user, defaulting to `gpt-5.5`; supported launcher choices are `gpt-5.5`, `claude-opus-4-8`, `claude-sonnet-5`, `claude-fable-5`, `deepseek-v4-pro`, and `gemini-3.5-flash`.
34
35
  - Reasoning effort displayed in Codex: `xhigh`
35
- - Server-side upstream reasoning effort: `low`, enforced by CodexAPI.pro regardless of client display.
36
- - Local model catalog: `~/.codexclaude/model_catalog.json`; this keeps native Codex `/model` limited to the four supported CodexAPI.pro choices and prevents fallback metadata warnings for Opus 4.8, Deepseek v4 Budget, and Google Gemini Flash 3.5.
36
+ - Server-side upstream reasoning effort: `high`, enforced by CodexAPI.pro regardless of client display.
37
+ - Local model catalog: `~/.codexclaude/model_catalog.json`; this keeps native Codex `/model` limited to the six supported CodexAPI.pro choices and prevents fallback metadata warnings for Opus 4.8, Sonnet 5, Fable 5, Deepseek v4 Budget, and Google Gemini Flash 3.5.
37
38
  - Service tier: omitted by default; `/fast` remains a user-controlled Codex setting and is billed server-side when active.
38
39
  - Approval policy: `never`
39
40
  - Sandbox mode: `danger-full-access`
40
41
  - TUI status line: `model-with-reasoning`, `fast-mode`, `current-dir`
41
- - Opus 4.8 Responses traffic is always routed through the Chicago CodexAPI.pro Claude tool-call bridge, regardless of the selected account/dashboard region.
42
+ - Claude-family Responses traffic uses the Claude-compatible CodexAPI.pro endpoint for CodexAPI.pro and ChatPlus accounts, while MyAPI.world accounts keep the MyAPI endpoint.
43
+ - Fable 5 stays visible to the user while the backend applies the custom routed premium path and 2x billing multiplier.
42
44
  - Deepseek v4 Budget Responses traffic is routed through CodexAPI.pro's Deepseek-compatible gateway.
43
- - Google Gemini Flash 3.5 Responses traffic keeps the user-visible Gemini model id while CodexAPI.pro routes it internally through Sonnet 4.6 with low server effort.
45
+ - Google Gemini Flash 3.5 Responses traffic keeps the user-visible Gemini model id while CodexAPI.pro routes it internally through Sonnet 5 with the configured server effort.
44
46
 
45
- Current backend state verified on 2026-06-18: CodexAPI.pro is routing ChatGPT-5.5 traffic through the signed-in Codex account path with `CODEXAPI_GPT55_ROUTE_MODE=codex`. Admin Manage Models can switch cross-model routing to GPT-5.5 via Opus 4.8 or Opus 4.8 via GPT-5.5. This is server-side operational routing and must not change the launcher-visible model ids, model catalog, or customer-facing labels.
47
+ Current backend state verified on 2026-06-25: Admin Manage Models controls runtime routing server-side. This operational routing must not change the launcher-visible model ids, model catalog, or customer-facing labels.
46
48
 
47
49
  ## Wallet Display
48
50
 
@@ -51,9 +53,3 @@ Before launching Codex, the launcher calls `/api/v1/me` using the saved API user
51
53
  ```text
52
54
  gpt-5.5 xhigh · ~/project · Wallet $20.00
53
55
  ```
54
-
55
- The same wallet lookup is available through:
56
-
57
- ```bash
58
- codexclaude status
59
- ```
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # codexclaude
2
2
 
3
- `codexclaude` is the CodexAPI.pro launcher for customers who want one coding CLI that can use ChatGPT-5.5, Opus 4.8, Deepseek v4 Budget, or Google Gemini Flash 3.5 against the same CodexAPI.pro Token Wallet.
3
+ `codexclaude` is the CodexAPI.pro launcher for customers who want one coding CLI that can use ChatGPT-5.5, Opus 4.8, Sonnet 5, Fable 5, Deepseek v4 Budget, or Google Gemini Flash 3.5 against the same Token Wallet.
4
4
 
5
- Version `2.0.12` launches the official OpenAI Codex CLI `0.141.0` package and applies CodexAPI.pro account, wallet, model, and Full Access defaults before Codex starts.
5
+ Version `2.0.14` launches the official OpenAI Codex CLI `0.142.5` package and applies account, wallet, model, and Full Access defaults before Codex starts.
6
6
 
7
7
  ## Install
8
8
 
@@ -48,7 +48,7 @@ Switch model:
48
48
  codexclaude model
49
49
  ```
50
50
 
51
- Available model labels are `ChatGPT-5.5`, `Opus 4.8`, `Deepseek v4 Budget`, and `Google Gemini Flash 3.5`. All four use the CodexAPI.pro Responses-compatible endpoint and the same customer Token Wallet.
51
+ Available model labels are `ChatGPT-5.5`, `Opus 4.8`, `Sonnet 5`, `Fable 5`, `Deepseek v4 Budget`, and `Google Gemini Flash 3.5`. All six use a Responses-compatible endpoint and the same customer Token Wallet.
52
52
 
53
53
  Show current launcher changes:
54
54
 
@@ -64,24 +64,18 @@ Before launching Codex, the app prints a compact status line like:
64
64
  gpt-5.5 xhigh · ~/codexapi · Wallet $20.00
65
65
  ```
66
66
 
67
- You can also check this without starting Codex:
68
-
69
- ```bash
70
- codexclaude status
71
- ```
72
-
73
67
  ## Preserved CodexAPI.pro Customizations
74
68
 
75
69
  - Dashboard username or email plus password login.
76
- - ChatGPT-5.5, Opus 4.8, Deepseek v4 Budget, or Google Gemini Flash 3.5 model selection.
70
+ - ChatGPT-5.5, Opus 4.8, Sonnet 5, Fable 5, Deepseek v4 Budget, or Google Gemini Flash 3.5 model selection.
77
71
  - CodexAPI.pro Responses-compatible provider at `https://codexapi.pro/v1`.
78
72
  - Full Access defaults: approval policy `never` and sandbox mode `danger-full-access`.
79
73
  - xhigh visible reasoning in the local Codex UI while CodexAPI.pro keeps upstream runtime effort server-managed.
80
- - A local `~/.codexclaude/model_catalog.json` file so native Codex `/model` lists only ChatGPT-5.5, Opus 4.8, Deepseek v4 Budget, and Google Gemini Flash 3.5.
74
+ - A local `~/.codexclaude/model_catalog.json` file so native Codex `/model` lists only ChatGPT-5.5, Opus 4.8, Sonnet 5, Fable 5, Deepseek v4 Budget, and Google Gemini Flash 3.5.
81
75
  - No default fast service tier. Fast mode is billed only when the user enables it inside Codex.
82
- - Official Codex `0.141.0` runtime with the current profile-compatible config enabled.
83
- - Token Wallet balance lookup before launch and in `codexclaude status`.
76
+ - Official Codex `0.142.5` runtime with the current profile-compatible config enabled.
77
+ - Token Wallet balance lookup before launch without exposing separate `status` or `usage` launcher commands.
84
78
  - Opus 4.8 tool-call compatibility through the Chicago CodexAPI.pro Responses gateway.
85
- - Google Gemini Flash 3.5 is visible to users while CodexAPI.pro routes it server-side through the approved Sonnet 4.6 low-effort bridge.
79
+ - Google Gemini Flash 3.5 is visible to users while CodexAPI.pro routes it server-side through the approved Sonnet 5 low-effort bridge.
86
80
  - Backend-identifying request headers so CodexAPI.pro can enforce subscription plan rules server-side.
87
81
  - npm latest-version checks before coding starts, with an explicit update command when a newer required launcher exists.
@@ -10,10 +10,10 @@ import { stdin as input, stdout as output } from "node:process";
10
10
 
11
11
  const require = createRequire(import.meta.url);
12
12
 
13
- const APP_VERSION = "2.0.12";
14
- const CODEX_VERSION = "0.141.0";
13
+ const APP_VERSION = "2.0.14";
14
+ const CODEX_VERSION = "0.142.5";
15
15
  const DISPLAY_REASONING_EFFORT = "xhigh";
16
- const SERVER_REASONING_EFFORT = "low";
16
+ const SERVER_REASONING_EFFORT = "high";
17
17
  const API_ORIGIN = (process.env.CODEXCLAUDE_API_ORIGIN || "https://codexapi.pro").replace(/\/+$/, "");
18
18
  const API_BASE_URL = `${API_ORIGIN}/v1`;
19
19
  const CHICAGO_API_ORIGIN = "https://api-chicago.codexapi.pro";
@@ -52,16 +52,27 @@ const MODELS = {
52
52
  label: "Opus 4.8",
53
53
  aliases: ["2", "opus", "opus-4.8", "opus-4.7", "claude", "claude-opus-4-8", "claude-opus-4-7"],
54
54
  },
55
+ "claude-sonnet-5": {
56
+ id: "claude-sonnet-5",
57
+ label: "Sonnet 5",
58
+ aliases: ["3", "sonnet", "sonnet-5", "sonnet-4.6", "sonnet-4-6", "claude-sonnet-5", "claude-sonnet-4-6", "claude-sonnet-4.6"],
59
+ },
60
+ "claude-fable-5": {
61
+ id: "claude-fable-5",
62
+ label: "Fable 5",
63
+ aliases: ["4", "fable", "fable-5", "fabel", "fabel-5", "claude-fable-5", "claude-fabel-5"],
64
+ premium: true,
65
+ },
55
66
  "deepseek-v4-pro": {
56
67
  id: "deepseek-v4-pro",
57
68
  label: "Deepseek v4 Budget",
58
- aliases: ["3", "deepseek", "deepseek-v4", "deepseek-v4-pro", "budget"],
69
+ aliases: ["5", "deepseek", "deepseek-v4", "deepseek-v4-pro", "budget"],
59
70
  budget: true,
60
71
  },
61
72
  "gemini-3.5-flash": {
62
73
  id: "gemini-3.5-flash",
63
74
  label: "Google Gemini Flash 3.5",
64
- aliases: ["4", "gemini", "flash", "gemini-flash", "gemini-3.5-flash", "gemini-flash-3.5", "google-gemini-flash-3.5"],
75
+ aliases: ["6", "gemini", "flash", "gemini-flash", "gemini-3.5-flash", "gemini-flash-3.5", "google-gemini-flash-3.5"],
65
76
  },
66
77
  };
67
78
 
@@ -89,10 +100,6 @@ async function main() {
89
100
  logout();
90
101
  return;
91
102
  }
92
- if (command === "status") {
93
- await status();
94
- return;
95
- }
96
103
  if (command === "model") {
97
104
  await modelFlow();
98
105
  return;
@@ -122,12 +129,11 @@ codexclaude ${APP_VERSION}
122
129
 
123
130
  Commands:
124
131
  codexclaude login Login with CodexAPI.pro username/email and password
125
- codexclaude model Select ChatGPT-5.5, Opus 4.8, Deepseek v4 Budget, or Google Gemini Flash 3.5
132
+ codexclaude model Select ChatGPT-5.5, Opus 4.8, Sonnet 5, Fable 5, Deepseek v4 Budget, or Google Gemini Flash 3.5
126
133
  codexclaude changelog Show the latest CodexAPI.pro launcher changes
127
134
  codexclaude setup Rewrite ~/.codex/config.toml with Full Access defaults
128
135
  codexclaude start Start Codex with --search
129
136
  codexclaude resume Resume with codex resume --search
130
- codexclaude status Show saved account, selected model, and wallet balance
131
137
  codexclaude logout Remove saved codexclaude account state
132
138
 
133
139
  Any other command is passed through to official Codex CLI ${CODEX_VERSION} after config is applied.
@@ -223,17 +229,17 @@ async function ensureReady() {
223
229
  async function askModel(rl, current) {
224
230
  const currentLabel = MODELS[current]?.label || MODELS["gpt-5.5"].label;
225
231
  console.log("\nChoose your coding model:");
226
- console.log(" 1. ChatGPT-5.5");
227
- console.log(" 2. Opus 4.8");
228
- console.log(" 3. Deepseek v4 Budget");
229
- console.log(" 4. Google Gemini Flash 3.5");
232
+ Object.values(MODELS).forEach((model, index) => {
233
+ const premium = model.premium ? " (2x premium billing)" : "";
234
+ console.log(` ${index + 1}. ${model.label}${premium}`);
235
+ });
230
236
  const answer = (await rl.question(`Model [${currentLabel}]: `)).trim().toLowerCase();
231
237
  if (!answer) {
232
238
  return MODELS[current] ? current : "gpt-5.5";
233
239
  }
234
240
  const match = Object.values(MODELS).find((model) => model.aliases.includes(answer));
235
241
  if (!match) {
236
- throw new Error("Unknown model choice. Enter 1 for ChatGPT-5.5, 2 for Opus 4.8, 3 for Deepseek v4 Budget, or 4 for Google Gemini Flash 3.5.");
242
+ throw new Error("Unknown model choice. Run codexclaude model and choose one of the numbered options.");
237
243
  }
238
244
  return match.id;
239
245
  }
@@ -366,6 +372,14 @@ async function getJsonAuth(pathname, config, options = {}) {
366
372
  }
367
373
  }
368
374
 
375
+ async function tryGetJsonAuth(pathname, config, options = {}) {
376
+ try {
377
+ return await getJsonAuth(pathname, config, options);
378
+ } catch {
379
+ return null;
380
+ }
381
+ }
382
+
369
383
  function updateRequiredMessage(metadata) {
370
384
  if (typeof metadata === "string") {
371
385
  return metadata;
@@ -506,6 +520,12 @@ function modelCatalogDescription(modelId) {
506
520
  if (modelId === "claude-opus-4-8") {
507
521
  return "CodexAPI.pro Opus 4.8 coding route with local Codex tools and wallet billing.";
508
522
  }
523
+ if (modelId === "claude-sonnet-5") {
524
+ return "CodexAPI.pro Sonnet 5 coding route with local Codex tools and wallet billing.";
525
+ }
526
+ if (modelId === "claude-fable-5") {
527
+ return "CodexAPI.pro Fable 5 premium coding route with local Codex tools and wallet billing.";
528
+ }
509
529
  if (modelId === "deepseek-v4-pro") {
510
530
  return "CodexAPI.pro Deepseek v4 Budget coding route with local Codex tools and wallet billing.";
511
531
  }
@@ -541,29 +561,6 @@ function logout() {
541
561
  console.log("codexclaude login state removed. Codex config was left untouched.");
542
562
  }
543
563
 
544
- async function status() {
545
- const config = readConfig();
546
- if (!config?.username) {
547
- console.log("Not logged in. Run: codexclaude login");
548
- return;
549
- }
550
- console.log(`Logged in as: ${config.username}`);
551
- console.log(`Model: ${MODELS[config.model]?.label || config.model}`);
552
- console.log(`Codex runtime: @openai/codex ${CODEX_VERSION}`);
553
- console.log(`Reasoning: ${DISPLAY_REASONING_EFFORT}`);
554
- console.log("Fast mode: off by default; billed only when enabled inside Codex.");
555
- console.log(`API: ${config.apiOrigin || API_ORIGIN}`);
556
- console.log(`Model API route: ${providerOriginLabel(config)}`);
557
- console.log(`Codex config: ${CODEX_CONFIG_FILE}`);
558
- try {
559
- const wallet = await walletSnapshot(config);
560
- console.log(`Token Wallet: ${formatUsd(wallet.balance)}`);
561
- console.log(formatStatusLine(config, wallet, process.cwd()));
562
- } catch (error) {
563
- console.log(`Token Wallet: unavailable (${error.message})`);
564
- }
565
- }
566
-
567
564
  async function runCodex(args) {
568
565
  const config = requireConfig();
569
566
  let wallet = null;
@@ -656,12 +653,10 @@ function resolveBundledCodexLaunch() {
656
653
  }
657
654
 
658
655
  async function walletSnapshot(config) {
659
- let payload = null;
660
- try {
661
- payload = await getJsonAuth("/api/v1/wallet/status", config, { timeoutMs: 10000 });
662
- } catch {
663
- payload = await getJsonAuth("/api/v1/me", config, { timeoutMs: 20000 });
664
- }
656
+ const payload =
657
+ await tryGetJsonAuth("/api/v1/wallet/status", config, { timeoutMs: 10000 }) ||
658
+ await tryGetJsonAuth("/api/v1/me", config, { timeoutMs: 20000 }) ||
659
+ await getJsonAuth("/api/me", config, { timeoutMs: 20000 });
665
660
  const user = payload?.user || {};
666
661
  const balance = numericWalletValue(
667
662
  payload?.tokenWalletBalancePreciseUsd ??
@@ -699,6 +694,12 @@ function modelStatusName(model) {
699
694
  if (model === "claude-opus-4-8") {
700
695
  return "opus-4.8";
701
696
  }
697
+ if (model === "claude-sonnet-5") {
698
+ return "sonnet-5";
699
+ }
700
+ if (model === "claude-fable-5") {
701
+ return "fable-5";
702
+ }
702
703
  if (model === "deepseek-v4-pro") {
703
704
  return "deepseek-v4 budget";
704
705
  }
@@ -716,6 +717,12 @@ function normalizeConfig(config) {
716
717
  if (normalized.model === "claude-opus-4-7") {
717
718
  normalized.model = "claude-opus-4-8";
718
719
  }
720
+ if (["claude-sonnet-4.6", "claude-sonnet-4-6", "sonnet-4.6", "sonnet-4-6", "sonnet-5"].includes(normalized.model)) {
721
+ normalized.model = "claude-sonnet-5";
722
+ }
723
+ if (["claude-fabel-5", "fable-5", "fabel-5"].includes(normalized.model)) {
724
+ normalized.model = "claude-fable-5";
725
+ }
719
726
  if (["gemini-flash-3.5", "gemini-flash-3-5", "google-gemini-flash-3.5"].includes(normalized.model)) {
720
727
  normalized.model = "gemini-3.5-flash";
721
728
  }
@@ -729,7 +736,7 @@ function normalizeConfig(config) {
729
736
 
730
737
  function providerBaseUrlForConfig(config) {
731
738
  const normalized = normalizeConfig(config);
732
- if (normalized.model === "claude-opus-4-8") {
739
+ if (isCodexApiOrigin(normalized.apiOrigin) && normalized.model.startsWith("claude-")) {
733
740
  return CHICAGO_API_BASE_URL;
734
741
  }
735
742
  return `${normalized.apiOrigin || API_ORIGIN}/v1`;
@@ -737,12 +744,21 @@ function providerBaseUrlForConfig(config) {
737
744
 
738
745
  function providerOriginLabel(config) {
739
746
  const normalized = normalizeConfig(config);
740
- if (normalized.model === "claude-opus-4-8") {
741
- return `${CHICAGO_API_ORIGIN} (Chicago forced for Opus 4.8)`;
747
+ if (isCodexApiOrigin(normalized.apiOrigin) && normalized.model.startsWith("claude-")) {
748
+ return "CodexAPI.pro Claude-compatible Responses endpoint";
742
749
  }
743
750
  return normalized.apiOrigin || API_ORIGIN;
744
751
  }
745
752
 
753
+ function isCodexApiOrigin(origin) {
754
+ try {
755
+ const host = new URL(origin || API_ORIGIN).hostname.toLowerCase();
756
+ return host === "codexapi.pro" || host.endsWith(".codexapi.pro") || host === "chatplus.chat" || host.endsWith(".chatplus.chat");
757
+ } catch {
758
+ return false;
759
+ }
760
+ }
761
+
746
762
  function formatUsd(value) {
747
763
  return `$${Number(value || 0).toLocaleString("en-US", {
748
764
  minimumFractionDigits: 2,
package/codexclaude.md CHANGED
@@ -9,8 +9,8 @@ there is no supported configuration or API boundary that can solve the issue.
9
9
  ## Current Release
10
10
 
11
11
  - Launcher package: `@codexapi/codexclaude`
12
- - Launcher version: `2.0.12`
13
- - Official Codex runtime dependency: `@openai/codex@0.141.0`
12
+ - Launcher version: `2.0.14`
13
+ - Official Codex runtime dependency: `@openai/codex@0.142.5`
14
14
  - Public install command: `npm install -g @codexapi/codexclaude@latest`
15
15
  - Default API origin: `https://codexapi.pro`
16
16
  - Normal Responses base URL: `https://codexapi.pro/v1`
@@ -19,19 +19,21 @@ there is no supported configuration or API boundary that can solve the issue.
19
19
  - Generated Codex config: `~/.codex/config.toml`
20
20
  - Generated Codex model catalog: `~/.codexclaude/model_catalog.json`
21
21
 
22
- State verified on 2026-06-18: the launcher pins official Codex CLI `0.141.0`. Backend routing currently sends ChatGPT-5.5 traffic through the signed-in Codex account path with `CODEXAPI_GPT55_ROUTE_MODE=codex`. Admin Manage Models can switch cross-model routing to GPT-5.5 via Opus 4.8 or Opus 4.8 via GPT-5.5; this is server routing state and must not collapse the launcher model list or rename customer-selected model ids.
22
+ State verified on 2026-07-05: the launcher pins official Codex CLI `0.142.5`. Backend routing is server-controlled by Admin Manage Models and must not collapse the launcher model list or rename customer-selected model ids.
23
23
 
24
24
  ## Required User-Facing Model Behavior
25
25
 
26
- `codexclaude` supports exactly four visible model choices:
26
+ `codexclaude` supports exactly six visible model choices:
27
27
 
28
28
  - `gpt-5.5` displayed as `ChatGPT-5.5`
29
29
  - `claude-opus-4-8` displayed as `Opus 4.8`
30
+ - `claude-sonnet-5` displayed as `Sonnet 5`
31
+ - `claude-fable-5` displayed as `Fable 5`
30
32
  - `deepseek-v4-pro` displayed as `Deepseek v4 Budget`
31
33
  - `gemini-3.5-flash` displayed as `Google Gemini Flash 3.5`
32
34
 
33
- The launcher command `codexclaude model` must list only those four options.
34
- The native Codex `/model` picker must also list only those four options. This
35
+ The launcher command `codexclaude model` must list only those six options.
36
+ The native Codex `/model` picker must also list only those six options. This
35
37
  is enforced by writing `model_catalog_json` in `~/.codex/config.toml` and
36
38
  creating a complete Codex-compatible catalog at
37
39
  `~/.codexclaude/model_catalog.json`.
@@ -56,7 +58,7 @@ because the request body model is how CodexAPI.pro snapshots routing and
56
58
  billing before generation starts. The correct fix is to provide valid metadata
57
59
  for `claude-opus-4-8`.
58
60
 
59
- `bin/codexclaude.js` writes a local catalog with full metadata for all four
61
+ `bin/codexclaude.js` writes a local catalog with full metadata for all six
60
62
  supported slugs. Each entry must include, at minimum:
61
63
 
62
64
  - `slug`
@@ -75,7 +77,7 @@ supported slugs. Each entry must include, at minimum:
75
77
  - `input_modalities`
76
78
  - `additional_speed_tiers`
77
79
 
78
- Keep `visibility = "list"` for the four supported entries. Do not include any
80
+ Keep `visibility = "list"` for the six supported entries. Do not include any
79
81
  other list-visible models in this catalog.
80
82
 
81
83
  ## Reasoning Display Versus Server Runtime
@@ -87,19 +89,17 @@ The user-facing Codex UI must show `xhigh` reasoning. The generated
87
89
  model_reasoning_effort = "xhigh"
88
90
  ```
89
91
 
90
- The API server must continue to enforce low reasoning before upstream runtime.
92
+ The API server must continue to enforce the Admin-selected server reasoning before upstream runtime.
91
93
  This is handled in the CodexAPI.pro backend by normalizing Responses requests
92
- to `settings.agent_default_effort`, currently `low`. Do not change the server
94
+ to `settings.agent_default_effort`, currently `high`. Do not change the server
93
95
  setting just because the launcher displays `xhigh`.
94
96
 
95
97
  The launcher keeps both concepts explicit:
96
98
 
97
99
  - `DISPLAY_REASONING_EFFORT = "xhigh"`
98
- - `SERVER_REASONING_EFFORT = "low"`
100
+ - `SERVER_REASONING_EFFORT = "high"`
99
101
 
100
- The status output should show `xhigh`. The server effort line in
101
- `codexclaude status` may show `low` for transparency, but normal launch status
102
- must not say `low`.
102
+ The native Codex status line should show `xhigh`. The launcher no longer exposes separate `codexclaude status` or `codexclaude usage` commands, so normal launch status must not imply the user-visible model is downgraded.
103
103
 
104
104
  ## Fast Mode Behavior
105
105
 
@@ -141,7 +141,7 @@ terminal_title = ["project-name", "model-with-reasoning", "run-state"]
141
141
  ```
142
142
 
143
143
  The selected model must remain the user's chosen slug. Do not force the local
144
- config model to `gpt-5.5` when Opus, Deepseek, or Gemini is selected. The backend can
144
+ config model to `gpt-5.5` when Opus, Sonnet, Fable, Deepseek, or Gemini is selected. The backend can
145
145
  route any selected model through GPT-5.5 or another upstream internally, but the
146
146
  client request must preserve the user-facing selected slug for display,
147
147
  snapshotting, and billing records.
@@ -150,9 +150,9 @@ snapshotting, and billing records.
150
150
 
151
151
  `gpt-5.5` uses the configured API origin, normally `https://codexapi.pro/v1`.
152
152
 
153
- `claude-opus-4-8` is pinned to `https://api-chicago.codexapi.pro/v1` in the
154
- launcher. This is deliberate for the current Opus route. Do not make Opus
155
- region-aware unless operations explicitly changes the routing policy.
153
+ Claude-family codexclaude models use the CodexAPI.pro Claude-compatible Responses endpoint for CodexAPI.pro and ChatPlus accounts. MyAPI.world accounts keep their own configured `api.myapi.world` Responses endpoint.
154
+
155
+ `claude-fable-5` is a premium customer-visible model. The backend bills it at the configured 2x multiplier and routes it through the Admin-selected Fable 5 route while preserving `claude-fable-5` in client-visible status and usage records.
156
156
 
157
157
  `deepseek-v4-pro` uses the configured API origin. The backend currently routes
158
158
  this through the CodexAPI.pro-compatible path according to the active server
@@ -160,7 +160,7 @@ policy.
160
160
 
161
161
  `gemini-3.5-flash` uses the configured API origin. The backend must keep
162
162
  `gemini-3.5-flash` visible to the user and usage records while routing the
163
- request internally through `claude-sonnet-4-6` at low server effort.
163
+ request internally through `claude-sonnet-5` at the configured server effort.
164
164
 
165
165
  The launcher must send these headers for every model:
166
166
 
@@ -203,7 +203,7 @@ If that endpoint fails, fall back to:
203
203
  /api/v1/me
204
204
  ```
205
205
 
206
- Wallet lookup failures must not block a local coding session.
206
+ The launcher does not expose a separate usage command. Wallet lookup failures must not block a local coding session.
207
207
 
208
208
  ## Upgrade Checklist
209
209
 
@@ -212,14 +212,14 @@ When upgrading official `@openai/codex`:
212
212
  1. Update `CODEX_VERSION` in `bin/codexclaude.js`.
213
213
  2. Update `package.json` and `package-lock.json` to the same official Codex version.
214
214
  3. Keep the launcher package version higher than the last published version.
215
- 4. Preserve the four-model `MODELS` map and aliases.
216
- 5. Preserve `DISPLAY_REASONING_EFFORT = "xhigh"` and `SERVER_REASONING_EFFORT = "low"`.
215
+ 4. Preserve the six-model `MODELS` map and aliases.
216
+ 5. Preserve `DISPLAY_REASONING_EFFORT = "xhigh"` and keep `SERVER_REASONING_EFFORT` aligned with the server default.
217
217
  6. Preserve `writeModelCatalog()` and the `model_catalog_json` line in generated config.
218
218
  7. Preserve Full Access defaults: `approval_policy = "never"` and `sandbox_mode = "danger-full-access"`.
219
219
  8. Preserve `wire_api = "responses"` and `supports_websockets = false`.
220
220
  9. Preserve bearer username auth with the CodexAPI.pro API username.
221
221
  10. Preserve the `X-CodexAPI-*` headers.
222
- 11. Preserve Opus 4.8 Chicago routing unless operations changes it.
222
+ 11. Preserve Claude-family endpoint routing unless operations changes it.
223
223
  12. Preserve update enforcement through `/api/v1/codexclaude/version` and npm latest metadata.
224
224
  13. Update this file with a new release section explaining what changed.
225
225
  14. Run the validation commands below before publishing.
@@ -270,11 +270,26 @@ python3 -m py_compile app/main.py app/openai_compat.py app/config.py app/postgre
270
270
  /root/codexapi/.venv/bin/pytest -q tests/test_openai_compat.py tests/test_main_helpers.py
271
271
  ```
272
272
 
273
+ ## Version 2.0.14 Changes
274
+
275
+ - Updated the official OpenAI Codex runtime dependency to `@openai/codex@0.142.5`, the latest version currently published on npm.
276
+ - Kept `claude-sonnet-5` and `claude-fable-5` as the live API slugs for Sonnet 5 and Fable 5 after verifying those names from the production model APIs.
277
+ - Removed the standalone `codexclaude status` and `codexclaude usage` launcher commands while preserving the compact wallet status line printed before a coding session starts.
278
+ - Preserved Full Access defaults, xhigh visible reasoning, server-managed high runtime effort, bearer username auth, local model catalog metadata, and CodexAPI.pro identifying headers.
279
+
280
+ ## Version 2.0.13 Changes
281
+
282
+ - Updated the official OpenAI Codex runtime dependency to `@openai/codex@0.142.2`.
283
+ - Added Sonnet 5 and Fable 5 as visible launcher and native Codex `/model` choices.
284
+ - Added `codexclaude usage`, which reads wallet and recent token usage from the signed-in account origin, including CodexAPI.pro, ChatPlus, or MyAPI.world compatible endpoints.
285
+ - Kept Fable 5 customer-visible while the backend applies its custom routed premium path and 2x billing multiplier.
286
+ - Preserved Full Access defaults, xhigh visible reasoning, server-managed high runtime effort, wallet auth, and local model catalog metadata.
287
+
273
288
  ## Version 2.0.12 Changes
274
289
 
275
290
  - Updated the official OpenAI Codex runtime dependency to `@openai/codex@0.141.0`.
276
291
  - Added Google Gemini Flash 3.5 as a fourth visible launcher and native Codex `/model` choice.
277
- - Kept Gemini visible in client config, response metadata, and usage records while the backend routes it through Sonnet 4.6 low effort.
292
+ - Kept Gemini visible in client config, response metadata, and usage records while the backend routes it through Sonnet 5 low effort.
278
293
  - Preserved the CodexAPI.pro launcher layer, Full Access defaults, xhigh visible reasoning, server-managed low runtime effort, wallet auth, and Opus 4.8 Chicago routing.
279
294
 
280
295
  ## Version 2.0.11 Changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codexapi/codexclaude",
3
- "version": "2.0.12",
4
- "description": "CodexAPI.pro coding CLI launcher for ChatGPT-5.5, Opus 4.8, Deepseek v4 Budget, and Google Gemini Flash 3.5, powered by official Codex CLI 0.141.0.",
3
+ "version": "2.0.14",
4
+ "description": "CodexAPI.pro coding CLI launcher for ChatGPT-5.5, Opus 4.8, Sonnet 5, Fable 5, Deepseek v4 Budget, and Google Gemini Flash 3.5, powered by official Codex CLI 0.142.5.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "bin": {
@@ -17,7 +17,7 @@
17
17
  "node": ">=20"
18
18
  },
19
19
  "dependencies": {
20
- "@openai/codex": "0.141.0"
20
+ "@openai/codex": "^0.142.5"
21
21
  },
22
22
  "publishConfig": {
23
23
  "access": "public"