Claude Code runner 代理鉴权命令怎么配

2.1.238:`--proxy-authorization-command` / `--proxy-authorization-file` 为自托管 runner 每次出站连接签发 Proxy-Authorization,适配要新鲜 token 的出口代理。

Claude Code runner 代理鉴权命令怎么配

claude code runner 代理鉴权命令:不少公司出口代理要求每条连接带新的 Proxy-Authorization,静态环境变量很快过期。2.1.238 给 claude self-hosted-runner 加了 --proxy-authorization-command(每次连接跑命令吐 token)和 --proxy-authorization-file(从文件读)。示例:claude self-hosted-runner --proxy-authorization-command "./mint-proxy-token.sh"

作者CodePass 技术编辑

什么时候你需要它

  • Runner 出站必须走强制代理,且代理鉴权是短时 JWT / 一次性票。
  • 以前靠长生命周期 secret 塞进环境变量,安全评审不过,或票过期导致半截任务失败。
  • Remote Control 经 VPN/边缘偶发 403:同版本写明 Remote Control 可容忍短暂 HTTP 403 最多约 3 分钟,并在持续拦截时指出阻塞方;代理票过期与边缘 403 要分开排。

自托管背景见 自托管环境是什么。滚动发布需要宽限期时,查 CHANGELOG 里的 --defer-shutdown-max-min,与本文代理鉴权常成对配置。

命令脚本要守的规矩

  1. stdout 只吐凭证相关内容,别混日志。stderr 留给诊断。
  2. 退出码非 0 必须失败可见,避免 runner 带着空头继续打。
  3. 权限:脚本与文件仅 runner 用户可读;别放进世界可读目录。
  4. 超时:mint 过慢会拖垮每个出站连接;设短超时与本地缓存策略(若代理允许)。
  5. 审计:记录「何时换票」而不是票面本身。

--proxy-authorization-file 适合由旁路进程写原子替换文件;command 适合对接公司的 vault / sso-cli。两者选一,避免双源打架。

排障顺序

  1. 本机手动跑 mint 脚本,确认输出格式与代理文档一致。
  2. 不经 Claude,用 curl -x 带同一头访问一个 HTTPS 探测 URL。
  3. 再挂 runner,复现失败请求,看是 407/403 还是 TLS 中断。
  4. 对照 Remote Control「谁在拦」的提示,区分代理策略与 Anthropic 边缘。

网关侧 prompt cache 异常是另一条线,见 网关 prompt cache 修复。不要把「代理票过期」和「cache 没命中」混成一个工单。

和延迟关机一起上线时的顺序

先保证 mint 脚本在节点本地可跑,再挂 --proxy-authorization-command,最后才开 --defer-shutdown-max-min。否则宽限窗口里出站全失败,会话「还活着」却什么都干不了,比直接杀掉更难排障。滚动更新剧本里写清:摘流量 → 等待 inflight 完成或到宽限 → SIGTERM → 超时强制杀。把 mint 失败率纳进 runner 健康检查,连续失败就别再调度新会话到该节点。