核心用法
TapAuth 是一款面向AI编码代理的委托式OAuth令牌管理工具,核心价值在于让代理无需接触任何API密钥或凭证,即可安全调用用户授权的第三方服务。
使用模式
通过命令替换模式内联调用:
curl -H "Authorization: Bearer $(scripts/tapauth.sh <provider> <scopes>)" <api-url>
首次运行流程:
1. 脚本创建授权请求,向stderr输出审批URL(需展示给用户)
2. 自动轮询等待用户浏览器确认(最长10分钟)
3. 用户授权后,stdout输出令牌,本地加密缓存
4. 后续调用直接返回缓存令牌,过期自动刷新
显著优点
| 特性 | 说明 |
|------|------|
| **零配置** | 无需API密钥、client_secret或环境变量,开箱即用 |
| **安全架构** | 零知识加密——TapAuth服务端不存储明文令牌,grant_secret本地管理 |
| **12+平台覆盖** | Google全家桶、GitHub、Slack、Linear、Notion、Vercel、Sentry、Asana、Discord |
| **智能缓存** | 按provider+scope组合隔离存储,权限700/600,支持自定义缓存目录 |
| **广泛兼容** | Claude Code、Cursor、OpenClaw、Codex、GitHub Copilot及任何支持shell的代理 |
潜在局限与风险
架构性限制:
- 无法服务端撤销令牌:因零知识加密设计,TapAuth无法代用户撤销已发放的OAuth令牌,需用户自行在各平台设置中解除授权
- 审批URL依赖人工:首次授权必须用户主动点击链接完成浏览器交互,纯自动化场景(如CI/CD)需预审批
- 短令牌生命周期:Google/Linear等1小时过期,虽有自动刷新,但极端长任务可能中断
使用注意:
- 错误重定向stderr会导致令牌污染(
2>&1会破坏$(...)捕获) - scope格式因平台而异(Google用URL风格
calendar.readonly,GitHub用单词repo) - OpenClaw secrets模式仅10秒超时,无法交互式授权
适合人群
- AI编码代理用户:Claude Code、Cursor等工具的深度使用者,需频繁调用第三方API
- 隐私敏感场景:不愿将API密钥明文存储在代理环境或配置文件中
- 多平台集成开发者:需要统一方式对接GitHub项目管理、Google办公套件、Linear看板等
- 快速原型验证:零配置特性适合MVP阶段的快速API接入测试
常规风险
| 风险等级 | 场景 | 缓解措施 |
|----------|------|----------|
| 中 | 用户误点钓鱼审批URL | 始终验证`tapauth.ai`域名,脚本内置grant_secret验证 |
| 低 | 本地缓存文件被窃取 | 权限700/600限制,建议配合系统全盘加密 |
| 低 | 授权范围过大 | 遵循最小权限原则,使用细粒度provider如`google_sheets`替代全功能`google` |