OneCLI密钥注入原理揭秘为什么AI Agent能调用API却永远碰不到你的API Key【免费下载链接】onecliOpen-source sandboxed agent harness for teams. Giving every employee a secured personal agent.项目地址: https://gitcode.com/gh_mirrors/on/onecliOneCLI 是一个面向团队的开源沙箱 Agent 平台它的核心安全设计就是密钥注入Credential InjectionAI Agent 在沙箱里发出请求时由网关在转发瞬间把真实的 API Key 注入到请求中——密钥从解密、注入到发往上游全程只发生在网关内部Agent 自始至终看不到任何明文凭证。为什么把 API Key 直接交给 AI Agent是危险做法传统方案是把API_KEYsk-xxx写进环境变量或配置文件让 Agent 自己携带密钥发请求。这在团队协作场景下有几个致命问题Agent 自己会把 Key 泄露出去提示词注入、日志打印、env命令一敲密钥就外泄了无法回收Agent 被删了密钥还留在沙箱磁盘、shell 历史里权限不可控拿到 Key 就等于拿到了账号的全部权限没法限制它只能调某几个 APIOneCLI 的思路反过来Agent 永远不持有密钥只有网关知道密钥。第一层原理网关是唯一出口OneCLI 的每个 Agent 都跑在独立沙箱里文件系统 Shell唯一的出网通道是 Rust 写的 Gateway。网关对 HTTPS 做 MITM 终结用生成的叶子证书与客户端握手再与真实上游建立加密连接核心逻辑在 proxy/src/mitm.rs。Agent 要出网先要自报身份它在请求里带上自己的短期访问令牌Proxy-Authorization: Basic base64(token:)头。网关从请求头中提取并校验这个令牌判断这个沙箱属于哪个 Agent、能使用哪些凭证提取逻辑见 inject/src/lib.rs。关键点在于访问令牌 ≠ API Key。令牌只能证明我是被授权走网关的 Agent X它本身换不出任何密钥。第二层原理请求时刻才解密请求过去就消失每个 Agent 连接一个新域名时网关执行一次策略解析按令牌, 主机名缓存约 60 秒见 proxy/src/connect.rs。解析结果是一份注入规则而不是密钥本身。密钥在数据库里是 AES-256-GCM 加密存储的crypto/src/lib.rs 负责解密——但解密只在注入请求的那一刻发生Agent 发出GET https://api.anthropic.com/v1/messages不带任何密钥网关匹配该 Agent 的注入规则临时解密出密钥网关改写请求头后转发给真实上游明文密钥只存在于这一瞬间注入指令的类型定义在 inject/src/secret_inject.rs应用逻辑在 inject/src/lib.rs。不同 API 用不同的注入姿势网关内置了多种注入方式对 Agent 完全无感注入方式典型场景Authorization: Bearer key头OpenAI 等大多数 APIx-api-key头 删除原有Authorization头AnthropicURL 查询参数?keyxxxYouTube 等 Google APIURL 路径模板/bot{value}/sendMessageTelegram 这类把 Token 放在路径里的 API正则改写路径高级模式其他特殊鉴权形态甚至对 OAuth 类凭证如 ChatGPT 会话网关还会自动完成 access_token 过期刷新并加密回存见 secret_inject.rs。第三层原理比Agent 看不到更严格的防护OneCLI 在注入链路上又叠了几道保险主机名 路径双重限定密钥只注入到配置的主机和路径范围。写入时禁止*.notion.*这类尾部通配它匹配不到任何真实属主域名读取时还会二次校验见 secret_inject.rs策略 ⊇ 注入策略引擎的管控范围按构造严格覆盖注入范围Agent 没被 allow 的主机连规则都解析不到高危操作发邮件、删数据还能触发聊天内人工审批外部保险库按需取密接入 Bitwarden 或 1Password 后密钥甚至可以完全不存服务器——网关在请求时向你的密码管理器现取现用只在内存缓存 60 秒永不落盘见 docs/vault-integration.md 与 apps/gateway/crates/vault/一个巧妙的细节占位密钥让 Agent 彻底安静有些 Agent如 Codex自带 OAuth 刷新逻辑如果给它一个假 token它会反复重试刷新、产生请求风暴。OneCLI 在 default_interceptions.rs 里写了一个静态拦截表Agent 配置文件里的 token 是占位符onecli-managed当它尝试刷新时网关直接合成一个 200 响应让它闭嘴真正的 token 只在实际调用 API 时才注入。新手快速上手git clone https://gitcode.com/gh_mirrors/on/onecli cd onecli pnpm install pnpm run setup启动后打开http://localhost:10254在 Connections 里保存一个密钥如 Anthropic Key再给 Agent 授权即可。完整命令参考见 docs/development.md。总结OneCLI 的密钥注入可以概括为一句话Agent 有令牌、没密钥网关认令牌、发密钥。Agent 侧只有短期访问令牌沙箱里 grep 不到任何 API Key网关侧按Agent × 主机 × 路径精确匹配请求时刻才解密并注入平台侧策略引擎 人工审批兜底密钥可完全不落盘外部 Vault这套设计让给每个员工一个 AI Agent从一句口号变成可落地的工程方案——密钥管理不再依赖每个人的自觉而是由架构保证。【免费下载链接】onecliOpen-source sandboxed agent harness for teams. Giving every employee a secured personal agent.项目地址: https://gitcode.com/gh_mirrors/on/onecli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
