# Claude Code 的认证变量与实际请求头

用原生 Claude Code 的 bare 模式和独立配置目录连接本机 Ollama，记录真实传输；本地占位认证不会验证商业 Key 有效性。

## 实测范围

Claude Code 原生 CLI → 只记录布尔认证头的本地转发 → Ollama，未使用现有 OAuth/真实 Key。另附共享的真实网关CLI拒绝记录，未取得商业模型答案。

## 运行环境

- node v24.14.0
- claudeCode 2.1.177 (Claude Code)
- ollama 0.40.9
- openai 7.43.0
- ai 7.0.130
- @ai-sdk/openai-compatible 3.0.65

## 操作步骤

### 1. 准备独立运行目录

使用练习包的独立 CLAUDE_CONFIG_DIR，bare 模式禁用项目钩子、MCP和用户配置继承；不改全局登录。

### 2. 启动仅转发 localhost 的记录器

记录路径、目标模型、状态码和请求头是否存在，绝不记录认证值；所有推理仍由11435本地服务完成。

```bash
python3 claude-local-proxy.py
```

### 3. 只设置一种本地占位凭据

服务地址使用根地址 http://127.0.0.1:11439；ANTHROPIC_API_KEY 是本次选择的单一变量，不代表厂商 Key。

```bash
python3 run-claude-local.py api-key
```

### 4. 检查 CLI 输出与传输路径

查看退出码、完整正文及 /v1/messages 实际路径；不能把变量存在当认证成功，也不能把 HTTP 200 当完整答案。

### 5. 换真实服务时核对认证契约

官方 API Key 与网关 Bearer 分开使用；登录冲突、客户端版本和实际费用需在真实目标上重新检查，本机隔离实验与本批共享网关CLI429记录分别保留。

## 实际观察

- 原生 CLI 退出码：0；耗时 0.356 秒
- 原生输出：CLI_LOCAL_OK.
- 本次只设置：ANTHROPIC_API_KEY（本地占位符）
- 传输记录：[{"path": "/v1/messages?beta=true", "model": "tutorial-qwen3-proof:latest", "authorizationBearerPresent": false, "apiKeyHeaderPresent": true, "requestBytes": 1321, "executedAt": 1792767863.0803132, "status": 200}]
- 共享另一组原生Claude Code网关实测：exit=1、is_error=true、api_error_status=429，当前测试Key分组上游饱和；两篇引用同一次调用，不重复计算请求。

## 未验证与限制

- 本批获授权使用既有测试Key，OpenAI SDK两次最小探针均HTTP429：当前测试Key分组上游饱和，随后停止。不能据此声称全站不可用；本地成功不能当作apizt上游或实扣成功。
- bare 隔离实验不等于当前用户已有配置/登录的实际状态；不修改或退出已有 OAuth 登录。
- 本地 Ollama 接受占位认证，不能据此证明无效 Key 也能调用商业网关。

## 官方来源

- [Claude 官方：网关地址与认证头](https://code.claude.com/docs/en/llm-gateway-connect)
- [Ollama 官方：Anthropic 本地兼容](https://docs.ollama.com/api/anthropic-compatibility)
- [Claude 官方：认证优先级](https://code.claude.com/docs/en/authentication)

截图若展示本页执行记录，是结果日志视图，不是产品原生界面。
