feat(claude): add fingerprint-profile=claude-code-cli for API keys and delegated providers (#5047)
* feat(config): add fingerprint-profile to Claude keys and auth JSON - Add FingerprintProfile to ClaudeKey configuration struct and normalizer - Track fingerprint-profile in config diff - Map fingerprint-profile / fingerprint_profile to auth attributes in file and config synthesizers - Support fingerprint-profile in Management API PatchClaudeKey and normalization - Add Claude billing attribution string manipulation utilities in internal/util - Document fingerprint-profile options in config.example.yaml * feat(claude): add fingerprint policy and request-local CLI identity - Centralize Claude fingerprint policy resolution in claude_fingerprint_policy.go - Support stable Claude CLI identity synthesis (UUIDv5 account_uuid and SHA-256 device_id) seeded from API keys or stable OAuth IDs, keeping access tokens isolated - Warn on unrecognized fingerprint-profile values * feat(claude): apply CLI fingerprint to Messages and keep API keys caller-owned - Wire centralized fingerprint policy into Claude and Kimi executors - Keep first-party Anthropic API keys and delegated providers caller-owned by default - Apply Claude Code CLI wire profile (betas, metadata, diagnostics, MCP aliases) when fingerprint-profile=claude-code-cli is configured - Strictly align CCH signing with native Claude Code 2.1.220: only first-party api.anthropic.com and Vertex sign dynamic CCH; third-party gateways and Kimi receive billing header without cch= to avoid prompt cache busting - Respect caller-owned count_tokens bodies by default while aligning CLI shape on opt-in - Fall back to CLIProxyAPI/<version> User-Agent when caller sends no UA in caller-owned mode - Scope custom operator header overrides accurately in caller-owned mode - Add comprehensive test coverage for policy resolution, gateway opt-in, Kimi, and token counting
S
sususu98 committed
f1b0431c771802e0cb971179a93a420f67cbe230
Parent: f985a5c
Committed by GitHub <noreply@github.com>
on 8/18/2026, 9:29:26 AM