From 1b78359739ab2cade00488fcd38a5571c0b803ea Mon Sep 17 00:00:00 2001 From: ciat-777 Date: Sat, 21 Mar 2026 12:48:34 +0800 Subject: [PATCH 1/2] fix: force identity encoding for claude messages --- src/server/proxy-core/providers/claudeProviderProfile.ts | 2 +- src/server/proxy-core/providers/registry.test.ts | 1 + src/server/routes/proxy/upstreamEndpoint.test.ts | 4 ++-- src/server/routes/proxy/upstreamEndpoint.ts | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/server/proxy-core/providers/claudeProviderProfile.ts b/src/server/proxy-core/providers/claudeProviderProfile.ts index e8301da..57eafe2 100644 --- a/src/server/proxy-core/providers/claudeProviderProfile.ts +++ b/src/server/proxy-core/providers/claudeProviderProfile.ts @@ -83,7 +83,7 @@ function buildClaudeRuntimeHeaders(input: { 'User-Agent': getInputHeader(input.claudeHeaders, 'user-agent') || CLAUDE_DEFAULT_USER_AGENT, Connection: 'keep-alive', Accept: input.stream ? 'text/event-stream' : 'application/json', - 'Accept-Encoding': input.stream ? 'identity' : 'gzip, deflate, br, zstd', + 'Accept-Encoding': 'identity', }; if (input.isClaudeOauthUpstream) { headers.Authorization = `Bearer ${input.tokenValue}`; diff --git a/src/server/proxy-core/providers/registry.test.ts b/src/server/proxy-core/providers/registry.test.ts index 8b7c746..e8e149c 100644 --- a/src/server/proxy-core/providers/registry.test.ts +++ b/src/server/proxy-core/providers/registry.test.ts @@ -70,6 +70,7 @@ describe('resolveProviderProfile', () => { expect(result.headers.Authorization).toBe('Bearer oauth-access-token'); expect(result.headers['x-api-key']).toBeUndefined(); expect(result.headers['anthropic-version']).toBe('2023-06-01'); + expect(result.headers['Accept-Encoding']).toBe('identity'); expect(result.runtime).toMatchObject({ executor: 'claude', modelName: 'claude-opus-4-6', diff --git a/src/server/routes/proxy/upstreamEndpoint.test.ts b/src/server/routes/proxy/upstreamEndpoint.test.ts index 8492532..3b52b2f 100644 --- a/src/server/routes/proxy/upstreamEndpoint.test.ts +++ b/src/server/routes/proxy/upstreamEndpoint.test.ts @@ -867,7 +867,7 @@ describe('buildUpstreamEndpointRequest', () => { expect(request.headers['Accept-Encoding']).toBe('identity'); }); - it('uses claude-code beta headers and compressed non-stream responses for claude upstream requests', () => { + it('uses claude-code beta headers and uncompressed non-stream responses for claude upstream requests', () => { const request = buildUpstreamEndpointRequest({ endpoint: 'messages', modelName: 'claude-opus-4-6', @@ -887,7 +887,7 @@ describe('buildUpstreamEndpointRequest', () => { expect(request.headers['anthropic-beta']).toContain('oauth-2025-04-20'); expect(request.headers['anthropic-beta']).toContain('context-management-2025-06-27'); expect(request.headers.Accept).toBe('application/json'); - expect(request.headers['Accept-Encoding']).toBe('gzip, deflate, br, zstd'); + expect(request.headers['Accept-Encoding']).toBe('identity'); }); it('converts system roles to developer in native codex responses bodies', () => { diff --git a/src/server/routes/proxy/upstreamEndpoint.ts b/src/server/routes/proxy/upstreamEndpoint.ts index 9a7aec9..0f73d46 100644 --- a/src/server/routes/proxy/upstreamEndpoint.ts +++ b/src/server/routes/proxy/upstreamEndpoint.ts @@ -443,7 +443,7 @@ function buildClaudeRuntimeHeaders(input: { 'User-Agent': getInputHeader(input.claudeHeaders, 'user-agent') || CLAUDE_DEFAULT_USER_AGENT, Connection: 'keep-alive', Accept: input.stream ? 'text/event-stream' : 'application/json', - 'Accept-Encoding': input.stream ? 'identity' : 'gzip, deflate, br, zstd', + 'Accept-Encoding': 'identity', }; if (input.isClaudeOauthUpstream) { headers.Authorization = `Bearer ${input.tokenValue}`; From 424e1e210b131b48cf54321b4488a004b8fcf9b9 Mon Sep 17 00:00:00 2001 From: ciat-777 Date: Sat, 21 Mar 2026 12:56:34 +0800 Subject: [PATCH 2/2] test: align claude count tokens encoding expectation --- src/server/routes/proxy/chat.count-tokens.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/routes/proxy/chat.count-tokens.test.ts b/src/server/routes/proxy/chat.count-tokens.test.ts index 831485b..8c1c2b1 100644 --- a/src/server/routes/proxy/chat.count-tokens.test.ts +++ b/src/server/routes/proxy/chat.count-tokens.test.ts @@ -145,7 +145,7 @@ describe('claude count_tokens proxy route', () => { expect(targetUrl).toBe('https://api.anthropic.com/v1/messages/count_tokens?beta=true'); expect(options.headers['anthropic-version']).toBe('2023-06-01'); expect(options.headers['anthropic-beta']).toContain('claude-code-20250219'); - expect(options.headers['Accept-Encoding']).toBe('gzip, deflate, br, zstd'); + expect(options.headers['Accept-Encoding']).toBe('identity'); const forwardedBody = JSON.parse(String(options.body)); expect(forwardedBody.model).toBe('claude-opus-4-6');