Grith 正式发布——在操作系统层面为 AI 编程代理加一道安全边界
摘要:Grith 是一款运行在操作系统层面的安全代理,专门守护 AI 编程代理。它通过拦截系统调用、用确定性规则打分,把“允许 / 排队 / 拒绝”的决定权从 AI 模型手中拿回来,避免代理被提示注入或恶意文件操纵。目前 0.3.2 版本已发布,支持 Linux x86_64 与 arm64,安全核心完全免费开源。
为什么需要这道安全边界?
AI 编程代理在执行操作前会先请求权限。但大多数开发者最终都会打开自动批准(auto-approve)模式——毕竟每小时手动审查几十条权限提示,根本算不上正常的工作流。
可一旦开启自动批准,代理实际上就是在自己批准自己的行为。而做决定的,依然是同一个概率模型。这个模型完全可能被一份恶意 README 或一次精心设计的提示注入(prompt injection)牵着走。
Grith 的立场不同:安全决策的做出者,不应该与被保护对象是同一个本体。它跑在操作系统层面,独立于 AI 代理之外,充当一道真正的安全边界。
Grith 的工作方式
Grith 是一个操作系统层级的监督程序。在 Linux 上,它使用 ptrace 配合 seccomp-BPF 预过滤器,拦截与安全相关的系统调用——包括文件访问、进程执行和网络操作。通俗地说,就是所有敏感操作在到达系统之前,都得先过它这一关。
拦截之后,Grith 用 18 个过滤器分三个阶段打分:
- 静态检查:查看调用本身的属性。
- 模式匹配:用 1,618 条规则做密钥扫描、检查出站策略、检测破坏性操作。
- 上下文过滤器:包括污点跟踪(taint tracking),追踪数据是否来自不可信来源。
这个匹配层是确定性的,整个执行链路里没有大语言模型(LLM)参与,因此评分结果可预期、可复现。
最终有三种裁决,界限清晰:
- 允许(ALLOW):得分低于 3.0,调用放行。
- 排队(QUEUE):得分在 3.0 到 8.0 之间,进程暂停,等待人工审查。
- 拒绝(DENY):得分高于 8.0,向系统调用返回权限错误码。
没有模糊地带,而且打分中位时间只要 0.02 毫秒,日常那些不需要审查的调用几乎感觉不到额外开销。
快速上手
安装很简单:
curl -fsSL https://grith.ai/install | sh
然后把你正在用的工具包起来:
grith exec -- claude-code "fix the bug"
Grith 预置了 claude-code、codex、aider、goose、cline 等工具的配置文件,会自动放行这些工具的日常操作。这样一来,队列里只会出现真正值得人工关注的调用。
另外还内置了一个代理模式:
grith run "fix the tests"
这个命令可以让任何兼容 OpenAI 接口的 API 或本地 Ollama 模型走同一套流水线——同样的过滤器、同样的阈值、同样的审计日志。也就是说,即使你换一个前端工具,安全策略依然保持一致。
近期版本更新
Grith 最近几个版本主要在堵自己的逃逸路径,同时拓宽运行环境:
- v0.2.2:移除了冷启动阈值放宽。会话中第一次调用的评分标准,和第一万次完全一致,避免“刚启动就放松警惕”。
- v0.2.3:新增对“监管逃逸”类操作的强制拦截。一类是授予权限的派生操作(
systemd-run、docker、tmux、crontab等),另一类是控制注入类的 socket 连接(session D-Bus、tmux、X11)。 - v0.2.4:提供 Linux arm64 原生支持;不再因为启动目录受信任就放行凭据仓库的访问;代理对文件重命名的目标位置也要打分,而不是只看源文件。
- v0.2.5:将上述逃逸拦截强制默认开启。Grith 团队明确表示:“一个默认关闭最锋利防护的监管工具,我们自己是不会用的。”命中规则的操作会升级到人工审核队列,而不是直接拒绝;
docker ps这类只读调用则不会弹出提示。非交互式会话采取“安全失败”策略,直接拒绝——因此 CI 脚本如果确实需要合理委托,必须在配置文件中加入许可条目。这个权衡写在了 CHANGELOG 里,尚未堵上的漏洞也一并列明。 - v0.3.0:增加保护隐私的团队分析、仅限工作区内的共享,以及 D-Bus 控制 socket 的覆盖。
- v0.3.1:增加可验证的每日分析归档,并减少提示噪音,同时不削弱拒绝决定的力度。
- v0.3.2:让出口速率状态感知结果。被拒绝的重试风暴不再算作已投递流量,而反复访问被拦截目标的行为仍然对策略可见。
需要说明的是,Grith 能识别已知的委托路径,包括常见的控制套接字和委托型二进制文件,但它并不声称能替代虚拟机或容器来运行完全不可信的代码。
关键要点
- Grith 把安全决策从 AI 模型手中剥离,放在操作系统层面独立执行,从机制上避免了“自己审自己”的问题。
- 确定性打分体系(静态检查 + 模式匹配 + 上下文过滤)让安全行为可预期、可复现;0.02 毫秒的中位打分延迟对日常开发几乎无感。
- 对 AI 编程代理开发者而言,Grith 的价值在于:即使遭遇提示注入或恶意文件,代理也无法自行批准危险的系统调用,所有高风险操作必须经过人工审核。
- 多个版本的迭代重点都在封堵逃逸路径(权限派生命令、socket 注入等),并将最严格的防护设为默认开启。
摘要:Grith 是一款面向 AI 编程代理的安全代理,在操作系统层面拦截文件读取、命令执行与网络请求,通过策略引擎实时评分并阻断危险操作。目前支持 Linux,安全核心永久免费并开源;macOS 与 Windows 支持计划在 v2.0 落地。
免费与开源
Grith 的安全核心对所有人免费开放,具体包括:代理本体、全部 18 个过滤器、监督器、隔离摘要、本地 SQLite 审计日志、命令行工具,以及运行在 localhost:3141 的仪表盘。整个免费层不需要注册账号、不联网、完全离线运行,模型密钥由用户自行提供。
免费层的限制在于并发监督会话数——最多同时 2 个,过滤器本身没有数量或次数限制。
代码仓库采用 MPL-2.0 许可证公开。付费层通过签名许可证解锁团队功能,包括:共享策略与配置、提供商密钥同步、团队分析,以及可验证的每日归档。
发布版本附带完整的供应链安全配套:cosign 无密钥签名、SLSA 供应链溯源、CycloneDX SBOM 和 SHA-256 校验和。二进制采用静态 musl 构建,也支持用户自行编译。
支持范围
目前 Grith 仅支持 Linux,具体覆盖两类架构:
- x86_64:要求内核 4.8 及以上
- aarch64:要求内核 5.3 及以上(自 v0.2.4 起支持)
这意味着 Graviton、Ampere 实例、arm64 VPS,以及运行 64 位操作系统的树莓派 4/5 都在支持范围内。macOS(通过 Endpoint Security 框架)和 Windows(通过 ETW)的支持计划在 v2.0 中实现。安装脚本在遇到不支持的平台时会明确报错退出,而不是勉强装上后留下隐患。
为什么需要这一层安全防护
Grith 团队表示,这个产品并非凭空构想,而是源于实际观察。
他们在相同任务下用 strace 分别跟踪 Claude Code 和 Codex 的系统调用,发现 Claude Code 在一次基准测试中尝试读取了 752 次 /proc/*/environ 文件(方法学和脚本均已公开)。在后续自用测试中,Grith 还冻结了一个 Codex 会话——该会话在一次例行任务中开始扫描磁盘寻找凭据。
这些行为并非出于恶意,而是因为当前的 AI 代理会自然地把整台机器当作可用资源来使用。而在此之前,没有任何一层机制在它们和系统之间设立边界。
邀请社区参与改进
Grith 团队明确欢迎开发者对它进行压力测试:队列阈值、策略配置、尚未被发现的逃逸方式——都可以直接提交 issue,或在其官方渠道下反馈。如果你需要 macOS 支持,团队有一个置顶 issue 专门登记需求,用真实反馈来排定优先级。
关于 Grith
Grith 是一个面向 AI 编程代理的安全代理。它在操作系统层面拦截每一次文件读取、shell 命令和网络请求,通过多过滤器策略引擎为每个操作进行风险评分,并在危险操作真正执行前将其阻断。
每一次决策都会被记录为结构化审计日志——团队可以完整回溯自己的代理在做什么,这套日志同样为合规报告而设计。
关键要点
- Grith 面向 AI 编程代理,在操作系统层提供安全拦截,不是应用层的沙箱或代理配置工具
- 安全核心永久免费,MPL-2.0 开源,支持 Linux x86_64 与 arm64,macOS 与 Windows 支持计划在 v2.0 落地
- 采用「多过滤器策略引擎」对每次操作做实时风险评分,支持自定义策略阈值
- 所有决策生成结构化审计日志,兼顾可观测性与合规需求
- 团队用真实测试案例(如 Claude Code 读取 752 次
/proc/*/environ)说明代理越权行为的普遍性 - 项目开源接受社区反馈,团队鼓励开发者尝试绕过并提交 issue
在当前 AI 编程工具快速普及的阶段,Grith 提供了一个值得关注的方向:给能力越来越强的代理加上系统级的「交通规则」,而不是等事故发生后审计日志。