AI 编程隐私保护清单:API Key、代码上传、Agent 权限与 Git 历史排查

AI 编程工具不再只接收手工粘贴的一段代码。IDE Agent、CLI、MCP 和团队协作集成可能读取工作区、搜索代码、执行命令、访问网络,并把仓库外的上下文带入任务。

本文解决四个具体问题:

  1. .env.gitignore 能保护到什么程度;
  2. 如何判断代码是否会离开本机、是否用于训练;
  3. 如何限制 Agent、MCP 和插件权限;
  4. 密钥已经进入 Git 历史后,应该先做什么。

一、先区分四种容易混在一起的数据

数据类型 常见位置 主要风险 建议处理
凭证 .env、配置文件、CI 变量 盗用、账单、越权访问 独立密钥、最小权限、有效期、额度
业务代码 私有仓库、设计文档、注释 商业机密和未发布功能外泄 只开放必要目录,确认供应商策略
用户数据 日志、截图、数据库样本 个人信息和客户数据泄露 脱敏、合成样本、禁止生产数据直传
工具上下文 终端、浏览器、Slack、MCP 权限从代码扩展到外部系统 测试账号、只读权限、任务后撤销

2026 年 8 月 21 日,GitHub 发布 Copilot in Slack 公开预览。官方说明该集成可以使用当前对话和被允许访问的 GitHub 上下文。这是一个很直观的例子:AI 编程的上下文边界已经不只在 IDE 内。

二、环境变量解决不了"Agent 读取本地文件"

推荐的 .gitignore 基础规则:

gitignore 复制代码
.env
.env.*
!.env.example
*.pem
*.key

.env.example 只能放变量名和占位值:

dotenv 复制代码
DATABASE_URL=postgresql://user:password@example.invalid:5432/app
AI_API_KEY=replace-me

不要把真实值复制进去再提交。

需要明确三个边界:

  1. 环境变量避免源码硬编码,但本地文件仍可能被有权限的 Agent 读取;
  2. .gitignore 只影响未跟踪文件,不能自动删除历史提交;
  3. 前端构建公开变量仍会进入浏览器包,例如 Next.js 的 NEXT_PUBLIC_、Vite 的 VITE_,不能存放密钥。

检查 .env 是否被忽略:

bash 复制代码
git check-ignore -v .env .env.local

列出可能有风险的已跟踪文件名:

bash 复制代码
git ls-files | rg '(^|/)(\.env(\..*)?|.*\.(pem|key)|id_rsa)$'

该命令只输出文件名,不直接打印文件内容。若系统没有 rg,可使用平台对应的文件名过滤命令。

三、隐私模式不等于"完全本地运行"

评估 AI 编程工具时,应分别核对以下问题:

问题 需要查的位置
数据是否离开本机 产品架构、安全页、网络和代理文档
是否用于模型训练 数据使用政策、账号隐私设置
保留多长时间 数据保留政策、企业合同
发送给哪些模型提供商 子处理方清单、模型路由说明
是否支持排除文件 ignore/exclude 配置文档

Cursor 官方安全页是一个可以用于理解这组区别的例子:开启 Privacy Mode 后,用户数据不会用于训练;同一页也说明,应用会向 Cursor 后端域名发起请求,以提供 API、索引、更新和应用市场等功能。

因此,"不用于训练"与"数据不离开设备"是两个不同判断。其他产品也要按当前账号、套餐和功能单独核对,不能套用 Cursor 的结论。

四、Agent 权限必须按动作拆开检查

以 Cursor 当前 Agent 安全文档为例:

  • 读取文件和搜索代码无需批准;
  • 默认情况下,终端命令需要批准;
  • Agent 可以修改工作区文件,配置文件除外;
  • 默认设置下,Agent 不能发起任意网络请求。

这些规则是 Cursor 当前文档中的产品行为,不代表所有 Agent 都一样。它说明的是:一个"确认"开关通常只覆盖某类动作,不能替代完整的权限检查。

实际使用时至少分开配置:

  • 文件读取范围;
  • 文件写入范围;
  • 终端命令;
  • 网络访问;
  • 浏览器会话;
  • MCP Server;
  • 数据库和云平台凭证。

对于不可信仓库,还要防止仓库内文档、Issue 或代码注释中的提示注入诱导 Agent 执行危险操作。

五、提交前的本地检查

先检查暂存区:

bash 复制代码
git status --short
git diff --cached --name-only

再使用专门的密钥扫描工具。例如 GitHub 官方文档提到,可以在 pre-commit hook 中使用 git-secrets 或 Gitleaks。Gitleaks 已安装时可运行:

bash 复制代码
gitleaks git --redact

--redact 可以减少扫描输出再次暴露密钥的风险。CI 和远端仓库还可以启用 Secret Scanning 与 Push Protection。GitHub 官方说明,Push Protection 会在推送时拦截识别出的硬编码凭证,避免其进入仓库历史。

六、密钥已经泄露时的处理顺序

GitHub 的敏感数据清理文档明确建议:如果泄露的是密码、Token 或凭证,第一步先撤销或轮换。

完整顺序建议如下:

  1. 撤销或轮换旧凭证;
  2. 检查 API 调用、登录、云资源和账单;
  3. 从当前代码、配置、日志和文档中删除明文;
  4. 判断是否需要使用 git-filter-repo 重写历史;
  5. 协调分支、Fork 和协作者克隆,防止旧记录重新推回;
  6. 增加密钥扫描、Push Protection、短期凭证和额度限制。

重写 Git 历史会改变提交哈希,也可能影响分支保护、Pull Request 和其他协作者。不要在没有协调的情况下直接操作共享仓库。

七、可直接执行的六项检查

  1. 项目按公开、普通商业、强敏感三级分类;
  2. 核对当前账号的数据训练和保留设置;
  3. 只向 Agent 开放完成任务所需目录;
  4. 使用测试凭证、最小权限、有效期和额度;
  5. 分别限制终端、网络、浏览器、MCP 和插件;
  6. 提交前检查暂存区并运行密钥扫描。

OWASP LLM02:2025 将敏感信息泄露列为大模型应用的重要风险,并建议在处理前检测和脱敏机密内容。对 AI 编程来说,最有效的做法不是完全拒绝上下文,而是只提供完成当前任务所必需的最小上下文。

标签:AI 编程、隐私保护、API Key、Cursor、GitHub、Agent、MCP、Secret Scanning

相关推荐
OceanBase数据库官方博客1 小时前
OceanBase:从核心系统现代化到AI 创新
人工智能·oceanbase
YHHLAI1 小时前
从「跑分」到「干活」:Benchmark 与 GPT 5.6 的两种叙事
大数据·前端·人工智能·react.js·前端框架
Black_Rock_br1 小时前
ARM服务器固件FVP仿真开发流程深度解析实战指南
arm开发·人工智能·嵌入式硬件·硬件工程
plainGeekDev1 小时前
外层六构件:把 Loop 放大成系统
ai编程·claude
小唔w1 小时前
AI绘图工具实测:小红书封面用哪家生成更省心?
人工智能
九硕智慧建筑一体化厂家1 小时前
楼宇智能优选!KNX总线系统打造稳定高效智能控制体系
运维·人工智能·笔记·智慧城市
古城小栈1 小时前
QLoRA 训练参数 专题
人工智能·深度学习·机器学习
u0103055271 小时前
昇腾AI Agent资源超限重置指南
人工智能
雷焰财经1 小时前
四项目落子香港:宇信科技香港市场的“能力验证”与全球化支点
人工智能·科技