仓库 →

权限与审批

AtomCode 会替你执行工具——改文件、跑 shell、联网抓取、调用 MCP 服务。它的安全模型可以一句话概括:每一次工具调用都会被归到四个「审批等级」之一,等级决定它是直接执行、还是先弹窗征求你确认、以及你选「总是允许」时能不能被记住。本页先讲这套整体模型,再逐一展开:哪些操作落到哪一级、弹窗里你的选择、以及如何在不丢掉安全闸的前提下少问几次。

核心:四个审批等级

这是理解整页的主线。任何工具在执行前都会落到下面四级之一:

审批等级含义「总是允许」能记住吗
自动放行直接执行,不打扰你。项目内的安全操作都在这一级。—(本就不问)
询问弹窗确认;选「本会话总是允许」后,该工具本会话内不再问。✅ 能
始终询问每次都问,即使之前按过「总是允许」也不放过——留给破坏性 / 高危操作。❌ 不能
按资源询问弹窗确认;「总是允许」只记住这一个具体资源(比如某个文件),换一个仍会问。仅同一资源

记住这四级,后面所有内容都是在说"某个操作落到哪一级、为什么"。

哪些操作触发哪一级

大原则:在当前项目目录里干活畅通无阻(自动放行);一旦伸到项目外、碰到机密、或执行破坏性操作,就升级到需要确认的等级。

操作触发条件审批等级
Shell(bash)破坏性命令rm -rfddgit push --forcechmodmkfs始终询问
Shell 读/写项目外路径命令访问当前项目目录之外读=询问 / 写=始终询问
编辑 / 新建 / 替换文件目标是敏感文件或在项目外始终询问(敏感/区外)
读文件 / 列符号 / 诊断读取项目外的敏感文件(如 ~/.ssh/id_rsa)敏感=按资源询问 / 普通区外=询问
web_fetchURL 指向私网 / 本地回环地址(公网自动放行)询问
MCP 工具调用每一次——除非该工具或其 server 已被信任询问

始终自动放行的:项目的读取、搜索、glob、编辑,以及 cdlist_dirgrepweb_search、待办清单。

弹窗里你的选择

当一个工具落到"询问 / 始终询问 / 按资源询问"任一级时,你会看到这几个选项:

终端里:y / Enter 批准,a 本会话总是允许,n / Esc 拒绝,Ctrl+C 取消整轮。WebUI 里这些选择是审批卡片上的按钮。

MCP 工具的两档授权

MCP 工具调用的是外部代码,所以默认落在「询问」级。如果你信任某个工具或 server,可以把它升到「自动放行」——分三级,从最弱到最持久,而且关键在于只有前两级能从按钮触达:

  1. 本会话总是允许([A] 键 / 按钮)——内存级,仅本会话,仅该工具
  2. 永久允许此工具(按钮,仅 MCP)——持久,仅该工具。把工具裸名追加进该 server 在 mcp.json 里的 autoApprove 列表:
    {
      "mcpServers": {
        "my-docs": { "command": "my-docs-server", "autoApprove": ["query", "search"] }
      }
    }
  3. 信任整个 server只能手改配置,任何运行时按钮都不会设置它:
    {
      "mcpServers": {
        "my-docs": { "command": "my-docs-server", "trust": true }
      }
    }
为什么一次点击不能信任整个 server

MCP 工具以它自己的权限运行,绕过 AtomCode 自身的路径 / 命令防护——一个 server 能写文件、能联网、能花钱。审批弹窗就是你的闸门。trust: true 会自动放行该 server 上的每一个工具,包括你从没见过的写入 / 破坏性工具,所以它被刻意设计成只有你能手改配置文件来开启——一次误点(或一次 prompt 注入)永远没法把单次批准升级成对整个 server 的永久信任。trust: true 只留给你完全掌控的 server(最好是本地、只读)。

敏感路径

"敏感"决定一个项目外路径落到「始终询问」(写)还是「按资源询问」(读)。判定为敏感的有:

普通应用配置(~/.config/<应用>/…)当作机密。两个细节呼应上面的等级:敏感文件是「按资源询问」——选「总是允许」只记住这一个文件(分段重读不再问),换文件仍问;项目外和破坏性命令是「始终询问」——每次都问,无法用「总是允许」消掉。

联网抓取

web_fetch公网站点自动放行;只在 URL 是本地回环 / 私网 / 链路本地字面量(127.0.0.1192.168.xlocalhost*.local)时落到「询问」级。无论是否放行,抓取在执行时始终强制 SSRF 防护:重新解析主机,拒绝回环、私网、云元数据地址以及任何非 http(s) 协议——所以放宽审批从不削弱真正的安全校验。

两种特殊模式

计划模式:agent 被限制为只读工具——不能编辑、写入或跑 shell——因此根本不会出现修改类审批弹窗。这是工具层面的限制,不是一次性权限放行。

--dangerously-skip-permissions(危险)

用这个参数启动会把上面四级全部短路成自动放行——包括 rm -rfgit push --force、写项目外——完全不弹窗。只在你不介意丢失的一次性 / 沙箱环境里用。

配置参考

MCP 信任写在 mcp.json 里——项目级 .mcp.json 或用户级 ~/.atomcode/mcp.json——按 server 配置:

字段效果
trust: true把该 server 的所有工具升到「自动放行」。仅手改。
autoApprove: ["toolA", …]指定工具升到「自动放行」。「永久允许此工具」按钮追加到这里。

下一步