Skip to content

Commit 1f2504e

Browse files
authored
fix(claude): bypass signature sanitizer for non-Claude models (router-for-me#3946)
* fix(claude): bypass signature sanitizer for non-Claude models * test(claude): use subtests for sanitizer gate model cases
1 parent 369e560 commit 1f2504e

2 files changed

Lines changed: 430 additions & 4 deletions

File tree

internal/runtime/executor/claude_executor.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,18 @@ type ClaudeExecutor struct {
4545
// Previously "proxy_" was used but this is a detectable fingerprint difference.
4646
const claudeToolPrefix = ""
4747

48+
func shouldSanitizeClaudeMessagesForUpstream(baseModel string) bool {
49+
return sigcompat.SignatureProviderFromModelName(baseModel) == sigcompat.SignatureProviderClaude
50+
}
51+
4852
func sanitizeClaudeMessagesForClaudeUpstreamWithDebug(ctx context.Context, body []byte, baseModel string) []byte {
49-
sanitized, report := sigcompat.SanitizeClaudeMessagesForClaudeUpstream(body, baseModel)
50-
logClaudeSignatureSanitizeReport(ctx, baseModel, report)
51-
sanitized = sanitizeClaudeWebSearchDomains(sanitized)
52-
return sanitized
53+
sanitized := body
54+
if shouldSanitizeClaudeMessagesForUpstream(baseModel) {
55+
var report sigcompat.SignatureSanitizeReport
56+
sanitized, report = sigcompat.SanitizeClaudeMessagesForClaudeUpstream(body, baseModel)
57+
logClaudeSignatureSanitizeReport(ctx, baseModel, report)
58+
}
59+
return sanitizeClaudeWebSearchDomains(sanitized)
5360
}
5461

5562
// sanitizeClaudeWebSearchDomains removes empty allowed_domains/blocked_domains

0 commit comments

Comments
 (0)