History

chore(codex): update codex user-agent to 0.153.3

- Update default Codex executor user-agent and model override headers to `codex-tui/0.153.3`.

Luis Pater committed 2 months agov7.2.152

Commit c76dfd41 parent 580df366 files · +16 −16Browse files

Unified · Split

6 files
  1. internal/client/codex/optimize-multi-agent-v2/optimize_multi_agent_v2_test.go +8 −8
  2. internal/registry/model_definitions_test.go +1 −1
  3. internal/registry/models/models.json +4 −4
  4. internal/runtime/executor/codex_executor_request.go +1 −1
  5. internal/runtime/executor/codex_executor_spawn_agent_test.go +1 −1
  6. internal/runtime/executor/codex_websockets_executor_test.go +1 −1
internal/client/codex/optimize-multi-agent-v2/optimize_multi_agent_v2_test.go+8−8
@@ -30,7 +30,7 @@ func TestIsCodexMultiAgentClient(t *testing.T) { · 29 unmodified lines
30 },30 },
31 {31 {
32 name: "codex tui",32 name: "codex tui",
33 userAgent: "codex-tui/0.145.0 (Mac OS 26.5.2; arm64) iTerm.app/3.6.11 (codex-tui; 0.145.0)",33 userAgent: "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)",
34 want: true,34 want: true,
35 },35 },
36 {36 {
@@ -237,7 +237,7 @@ func TestOptimizeCodexMultiAgentV2RequestSkipsNamespaceConflict(t *testing.T) { · 200 unmodified lines
237 t.Parallel()237 t.Parallel()
238 238
239 payload := []byte(`{"tools":[{"type":"namespace","name":"collaboration","tools":[{"type":"function","name":"spawn_agent"}]},{"type":"namespace","name":"collaboration-optimize","tools":[]}]}`)239 payload := []byte(`{"tools":[{"type":"namespace","name":"collaboration","tools":[{"type":"function","name":"spawn_agent"}]},{"type":"namespace","name":"collaboration-optimize","tools":[]}]}`)
240 headers := http.Header{"User-Agent": []string{"codex-tui/0.145.0"}}240 headers := http.Header{"User-Agent": []string{"codex-tui/0.153.3"}}
241 cfg := &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}}241 cfg := &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}}
242 got, optimized := OptimizeCodexMultiAgentV2Request(context.Background(), headers, payload, cfg)242 got, optimized := OptimizeCodexMultiAgentV2Request(context.Background(), headers, payload, cfg)
243 if optimized {243 if optimized {
@@ -516,13 +516,13 @@ func TestRewriteCodexMultiAgentV2InputConditions(t *testing.T) { · 272 unmodified lines
516 {516 {
517 name: "codex tui enabled",517 name: "codex tui enabled",
518 cfg: &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}},518 cfg: &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}},
519 userAgent: "codex-tui/0.145.0",519 userAgent: "codex-tui/0.153.3",
520 want: true,520 want: true,
521 },521 },
522 {522 {
523 name: "optimization disabled",523 name: "optimization disabled",
524 cfg: &config.Config{},524 cfg: &config.Config{},
525 userAgent: "codex-tui/0.145.0",525 userAgent: "codex-tui/0.153.3",
526 },526 },
527 {527 {
528 name: "unrelated client",528 name: "unrelated client",
@@ -607,7 +607,7 @@ func TestRewriteCodexSpawnAgentDescriptionDisabledLeavesPayloadUnchanged(t *test · 78 unmodified lines
607 t.Parallel()607 t.Parallel()
608 608
609 payload := []byte(`{"tools":[{"type":"function","name":"spawn_agent","description":"unchanged","parameters":{"properties":{"message":{"encrypted":true}}}}]}`)609 payload := []byte(`{"tools":[{"type":"function","name":"spawn_agent","description":"unchanged","parameters":{"properties":{"message":{"encrypted":true}}}}]}`)
610 headers := http.Header{"User-Agent": []string{"codex-tui/0.145.0"}}610 headers := http.Header{"User-Agent": []string{"codex-tui/0.153.3"}}
611 got := RewriteCodexSpawnAgentDescription(context.Background(), headers, payload, &config.Config{})611 got := RewriteCodexSpawnAgentDescription(context.Background(), headers, payload, &config.Config{})
612 if string(got) != string(payload) {612 if string(got) != string(payload) {
613 t.Fatalf("disabled optimization changed payload: %s", got)613 t.Fatalf("disabled optimization changed payload: %s", got)
@@ -645,13 +645,13 @@ func TestReplaceCodexSpawnAgentModelsNormalizesSectionsAndPreservesInstructions( · 31 unmodified lines
645func TestCodexClientUserAgentPrefersGinRequest(t *testing.T) {645func TestCodexClientUserAgentPrefersGinRequest(t *testing.T) {
646 gin.SetMode(gin.TestMode)646 gin.SetMode(gin.TestMode)
647 request := httptest.NewRequest(http.MethodPost, "/v1/responses", nil)647 request := httptest.NewRequest(http.MethodPost, "/v1/responses", nil)
648 request.Header.Set("User-Agent", "codex-tui/0.145.0")648 request.Header.Set("User-Agent", "codex-tui/0.153.3")
649 ginCtx, _ := gin.CreateTestContext(httptest.NewRecorder())649 ginCtx, _ := gin.CreateTestContext(httptest.NewRecorder())
650 ginCtx.Request = request650 ginCtx.Request = request
651 ctx := context.WithValue(context.Background(), "gin", ginCtx)651 ctx := context.WithValue(context.Background(), "gin", ginCtx)
652 headers := http.Header{"User-Agent": []string{"overridden-client/1.0"}}652 headers := http.Header{"User-Agent": []string{"overridden-client/1.0"}}
653 653
654 if got := codexClientUserAgent(ctx, headers); got != "codex-tui/0.145.0" {654 if got := codexClientUserAgent(ctx, headers); got != "codex-tui/0.153.3" {
655 t.Fatalf("codexClientUserAgent() = %q, want gin request User-Agent", got)655 t.Fatalf("codexClientUserAgent() = %q, want gin request User-Agent", got)
656 }656 }
657}657}
@@ -785,7 +785,7 @@ func TestOptimizeCodexMultiAgentV2RequestRemovesEncryptionInAdditionalTools(t *t · 127 unmodified lines
785 ]}785 ]}
786 ]786 ]
787 }`)787 }`)
788 headers := http.Header{"User-Agent": []string{"codex-tui/0.145.0"}}788 headers := http.Header{"User-Agent": []string{"codex-tui/0.153.3"}}
789 cfg := &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}}789 cfg := &config.Config{Codex: config.CodexConfig{OptimizeMultiAgentV2: true}}
790 got, _ := OptimizeCodexMultiAgentV2Request(context.Background(), headers, payload, cfg)790 got, _ := OptimizeCodexMultiAgentV2Request(context.Background(), headers, payload, cfg)
791 791
internal/registry/model_definitions_test.go+1−1
@@ -10,7 +10,7 @@ func TestGetStaticModelDefinitionsByChannelSupportsGeminiInteractions(t *testing · 9 unmodified lines
10}10}
11 11
12func TestModelOverrideHeadersFromEmbeddedModels(t *testing.T) {12func TestModelOverrideHeadersFromEmbeddedModels(t *testing.T) {
13 const wantUA = "codex-tui/0.144.0 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.144.0)"13 const wantUA = "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)"
14 got := ModelOverrideHeaders("gpt-5.6-luna")14 got := ModelOverrideHeaders("gpt-5.6-luna")
15 if got == nil {15 if got == nil {
16 t.Fatal("ModelOverrideHeaders(gpt-5.6-luna) = nil, want headers")16 t.Fatal("ModelOverrideHeaders(gpt-5.6-luna) = nil, want headers")
internal/registry/models/models.json+4−4
@@ -2459,7 +2459,7 @@ · 2458 unmodified lines
2459 },2459 },
2460 "config": {2460 "config": {
2461 "override_header": {2461 "override_header": {
2462 "user-agent": "codex-tui/0.144.0 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.144.0)",2462 "user-agent": "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)",
2463 "originator": "codex-tui"2463 "originator": "codex-tui"
2464 }2464 }
2465 },2465 },
@@ -2651,7 +2651,7 @@ · 185 unmodified lines
2651 },2651 },
2652 "config": {2652 "config": {
2653 "override_header": {2653 "override_header": {
2654 "user-agent": "codex-tui/0.144.0 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.144.0)",2654 "user-agent": "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)",
2655 "originator": "codex-tui"2655 "originator": "codex-tui"
2656 }2656 }
2657 },2657 },
@@ -2872,7 +2872,7 @@ · 214 unmodified lines
2872 },2872 },
2873 "config": {2873 "config": {
2874 "override_header": {2874 "override_header": {
2875 "user-agent": "codex-tui/0.144.0 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.144.0)",2875 "user-agent": "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)",
2876 "originator": "codex-tui"2876 "originator": "codex-tui"
2877 }2877 }
2878 },2878 },
@@ -3093,7 +3093,7 @@ · 214 unmodified lines
3093 },3093 },
3094 "config": {3094 "config": {
3095 "override_header": {3095 "override_header": {
3096 "user-agent": "codex-tui/0.144.0 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.144.0)",3096 "user-agent": "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)",
3097 "originator": "codex-tui"3097 "originator": "codex-tui"
3098 }3098 }
3099 },3099 },
internal/runtime/executor/codex_executor_request.go+1−1
@@ -23,7 +23,7 @@ import ( · 22 unmodified lines
23)23)
24 24
25const (25const (
26 codexUserAgent = "codex-tui/0.146.0 (Mac OS 26.5.0; arm64) iTerm.app/3.6.10 (codex-tui; 0.146.0)"26 codexUserAgent = "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)"
27 codexOriginator = "codex-tui"27 codexOriginator = "codex-tui"
28 codexDefaultImageToolModel = "gpt-image-2"28 codexDefaultImageToolModel = "gpt-image-2"
29 codexResponsesLiteHeader = "X-OpenAI-Internal-Codex-Responses-Lite"29 codexResponsesLiteHeader = "X-OpenAI-Internal-Codex-Responses-Lite"
internal/runtime/executor/codex_executor_spawn_agent_test.go+1−1
@@ -234,7 +234,7 @@ func codexSpawnAgentTestPayload() []byte { · 233 unmodified lines
234 234
235func codexSpawnAgentTestContext() context.Context {235func codexSpawnAgentTestContext() context.Context {
236 request := httptest.NewRequest(http.MethodPost, "/v1/responses", nil)236 request := httptest.NewRequest(http.MethodPost, "/v1/responses", nil)
237 request.Header.Set("User-Agent", "codex-tui/0.145.0")237 request.Header.Set("User-Agent", "codex-tui/0.153.3")
238 ginCtx, _ := gin.CreateTestContext(httptest.NewRecorder())238 ginCtx, _ := gin.CreateTestContext(httptest.NewRecorder())
239 ginCtx.Request = request239 ginCtx.Request = request
240 return context.WithValue(context.Background(), "gin", ginCtx)240 return context.WithValue(context.Background(), "gin", ginCtx)
internal/runtime/executor/codex_websockets_executor_test.go+1−1
@@ -1822,7 +1822,7 @@ func TestApplyCodexWebsocketHeaders_EmptyAPIKey_OmitsAuthorizationAndOAuthHeader · 1821 unmodified lines
1822}1822}
1823 1823
1824func TestApplyModelHeaderOverridesFromModelConfig(t *testing.T) {1824func TestApplyModelHeaderOverridesFromModelConfig(t *testing.T) {
1825 const wantUA = "codex-tui/0.144.0 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.144.0)"1825 const wantUA = "codex-tui/0.153.3 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.153.3)"
1826 req, err := http.NewRequest(http.MethodPost, "https://example.com/responses", nil)1826 req, err := http.NewRequest(http.MethodPost, "https://example.com/responses", nil)
1827 if err != nil {1827 if err != nil {
1828 t.Fatalf("NewRequest() error = %v", err)1828 t.Fatalf("NewRequest() error = %v", err)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t