SafeAgents开源代理在编码Agent执行前校验工具调用
原文:SafeAgents: an open-source proxy that checks every tool call your coding agent makes before it runs
SafeAgents 是一个小型本地代理,位于编码代理与其模型服务器之间。它会在模型响应到达执行框架之前检查其中的每次工具调用。被标记的调用会被替换为一段简短的文本通知,因此执行框架只会收到纯文本回复,不会执行任何操作。你只需将代理的 base URL 指向该代理,而不是模型服务器。所有检查都在你的机器上本地运行:代理仅将流量转发到你已在使用的模型服务器,不会将你的提示词、代码或工具调用发送到其他任何地方,除非你将可选的评判模型指向远程服务器。每次工具调用最多经过三项检查:两项仅需请求本身的本地检查——该工具是否由执行框架声明,以及该调用是否触及对话中从未出现过的 host。模型自身早先的轮次不算作来源,因此模型自行编造的 URL 会被标记。由 u/evalstate 开发的 atif-scan 会在进程内对待执行的调用运行约 110 个确定性检测器,无需模型或网络调用:沙箱侧信道、代理与网络绕过、命名空间逃逸以及奖励黑客行为。例如使用 curl 访问云元数据端点、使用 curl --noproxy 将 ~/.netrc 发送到某处,或读取 /proc/1/environ。可选地,还可使用评判模型处理较轻微的发现。它可以是任何 OpenAI 兼容的服务器,包括通过 llama.cpp 在你自己的机器上运行的小型模型,因此这一步也可以保持本地化。它以 JSON 形式回答 allow 或 block。它只能看到用户的请求、调用和发现结果,看不到代理的推理过程或工具输出。它可以添加阻止,但不能移除阻止。在强化学习和评估中捕获奖励黑客行为:同一套检测器也覆盖策略为游戏奖励而非解决任务所进行的工具调用:编写自己的奖励文件、修改验证器的测试,或修补 pytest 使所有测试通过。由于 safeagents 只是位于 OpenAI 兼容服务器前面的一个代理,它可以部署在用于 rollout 或评估的推理服务器前面。