diff --git a/pkg/providers/codex_provider.go b/pkg/providers/codex_provider.go index ab8c0ac..054c1ef 100644 --- a/pkg/providers/codex_provider.go +++ b/pkg/providers/codex_provider.go @@ -846,7 +846,7 @@ func applyCodexWebsocketHeaders(headers http.Header, attempt authAttempt, option } headers.Set("User-Agent", codexCompatUserAgent) if attempt.kind != "api_key" { - headers.Set("Originator", "codex_cli_rs") + headers.Set("Originator", codexCompatOriginator) if attempt.session != nil { accountID := firstNonEmpty( strings.TrimSpace(attempt.session.AccountID), diff --git a/pkg/providers/codex_provider_test.go b/pkg/providers/codex_provider_test.go index 418a994..306c591 100644 --- a/pkg/providers/codex_provider_test.go +++ b/pkg/providers/codex_provider_test.go @@ -99,7 +99,7 @@ func TestApplyAttemptProviderHeaders_CodexOAuth(t *testing.T) { if got := req.Header.Get("Accept"); got != "text/event-stream" { t.Fatalf("expected sse accept header, got %q", got) } - if got := req.Header.Get("Originator"); got != "codex_cli_rs" { + if got := req.Header.Get("Originator"); got != codexCompatOriginator { t.Fatalf("expected codex originator, got %q", got) } if got := req.Header.Get("Chatgpt-Account-Id"); got != "acct_123" { diff --git a/pkg/providers/http_provider.go b/pkg/providers/http_provider.go index 80b44be..e8620b5 100644 --- a/pkg/providers/http_provider.go +++ b/pkg/providers/http_provider.go @@ -21,13 +21,14 @@ import ( ) const ( - codexCompatBaseURL = "https://chatgpt.com/backend-api/codex" - codexClientVersion = "0.101.0" - codexCompatUserAgent = "codex_cli_rs/0.101.0 (Mac OS 26.0.1; arm64) Apple_Terminal/464" - qwenCompatBaseURL = "https://portal.qwen.ai/v1" - qwenCompatUserAgent = "QwenCode/0.10.3 (darwin; arm64)" - kimiCompatBaseURL = "https://api.kimi.com/coding/v1" - kimiCompatUserAgent = "KimiCLI/1.10.6" + codexCompatBaseURL = "https://chatgpt.com/backend-api/codex" + codexClientVersion = "0.115.0-alpha.27" + codexCompatOriginator = "codex-tui" + codexCompatUserAgent = "codex-tui/0.115.0-alpha.27 (Mac OS 26.0.1; arm64) Apple_Terminal/464" + qwenCompatBaseURL = "https://portal.qwen.ai/v1" + qwenCompatUserAgent = "QwenCode/0.10.3 (darwin; arm64)" + kimiCompatBaseURL = "https://api.kimi.com/coding/v1" + kimiCompatUserAgent = "KimiCLI/1.10.6" ) type providerAPIRuntimeState struct { @@ -910,7 +911,7 @@ func applyAttemptProviderHeaders(req *http.Request, attempt authAttempt, provide req.Header.Set("Accept", "application/json") } if attempt.kind != "api_key" { - req.Header.Set("Originator", "codex_cli_rs") + req.Header.Set("Originator", codexCompatOriginator) if attempt.session != nil && strings.TrimSpace(attempt.session.AccountID) != "" { req.Header.Set("Chatgpt-Account-Id", strings.TrimSpace(attempt.session.AccountID)) }