2026 年 8 月 28 日,工程师 lowcache 在 Hacker News 发布《Your AI Agent Has Root》,42 分首页关注,27 条讨论。这篇文章通过一个简单但致命的诊断把 AI Agent 默认权限失控的工程现实摆到了桌面上——他跑了一个 shell MCP server 在 Claude 里"without thinking about it",然后用 ps 查看 process tree,发现 MCP server 跑在他的 user account 下,UID 1000 (lowcache),same as his terminal session。结论直白——MCP server 拿到的不只是 shell access,是 root-equivalent user 权限,等同于把所有 SSH keys、~/.aws/credentials、GPG keyring、整个 home directory 都暴露给 MCP server。结合 8 月 19 日 YC S26 OneCLI 的 vault 隔离、8 月 28 日 Talos 的 permission kernel、9 月 1 日 SenteLabs extensible-mcp 的 policy proxy、9 月 9 日 Geiger 的资产可见性扫描、9 月 3 日 Manifold Security GitSpawn 的 RCE 披露——五件事合起来,把"AI Agent 拿到 root"这件事第一次用工程语言系统性地讲清楚,提示企业 IT 在部署 Coding Agent 时必须按"default-deny + capability enumeration + kernel enforcement"重构权限模型。

一、AI Agent 默认权限失控的真实攻击面

lowcache 在文章里直接列出 unsandboxed MCP server 跑在 user 账户下的完整攻击面——这不是 hypothetical,这是 POSIX 设计本身。

可执行操作清单:

读、改、删 any file you own——你的所有 home 目录、所有工作文件、所有配置文件。Read MCP server 不需要任何 sudo password、warning 或 notification。

Exfiltrate your SSH keys、cloud credentials、API tokens、browser cookies——~/.ssh/id_ed25519、~/.ssh/known_hosts、~/.aws/credentials、~/.config/gcloud、~/.kube/config、~/.docker/config.json、Chrome / Firefox cookie database 加密但解密的 master key 在同账户下,这些全部可读。

Push code to your git remotes——你的 GitHub / GitLab / Bitbucket credential 在 ~/.gitconfig 和 keychain,可以直接 git push 到任意 attacker 控制的 remote。

Run arbitrary binaries already on your system——curl、wget、nc、ssh、scp、rsync、git、tar、python、node 全部可用,attacker 不需要自己上传 binary。

Install things via pip、npm、cargo——你的 home 目录有 write 权限,可以装 package 改 shell PATH,后续 binary 替换。

Make network requests to anywhere reachable——内网服务、staging server、cloud metadata endpoint(169.254.169.254)。

Pivot to any service authenticated via your local credentials——Vault token、AWS SSO session、k8s context 全部通过 metadata 拿到。

"That's not hypothetical. That's POSIX working exactly as designed. None of it requires exploiting anything. It's your user account doing normal user account things."

这条诊断的工程含义极其具体——MCP server 拿到 root-equivalent 不是 vulnerability,是 POSIX 设计本身。Unix security model 假设 user 是 trusted principal,user 跑的任何 process 都继承 user 的所有权限。MCP server 是 user 跑的一个 process,继承 user 一切权限,无论它声称自己是 sandbox 还是 not。MCP server "信任" 在 user 级别已经是 broken by design。

二、Prompt Injection 是被低估的真实攻击向量

lowcache 把 prompt injection 单独列出一段,直说"Prompt injection is the one that keeps me up at night. It's the one that we haven't even explored fully, and are still unsure of the true implications and just how deep this can go."

具体攻击场景:filesystem MCP server 是 legitimate 工具,do what it says。User 让 Claude summarize email 附件里的 document。Document 包含 hidden instruction:。Claude 读 file、process content,depending on how it's configured 和 context structure,might just do it。

"It's been demonstrated repeatedly, in public, against shipping products. The model doesn't have a separate 'content I'm reading' versus 'instructions I'm following' mode at the attention level. Exogenous data and system instructions share the same attention pathway."

这条攻击路径在 unsandboxed MCP server 场景下的破坏力是 catastrophic——An MCP server without sandboxing means a successful injection can do anything you can do. The blast radius is your entire account. With lateral movement and privilege escalations it means your entire system, network, devices, home automation, finances.

A sandboxed MCP server means the worst case is whatever you've explicitly permitted inside the container. That's a containable problem.

这两条对比把 sandbox 的价值讲得非常具体——不是 sandbox 让 Agent 更"安全",是 sandbox 让 worst case containable。Unsandboxed 的 worst case 是 entire account compromise,sandboxed 的 worst case 是 explicit permitted capability 之内。

三、lowcache 的解法 mcp-box

lowcache 自己 build 的工具 mcp-box 给出 default-deny 容器化方案,核心是"inverts the typical posture":

Most setups are opt-out risk:everything works until you lock something down, and locking things down is friction, so it doesn't happen. mcp-box is default-deny by design. You start from nothing and add what you actually need.

具体实现要点:

Containers with read-only root filesystems——MCP server 跑在只读 root 容器里,无法改 /usr、/bin 等系统目录,无法装新 package。

All capabilities dropped——CAP_NET_RAW、CAP_SYS_ADMIN、CAP_DAC_OVERRIDE 等 Linux capabilities 全部 drop,MCP server 不能 bind privileged port、不能 mount、不能改文件 owner。

No network unless you explicitly enable it——默认 network 关闭,需要 HTTP access 时显式加 `--network bridge`。这条对应 Telos 的 Network Gate 设计——LSP/socket_connect 拦截 outbound connection,这里容器 network 直接 disabled。

Host UID mapping so file ownership stays sane——container 内的 user 是 UID 1000(lowcache),container 内创建的文件 host 上也是 UID 1000,no rituals afterward。这条对应 machine0 的 Profile 注入——Agent 创建的文件 host 上归属正确 user,不会因为 container 隔离产生文件归属混乱。

This inverts the typical posture. Most setups are opt-out risk:everything works until you lock something down, and locking things down is friction, so it doesn't happen. mcp-box is default-deny by design. You start from nothing and add what you actually need.

lowcache 把 mcp-box 的设计哲学总结成一句话:"The security model shouldn't be 'I trust the server binary.' It should be 'here is the explicit, enumerated set of things this process is allowed to do, and the kernel enforces it.'"

这条原则直接对应 OneCLI 的 vault 隔离、Talos 的 permission kernel、Telos 的 LSM hooks、CaMeL 的 capability-based security。所有这些方案的共同点是:trust 不在 binary 上,在 capability enumeration 上;enforcement 不在 application 层,在 kernel 层。

四、把 AI Agent Has Root 放进 Agent 权限模型的产品矩阵

把 lowcache 的 mcp-box 跟同期其他 Agent 权限方案放在一起,可以看到 Agent 权限模型正在分裂成清晰的层次。

Application 层是 OneCLI 的 vault + gateway 设计。Agent 不直接持有 secret,通过 vault gateway 在调用时 deterministic approval。

Permission kernel 层是 Talos 的 hardline → dangerous → effect 三阶段判定。254 adversarial cases 每次 install 跑,no default allowlist。

Kernel LSM 层是 Telos 的 eBPF/LSM hooks。eBPF bprm_check_security 拦截 execve、socket_connect 拦截出站、IFC 跟踪敏感 file read 触发 Network Slam。

Container 层是 lowcache mcp-box + Talos sandbox。read-only rootfs + capabilities dropped + no network by default + host UID mapping。

Policy proxy 层是 extensible-mcp。Policy 在 model 之外的 deterministic proxy 层执行,human approval 密码学可验证,policy 用 Lean proof assistant 写成数学证明。

Capability attestation 层是 AC2 协议。Private key 永不离 device,signature 通过 FIDO2 硬件认证器,所有 agent approval 都有密码学证据。

六个层次里,mcp-box 命中 container 层 + 部分 application 层。lowcache 的 mcp-box 实现可以看成是 Talos permission kernel 的 Python-level 实现 + Telos container-level 的 LSM hooks,六层中它覆盖两层。

五、企业 AI Agent 权限模型的具体 checklist

把 lowcache mcp-box + Talos + Telos + OneCLI + extensible-mcp + AC2 六件事合起来,企业 AI Agent 权限模型应该满足如下 checklist。

第一条,任何 AI Agent / MCP server 必须跑在 sandboxed container。Read-only rootfs、capabilities dropped、network disabled by default、host UID mapping。这条是 lowcache mcp-box 的基线,也是 Talos sandboxed default 的基线。

第二条,任何 sandbox 必须 explicit allow network access。MCP server 默认 no network,需要 HTTP 时显式 opt-in,网络 egress 走 MITM proxy。

第三条,任何 dangerous operation 必须 explicit approve。Talos 的 hardline 列表是 baseline——read secret、exfiltrate data、push code、delete files 都需要 HITL approval,不能 auto-execute。

第四条,所有 secret 不在 Agent/MCP 进程内存里。OneCLI 的 vault 设计是 baseline——secret 在 vault,Agent 通过 deterministic gateway 调用,Agent 进程内存里看不到真实 secret value。

第五条,policy 必须在 model 之外执行。extensible-mcp 的 design 是 baseline——policy 不在 prompt 里,在 deterministic proxy 层,model 不能改写 policy。

第六条,所有 capability 必须 password 验证后使用。AC2 协议的 FIDO2 + DIDComm v2.0 + capability-based security 是 baseline——任何 dangerous action 都需要 hardware-bound signature,密码学可验证。

第七条,任何 sandbox / kernel enforcement 必须有 adversarial test suite。Talos 254 cases 是 baseline——每次 install / update 跑全套 adversarial 测试,任何 failure abort install。

第八条,任何 AI Agent 平台必须有 Geiger-style asset inventory 扫描。Developer 机器必须定期扫,知道本机有什么 AI 资产、风险等级是什么、credential 在哪。

第九条,所有 subprocess 调用必须进独立审计流。GitSpawn 揭示的教训——Agent 自己的 subprocess 在 sandbox 外执行,fsmonitor sink 触发任意代码,audit 流必须能查到这次 subprocess 调用。

第十条,任何 prompt injection mitigation 必须 dependency-free。lowcache 的 mcp-box 在工具层强制 container 隔离,即使 model 被 injection 攻破,blast radius 限定在 explicit permitted capability 之内。

六、从 default-allow 到 default-deny 的范式转变

把这件事放到更大的图景里看,AI Agent 权限模型正在从 default-allow 过渡到 default-deny。早期 Agent 部署假设"我信任 MCP server"——server 拿到一切权限,直到出问题再补救;接下来一年内,任何严肃的企业 AI Agent 部署都会按 default-deny 设计——MCP server 拿到 nothing,直到 explicit opt-in 才增加 capability。

范式转变的实现路径有两条:application 层通过 Talos permission kernel 强制 dangerous command approval;container 层通过 lowcache mcp-box 强制 capability enumeration + kernel enforcement。两条路径互补——application 层 catch application-level dangerous behavior,container 层 catch OS-level dangerous behavior。两者叠加形成纵深防御。

回到一开始的问题——Your AI Agent Has Root 把"Agent 默认拿到 root"这件事第一次用工程语言系统讲清楚,lowcache 的 mcp-box 给出 default-deny 容器化样板解法,加上 OneCLI / Talos / Telos / extensible-mcp / AC2 / Geiger / Manifold 的多层防护。剩下的是企业 IT 在落地时把十条 checklist 都做对,把 Agent 权限模型从"我信任 vendor"升级为"explicit enumerated capability + kernel enforcement"。这是 2026 年下半年 Agent 安全工程走向成熟的标志,也是企业 AI 真正能承担关键业务的入场券。