From 8461b4e91d6f12a1cee02e7833917374db0a19bc Mon Sep 17 00:00:00 2001 From: sususu Date: Fri, 11 Sep 2026 00:30:15 +0800 Subject: [PATCH] chore(codex): update codex user-agent to 0.154.0 --- cmd/fetch_codex_models/main.go | 6 +++--- .../optimize_multi_agent_v2_test.go | 18 +++++++++--------- internal/registry/model_definitions_test.go | 2 +- internal/registry/models/models.json | 8 ++++---- .../runtime/executor/codex_executor_request.go | 2 +- .../codex_executor_spawn_agent_test.go | 2 +- .../executor/codex_websockets_executor_test.go | 2 +- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/cmd/fetch_codex_models/main.go b/cmd/fetch_codex_models/main.go index 48c710364..4dbfab0c5 100644 --- a/cmd/fetch_codex_models/main.go +++ b/cmd/fetch_codex_models/main.go @@ -11,7 +11,7 @@ // --auths-dir Directory containing auth JSON files (default: config auth-dir) // --config Config file path (default: "config.yaml") // --output Output JSON file path (default: "codex_client_models.json") -// --client-version Codex client_version query value (default: "0.144.1") +// --client-version Codex client_version query value (default: "0.154.0") // --pretty Pretty-print the output JSON (default: true) package main @@ -42,8 +42,8 @@ import ( const ( codexModelsBaseURL = "https://chatgpt.com/backend-api/codex" codexModelsPath = "/models" - defaultClientVersion = "0.153.3" - defaultCodexUserAgent = "codex_cli_rs/0.153.3 (Mac OS 26.3.1; arm64) iTerm.app/3.6.9" + defaultClientVersion = "0.154.0" + defaultCodexUserAgent = "codex_cli_rs/0.154.0 (Mac OS 26.3.1; arm64) iTerm.app/3.6.9" defaultCodexOriginator = "codex_cli_rs" accessTokenRefreshLeeway = 30 * time.Second ) diff --git a/internal/client/codex/optimize-multi-agent-v2/optimize_multi_agent_v2_test.go b/internal/client/codex/optimize-multi-agent-v2/optimize_multi_agent_v2_test.go index 702ba656f..06f68ab71 100644 --- a/internal/client/codex/optimize-multi-agent-v2/optimize_multi_agent_v2_test.go +++ b/internal/client/codex/optimize-multi-agent-v2/optimize_multi_agent_v2_test.go @@ -30,7 +30,7 @@ func TestIsCodexMultiAgentClient(t *testing.T) { }, { name: "codex tui", - userAgent: "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)", + userAgent: "codex-tui/0.154.0 (Mac OS 26.5.2; arm64) iTerm.app/3.6.11 (codex-tui; 0.154.0)", want: true, }, { @@ -237,7 +237,7 @@ func TestOptimizeCodexMultiAgentV2RequestSkipsNamespaceConflict(t *testing.T) { t.Parallel() payload := []byte(`{"tools":[{"type":"namespace","name":"collaboration","tools":[{"type":"function","name":"spawn_agent"}]},{"type":"namespace","name":"collaboration-optimize","tools":[]}]}`) - headers := http.Header{"User-Agent": []string{"codex-tui/0.153.3"}} + headers := http.Header{"User-Agent": []string{"codex-tui/0.154.0"}} cfg := &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}} got, optimized := OptimizeCodexMultiAgentV2Request(context.Background(), headers, payload, cfg) if optimized { @@ -252,7 +252,7 @@ func TestOptimizeCodexMultiAgentV2RequestSkipsDotPrefixConflict(t *testing.T) { t.Parallel() payload := []byte(`{"tools":[{"type":"namespace","name":"collaboration","tools":[{"type":"function","name":"spawn_agent"}]},{"type":"function","name":"collaboration-optimize.tool"}]}`) - headers := http.Header{"User-Agent": []string{"codex-tui/0.153.3"}} + headers := http.Header{"User-Agent": []string{"codex-tui/0.154.0"}} cfg := &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}} got, optimized := OptimizeCodexMultiAgentV2Request(context.Background(), headers, payload, cfg) if optimized { @@ -566,13 +566,13 @@ func TestRewriteCodexMultiAgentV2InputConditions(t *testing.T) { { name: "codex tui enabled", cfg: &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}}, - userAgent: "codex-tui/0.153.3", + userAgent: "codex-tui/0.154.0", want: true, }, { name: "optimization disabled", cfg: &config.Config{}, - userAgent: "codex-tui/0.153.3", + userAgent: "codex-tui/0.154.0", }, { name: "unrelated client", @@ -657,7 +657,7 @@ func TestRewriteCodexSpawnAgentDescriptionDisabledLeavesPayloadUnchanged(t *test t.Parallel() payload := []byte(`{"tools":[{"type":"function","name":"spawn_agent","description":"unchanged","parameters":{"properties":{"message":{"encrypted":true}}}}]}`) - headers := http.Header{"User-Agent": []string{"codex-tui/0.153.3"}} + headers := http.Header{"User-Agent": []string{"codex-tui/0.154.0"}} got := RewriteCodexSpawnAgentDescription(context.Background(), headers, payload, &config.Config{}) if string(got) != string(payload) { t.Fatalf("disabled optimization changed payload: %s", got) @@ -695,13 +695,13 @@ func TestReplaceCodexSpawnAgentModelsNormalizesSectionsAndPreservesInstructions( func TestCodexClientUserAgentPrefersGinRequest(t *testing.T) { gin.SetMode(gin.TestMode) request := httptest.NewRequest(http.MethodPost, "/v1/responses", nil) - request.Header.Set("User-Agent", "codex-tui/0.153.3") + request.Header.Set("User-Agent", "codex-tui/0.154.0") ginCtx, _ := gin.CreateTestContext(httptest.NewRecorder()) ginCtx.Request = request ctx := context.WithValue(context.Background(), "gin", ginCtx) headers := http.Header{"User-Agent": []string{"overridden-client/1.0"}} - if got := codexClientUserAgent(ctx, headers); got != "codex-tui/0.153.3" { + if got := codexClientUserAgent(ctx, headers); got != "codex-tui/0.154.0" { t.Fatalf("codexClientUserAgent() = %q, want gin request User-Agent", got) } } @@ -835,7 +835,7 @@ func TestOptimizeCodexMultiAgentV2RequestRemovesEncryptionInAdditionalTools(t *t ]} ] }`) - headers := http.Header{"User-Agent": []string{"codex-tui/0.153.3"}} + headers := http.Header{"User-Agent": []string{"codex-tui/0.154.0"}} cfg := &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}} got, _ := OptimizeCodexMultiAgentV2Request(context.Background(), headers, payload, cfg) diff --git a/internal/registry/model_definitions_test.go b/internal/registry/model_definitions_test.go index 38cfab15b..883881388 100644 --- a/internal/registry/model_definitions_test.go +++ b/internal/registry/model_definitions_test.go @@ -10,7 +10,7 @@ func TestGetStaticModelDefinitionsByChannelSupportsGeminiInteractions(t *testing } func TestModelOverrideHeadersFromEmbeddedModels(t *testing.T) { - const wantUA = "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)" + const wantUA = "codex-tui/0.154.0 (Mac OS 26.5.2; arm64) iTerm.app/3.6.11 (codex-tui; 0.154.0)" got := ModelOverrideHeaders("gpt-5.6-luna") if got == nil { t.Fatal("ModelOverrideHeaders(gpt-5.6-luna) = nil, want headers") diff --git a/internal/registry/models/models.json b/internal/registry/models/models.json index 2a54c3103..fce91319b 100644 --- a/internal/registry/models/models.json +++ b/internal/registry/models/models.json @@ -2459,7 +2459,7 @@ }, "config": { "override_header": { - "user-agent": "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)", + "user-agent": "codex-tui/0.154.0 (Mac OS 26.5.2; arm64) iTerm.app/3.6.11 (codex-tui; 0.154.0)", "originator": "codex-tui" } }, @@ -2651,7 +2651,7 @@ }, "config": { "override_header": { - "user-agent": "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)", + "user-agent": "codex-tui/0.154.0 (Mac OS 26.5.2; arm64) iTerm.app/3.6.11 (codex-tui; 0.154.0)", "originator": "codex-tui" } }, @@ -2872,7 +2872,7 @@ }, "config": { "override_header": { - "user-agent": "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)", + "user-agent": "codex-tui/0.154.0 (Mac OS 26.5.2; arm64) iTerm.app/3.6.11 (codex-tui; 0.154.0)", "originator": "codex-tui" } }, @@ -3093,7 +3093,7 @@ }, "config": { "override_header": { - "user-agent": "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)", + "user-agent": "codex-tui/0.154.0 (Mac OS 26.5.2; arm64) iTerm.app/3.6.11 (codex-tui; 0.154.0)", "originator": "codex-tui" } }, diff --git a/internal/runtime/executor/codex_executor_request.go b/internal/runtime/executor/codex_executor_request.go index 6842ed8f4..23f00eb57 100644 --- a/internal/runtime/executor/codex_executor_request.go +++ b/internal/runtime/executor/codex_executor_request.go @@ -23,7 +23,7 @@ import ( ) const ( - codexUserAgent = "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)" + codexUserAgent = "codex-tui/0.154.0 (Mac OS 26.5.2; arm64) iTerm.app/3.6.11 (codex-tui; 0.154.0)" codexOriginator = "codex-tui" codexDefaultImageToolModel = "gpt-image-2" codexResponsesLiteHeader = "X-OpenAI-Internal-Codex-Responses-Lite" diff --git a/internal/runtime/executor/codex_executor_spawn_agent_test.go b/internal/runtime/executor/codex_executor_spawn_agent_test.go index 4971c5017..e76a03bb1 100644 --- a/internal/runtime/executor/codex_executor_spawn_agent_test.go +++ b/internal/runtime/executor/codex_executor_spawn_agent_test.go @@ -234,7 +234,7 @@ func codexSpawnAgentTestPayload() []byte { func codexSpawnAgentTestContext() context.Context { request := httptest.NewRequest(http.MethodPost, "/v1/responses", nil) - request.Header.Set("User-Agent", "codex-tui/0.153.3") + request.Header.Set("User-Agent", "codex-tui/0.154.0") ginCtx, _ := gin.CreateTestContext(httptest.NewRecorder()) ginCtx.Request = request return context.WithValue(context.Background(), "gin", ginCtx) diff --git a/internal/runtime/executor/codex_websockets_executor_test.go b/internal/runtime/executor/codex_websockets_executor_test.go index 39617239d..5c23160a5 100644 --- a/internal/runtime/executor/codex_websockets_executor_test.go +++ b/internal/runtime/executor/codex_websockets_executor_test.go @@ -1822,7 +1822,7 @@ func TestApplyCodexWebsocketHeaders_EmptyAPIKey_OmitsAuthorizationAndOAuthHeader } func TestApplyModelHeaderOverridesFromModelConfig(t *testing.T) { - const wantUA = "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)" + const wantUA = "codex-tui/0.154.0 (Mac OS 26.5.2; arm64) iTerm.app/3.6.11 (codex-tui; 0.154.0)" req, err := http.NewRequest(http.MethodPost, "https://example.com/responses", nil) if err != nil { t.Fatalf("NewRequest() error = %v", err)