agent-security
solongate/agent-security加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

设想这样一个场景:你在公司电脑上用 Claude Code 批量重构老代码。智能体干得很顺手——读文件、改文件、跑测试、装依赖,一切看起来都在轨道上。直到某一次,它为了"确认环境变量"去读了一个 .env 文件。
这个 .env 里躺着生产数据库的连接串、第三方 API 的密钥、支付网关的私钥。智能体没恶意,它只是在做它认为合理的动作。但凭据一旦进入对话上下文,就等于交给了模型提供方的服务器——可能进入日志、可能被缓存、可能被用于后续的越界调用。
SolonGate Agent Security 就是冲着这个场景来的。它的做法不复杂:在智能体和工具之间插一道网关。智能体每次调用工具,网关先检查一遍——这条路径允许吗?这条命令允许吗?这次调用里有没有夹带密钥?频率是不是超了?全部通过才放行,否则直接拦下并告诉智能体"这条被拒了"。智能体收到拒绝后不会偷偷绕道,而是会如实向用户报告。
换句话说:把"请 agent 谨慎一点"这种提示词,变成一个真正拦得住的机制。

从架构图看,一个工具调用要连过四关:
第一关:策略规则(Policy Rules)。规则按四类动作分维度配置——READ(读)、WRITE(写)、EXECUTE(执行)、NETWORK(网络),每个维度可按路径、命令、文件名、URL 精确放行或拒绝。策略引擎基于 OPA/Rego,策略文件是纯本地 YAML/JSON,团队可以像管 Git 仓库一样管它、走 code review。
第二关:敏感信息检测(DLP)。内置 70+ 种密钥识别模式(AWS AK、云厂商 AK/SK、私钥块、JWT、数据库串等),并支持自定义模式。四种工作模式:off / detect(只报不拦)/ redact(就地打码)/ block(直接拦)。这是与同类项目拉开差距的地方——不少"AI 安全层"只做正则匹配,而这里额外做了 Egress 拦截:如果一次上传的文件里含密钥,即使工具调用本身看起来无害,也会被拦下。单纯对调用参数做模式匹配是看不到这一层的。
第三关:速率限制(Rate Limit)。按分钟/小时/天设定调用上限,防止 agent 陷入死循环式调用或暴力扫描。
第四关:审计与防篡改(Audit & Tamper Protection)。所有决策落本地审计日志,可离线回溯;更关键的是"防篡改"设计——网关自身的状态对工具调用不可达,仓库里的策略文件不能把自己关掉。这条设计直指一个隐蔽的攻击面:agent 有文件写权限,如果策略文件本身可被 agent 修改,那整套机制就是自欺欺人。
此外还有两个"纵深防御"机制:

上面这段 GIF 是一段真实的 Claude Code 会话:agent 伸手去拿 .env,网关拒绝,Claude 老老实实把"被拦下了"告诉用户。
关键点在于这个拒绝是可解释、可审计、且智能体绕不过去的——不是靠提示词让 agent 自觉。
安装只有四行:
git clone https://github.com/solongate/agent-security.git
cd agent-security
./scripts/install.sh
solongate
前提是 Git + Go 1.26+(install.sh 会检测到缺 Go 时自动拉取官方构建,不分操作系统)。装完必须开一个新终端——钩子(hook)是在会话启动时加载的,已经开着的会话还没被保护。这是新手最容易踩的坑。
命令行覆盖了从策略管理到运维的完整链路:
| 命令 | 作用 |
|---|---|
solongate | 进入 TUI:策略、审计、设置面板 |
solongate policy | 列出、创建、编辑策略 |
solongate dlp | 敏感信息检测 |
solongate ratelimit | 速率限制配置 |
solongate policy protect <path> | 锁定路径并说明该锁的价值 |
solongate sandbox list | 列出本机的沙箱盒子及其 id |
solongate sandbox --explain 001 | 展开某个盒子的全部内容 |
solongate run claude | 以保护路径不可达的方式启动 agent |
solongate audit / watch / trace | 审计浏览 / 实时追踪工具调用 / 查看本目录守卫视角 |
solongate doctor / repair / update | 健康检查 / 修复守卫与钩子 / 拉新版重装 |
已支持的智能体:Claude Code、Codex CLI、Antigravity CLI、OpenCode(OpenClaw、Hermes、Chainabit 标注为"即将支持",也欢迎自研接入)。
门槛评价:低。 命令行是唯一形态,没有 Web 控制台、没有服务端组件、没有账号体系。整套东西跑在你自己的机器上,策略和审计日志都是本地文件。代价是:团队要推行它,得靠策略文件进 Git + code review 这套流程来管理,而不是靠一个后台 UI。
"本地优先"这个说法有细节。项目自己在 CHANGELOG 里澄清过:早期 README 写过"不含任何能开 socket 的代码",后来改为"守卫自身不发起网络调用"——因为守卫链接了 OPA,会带入 net/http 和 http.send 内建函数。它们不被调用,但二进制层面确实存在。这份坦白本身是加分项,但读者需要知道边界在哪。
它明确不是 MCP 网关。v0.0.6 的 changelog 专门加了一句文档说明"不要把 SolonGate 当成 MCP gateway"来避免误解。它拦的是 agent 的工具调用,不是 agent 与模型之间的通信——想防提示词注入的数据外泄,得另想办法。
agent 安全赛道正在成为营销重灾区。SolonGate 团队自己也吐槽:"一堆所谓开源 agent 安全项目,本质是自定义正则加几条简单规则,甚至代码库里全是 emoji 假装自己是 AI 安全层。"他们公开了基准方法论,同时公开了漏报、误拦和已知局限。这在同行里不算普遍姿态。
成熟度仍偏早。仓库 2026-09-27 创建,v0.0.7 是当前最新发布版(2026-10-14),151 个 open issue 未关闭。好的一面是贡献极其活跃(外部贡献者的 PR 合并率 100%,维护者平均 1 天内回复,30 天内合并 111 个 PR);风险在于版本号仍在 0.0.x,功能边界还在快速变动。
CLI 单形态的取舍。没有 Web UI 对个人和小团队很友好,对企业合规审计、策略集中治理、跨机统一管控则不够用——策略文件的版本管理最终还是要靠 Git 那一套。
沙箱依赖操作系统能力。Landlock 需要 Linux 5.13+ 内核,Seatbelt 是 macOS 专用;Windows 路径支持有限。
这个项目背后是一条清晰的技术路线变迁:AI 编码工具的竞争焦点,正在从"模型能力"转向"运行时可控性"。
第一阶段,大家在拼提示词工程和模型能力;第二阶段,进入 agent 时代后,真正的瓶颈变成了——agent 有 shell、有文件系统、有网络权限,而它的行为不可预测。传统安全模型在这里几乎全部失效:权限太宽、意图会漂移、绝大多数控制都是"事后检测"而不是"事前拦截"。
SolonGate 的价值在于,它把安全控制放在了系统调用之前的那一层,用 OS 能力(Landlock/Seatbelt)兜底,用策略引擎(OPA)做决策,用 hook 拦截做入口。这是把 agent 当成"一个不可信的主体"来对待,而不是当成"一个听话的助手"。
值得注意的是这个项目的开源姿态背后的产业逻辑——团队明确说"AI 安全太重要了,不该先变成一个靠融资和闭源盒子讲故事的市场"。在这个领域大部分项目还在讲概念时,直接把守卫用 Go 重写、把基准方法论和漏报一起公开、开放 40 个 beginner-friendly issue 欢迎新人上手,是少数派做法。
增长曲线:创建至今约 40 天从 0 涨到 400+ star,forks 32,开源不到两个月就登上 GitHub Trending 日榜(最高 #292),25 位贡献者。Apache-2.0 协议,OpenSSF Best Practices Gold 级别、SLSA Level 3 构建溯源、Scorecard 与 CodeQL 全套供应链安全配置齐备——这套合规基建在同体量项目里相当罕见。
适合立刻用的场景:任何在开发者机器或 CI 里跑 Claude Code / Codex 的团队,尤其是处理真实凭据、连接生产环境、或需要审计 agent 行为的场景。
推荐路径:
solongate doctor 确认环境健康,跑一遍 solongate audit 看审计格式;.env、.git、SSH 私钥"这类最小策略起步,别一上来就写复杂规则;policy protect(OS 级路径保护)和 sandbox(最小文件系统),这两层才是真正绕不过去的。一句话结论:这是目前开源 agent 安全工具中工程完成度最高的一批(Go 重写、多 OS 沙箱、OPA 策略引擎、SLSA 溯源、完整测试体系),适合个人与小团队立刻上手,也值得企业级团队评估其策略即代码的治理思路——但 0.0.x 的版本号和 151 个 open issue 提醒你:先在非关键环境跑一段时间。