第七节:Workspace Trust Permissions——安全的 AI 协作
一、什么是 Workspace Trust?
随着 AI 能力的增强,它能够读取、修改甚至执行你电脑中的文件。如果不对 AI 的权限加以管控,一旦 AI 产生错误指令或被恶意技能利用,可能导致严重的安全风险。
Workspace Trust 机制的设计初衷是:让你明确告知 Copilot,哪些目录是“安全”的,AI 可以访问和操作;哪些目录不允许访问。这构成了所有定制化功能的安全基础。
💡 核心理解:信任(Trust)是对工作区内容的确认,权限(Permission)是对 AI 行为的控制。两者共同构成安全基线——无论你配置了多复杂的 Skills、Agents 或 MCP 服务器,AI 的行为上限都由信任范围和权限策略决定。
Workspace Trust 主要应用于以下场景:
- 启动 Copilot CLI 会话时的信任确认
- 通过工具批准机制控制 AI 可使用的命令行工具
- 通过配置文件精细化授予文件路径和 URL 权限
二、信任目录机制
2.1 工作原理
信任目录控制 Copilot CLI 可以在哪里读取、修改和执行文件。默认情况下,Copilot CLI 可以访问当前工作目录、其子目录以及系统临时目录。
当你启动 Copilot CLI 时,系统会提示你确认是否信任当前目录及其子目录下的文件:
Do you trust the files in this folder and its subdirectories? 1. Yes, proceed (this session only) 2. Yes, and remember this folder for future sessions 3. No, exit| 选项 | 说明 | 适用场景 |
|---|---|---|
| 本次会话信任 | AI 仅在此次会话中可以访问该目录,下次启动需再次确认 | 临时探索陌生项目 |
| 永久信任 | 该目录被加入信任列表,后续不再提示 | 日常开发的安全项目 |
| 不信任 | 退出 CLI 会话 | 不确定或可疑的目录 |
2.2 编辑信任目录列表
信任目录存储在~/.copilot/config.json文件中。
# 打开配置文件(macOS/Linux)cat~/.copilot/config.json配置内容示例:
{"trustedFolders":["/Users/username/projects/trusted-work","/Users/username/projects/company-repo"],"settings":{"autoApprove":false}}通过修改trustedFolders数组可以手动添加或移除信任目录。
🔧 高级配置:可以通过设置
COPILOT_HOME环境变量来更改配置文件的存储位置。这对于需要在不同工作区使用不同权限策略的场景非常有用。
三、工具访问权限控制
除了目录级别的信任外,Copilot CLI 还会对具体的命令行工具进行权限控制。
3.1 首次使用的工具批准
当 Copilot 需要使用某个可能修改或执行文件的工具时——例如touch、chmod、node、sed、rm——它会主动请求你的批准,并提供三个选项:
| 选项 | 行为 | 安全提示 |
|---|---|---|
| Yes | 仅允许此次执行,下次再次请求批准 | 安全选项,每调用一次需确认一次 |
| Yes, and approve for session | 本次会话内所有类似命令自动批准 | 适合chmod等安全工具,但谨慎用于rm |
| No | 拒绝执行 | 任何不信任的操作都应选择此项 |
⚠️ 安全警告:为
rm启用会话级自动批准意味着 Copilot 可以删除当前目录及其子目录下的任何文件——请务必谨慎。
3.2 配置允许的工具列表
除了运行时交互式批准,你还可以通过命令行参数预设允许的工具权限,或在 Agent 配置的 Frontmatter 中通过tools字段限定可用的工具集合,进一步提升安全性。
四、安全实践建议
综合前三节的配置能力和本节的信任机制,以下安全实践建议涵盖了你可能涉及的所有定制功能:
4.1 最小权限原则
| 配置项 | 建议 |
|---|---|
| Agent 工具权限 | 代码审查用tools: ["read"],测试生成用["read", "write"],仅集成部署操作时才开放shell |
| 信任目录 | 仅将信赖的项目目录加入永久信任 |
| 工具批准 | 仅批准 AI 必须使用且无害的工具 |
4.2 指令中的安全边界
在你的copilot-instructions.md和各技能的SKILL.md中,务必明确写入安全约束:
## 安全边界 - 绝对不要访问或修改 `.env`、`secrets/` 目录 - 绝对不要提交包含 API 密钥的代码 - 在执行可能删除或覆盖文件的命令前,必须先与用户确认 - 不要在生产环境的配置文件中写入测试数据4.3 定期审查
- 定期检查
~/.copilot/config.json中的信任目录列表,移除不再需要的项目 - 通过
/mcp show检查当前活跃的 MCP 服务器配置 - 在协作仓库中,评审新加入的 Agent Skills 和 MCP 配置,确保来源可信
五、参考资料
- GitHub Docs: Configuring GitHub Copilot CLI
- GitHub Docs: Using GitHub Copilot CLI
- GitHub Docs: Trusted directories security considerations
- VS Code Docs: Workspace Trust in VS Code
- GitHub Blog: 5 tips for writing better custom instructions for Copilot
总结——完整配置体系一览
至此,你已经掌握了 GitHub Copilot 的完整定制化体系。下表是所有功能的终极总结:
| 功能 | 定位 | 文件位置 | 触发方式 | 关键特点 |
|---|---|---|---|---|
| Instructions | 宪法——全局行为准则 | .github/copilot-instructions.md | 常时自动 | 始终加载,定义通用规则 |
| Agent | 角色——专业身份 | .github/agents/*.agent.md | 手动选择 | 可分配工具权限,持久上下文 |
| Prompt | 任务——标准化流程 | .github/prompts/*.prompt.md | /命令 | 支持变量交互,轻量可复用 |
| Agent Skills | 能力——专家工具箱 | .github/skills/*/SKILL.md | 自然语言自动 | 可携带脚本资源,开放标准 |
| MCP Servers | 连接——外部工具 | .mcp.json或 CLI 配置 | AI 自动调用 | 连接数据库/API,跨平台标准 |
| Slash Commands | 入口——快捷指令 | 内置 / Prompt 模拟 | /命令 | 最快捷的操作入口 |
| Workspace Trust | 安全——权限基线 | CLI 信任确认 + config.json | 启动时 / 运行时 | 目录信任 + 工具批准 |
你的下一步行动建议:
- 从需求出发:想清楚你想让 AI 帮助完成什么类型的任务——是定义规范(Instructions),还是固化流程(Prompt),还是创建专业角色(Agent)?
- 由简入繁:从 Instructions 和 Prompt 开始建立习惯,再根据实际需要逐步引入 Agent、Agent Skills 和 MCP。
- 安全先行:在引入任何高级定制功能之前,先设置好 Workspace Trust 和最小权限策略。
- 共享与迭代:将这些配置文件提交到仓库,与团队共享、迭代优化,让 AI 真正融入团队的日常开发工作流。
祝你开始用 AI 重构你的开发流程!
