Skip to content

fix(gateway): claude_code_only 不再误拦截官方 Claude Code 的 count_tokens 与非流式 messages 请求#2919

Open
wucm667 wants to merge 1 commit into
Wei-Shaw:mainfrom
wucm667:fix/claude-code-only-allow-count-tokens
Open

fix(gateway): claude_code_only 不再误拦截官方 Claude Code 的 count_tokens 与非流式 messages 请求#2919
wucm667 wants to merge 1 commit into
Wei-Shaw:mainfrom
wucm667:fix/claude-code-only-allow-count-tokens

Conversation

@wucm667
Copy link
Copy Markdown
Contributor

@wucm667 wucm667 commented May 31, 2026

背景

开启 claude_code_only 后,/v1/messages/count_tokens 因路径包含 messages 会进入 Claude Code messages 严格校验。官方 Claude Code CLI 的 count_tokens 辅助请求通常不携带完整 system prompt 或 metadata.user_id,导致账号选择阶段误判为非 Claude Code 客户端。

issue 中还提到部分 stream=false /v1/messages 请求,但当前没有提供可稳定区分的真实请求样本。为避免第三方客户端仅伪造 UA 就绕过普通 messages 主路径校验,本 PR 不额外放宽普通 /v1/messages

改动

  • /messages/count_tokens 路径新增 Claude Code UA-only 放行,和非 messages 路径保持一致。
  • 保留普通 /v1/messages 的 system prompt、X-Appanthropic-betaanthropic-versionmetadata.user_id 严格校验。
  • 保留现有 max_tokens=1 + Haiku 探测请求 bypass 行为不变。
  • 补充 ClaudeCodeValidator 回归测试,覆盖 count_tokens 放行、UA 安全边界和普通 messages 未被放宽。

测试

  • go test -tags=unit ./...
  • golangci-lint run ./...

Fixes #2909

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] claude_code_only 误拦截官方 Claude Code 的 count_tokens 和 stream=false /v1/messages 请求

1 participant