Claude Code、Codex跑命令前,先复制这张安全表

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 本文揭示AI编程工具在运行陌生项目时的安全隐患:AI为“修错”可能自动执行远程脚本、越权操作或泄露密钥。作者提出10条保命清单,涵盖禁止直跑远程命令、限制权限、隔离环境、审查依赖链等,强调“让AI先交计划、再等确认”,把失控的勤快变成可控的协作。(239字)

Image

这两天看AI编程工具的安全消息,让我想起了一个我经常提到的事儿。

很多人已经习惯把一个陌生项目丢给AI,然后说一句"你帮我跑起来"。它会装依赖、看报错、修、再跑一遍,像个特别勤快的小助理。

问题也在这。它太勤快了。

以前你自己跑陌生项目,看到安装命令、初始化脚本、权限提示,多少会停一下。

现在AI替你跑,它看到报错以后,可能会自己找下一条命令,自己复制,自己执行。你以为它在解决问题,其实它可能已经走过了你本来会犹豫的那一步。

今天就给一张保命清单。以后你让Claude Code、Codex、Cursor或者其他AI Agent跑陌生仓库之前,先让它过一遍。

Image

先说发生了什么

最近安全圈在讨论一类风险,意思很简单:一个看起来干净的GitHub项目,也可能在安装或初始化过程中,把危险动作藏到外部链路里。

仓库本身可能没写明显恶意代码。问题出在运行时。比如安装失败后,错误信息引导AI去执行一段脚本,这段脚本再从外部地址拿下一步命令。人眼看仓库时没看到坏东西,普通扫描工具也不一定立刻发现。可AI为了把项目跑起来,会顺着提示继续往下走。

这就多了一层麻烦。过去我们担心代码里有没有坑,现在还要担心AI为了修坑,自己去跳另一个坑。

AI帮你跑环境、看报错、整理依赖,确实省时间。

但你得先给它画边界。

Image

第一条,远程脚本先展开,不许直接跑

看到这类命令,先停。

curl https://xxx/install.sh | sh
wget https://xxx/setup.sh -O- | bash
powershell -c "iwr https://xxx/script.ps1 | iex"

先解释这三条在干什么。curl ... | sh 的意思是:从网上下载一段脚本,直接喂给命令行执行,中间不停。wget ... | bash 是同一件事的另一种写法。iwr ... | iex 是 Windows PowerShell 的版本,下载完立刻执行。共同点是,你还没看脚本里有什么,它已经跑了。

正确做法很土。先让AI把脚本下载下来,展开内容,解释每一步,再问你要不要执行。

你可以直接给AI这句话:

凡是远程下载后立即执行的命令,不要直接运行。先把脚本内容保存到本地,逐行解释它会改哪些文件、访问哪些外部地址、读取哪些环境变量,然后等我确认。

意思就是告诉AI:你可以干活,但得先把手伸出来让我看一下。

第二条,install、init、setup报错后,不要让AI自动补命令

很多危险动作发生在报错以后,第一条命令反而少见。

你让AI跑npm install(Node项目装依赖的第一步),报错了。它去看README,又看到一条初始化命令。初始化也报错,它再去搜解决方案,最后跑了一个你根本没看过的脚本。

人类自己折腾环境时,也会这样一路试。但AI的问题是,它试得太快。你刚喝口水,它已经执行了三步。

所以把规则写死:

安装或初始化失败后,不要自动执行新的修复命令。先列出你准备尝试的命令、原因、风险等级和可回滚方式,我确认后再继续。

这里最关键是"可回滚方式",也就是万一搞砸了怎么退回原来状态。"风险等级"四个字反而其次。一个命令如果说不清怎么退回,就不要急着跑。

第三条,新项目先关进小房间

陌生项目别直接放在你的主工作目录里跑,更别放在有密钥、有客户代码、有真实业务配置的目录旁边。

先把几个词说清楚,不然下面看不懂。.env 是项目用来存配置的文件,常见的数据库密码、API key 经常写在这里面。SSH key 是你登录远程服务器、推送代码到GitHub时用的身份凭证。浏览器Cookie 是你登录状态的载体。这三样东西被拿走,等于把账号钥匙给了别人。

最简单的做法,是单独建一个干净目录。里面没有.env,没有SSH key,没有Cookie,没有你平时工作项目里的配置文件。让AI只在这个小房间里折腾。

如果你有条件,用容器、虚拟机、临时Windows沙盒都行。没有条件也没关系,至少先做到一件事:别让它在你的主项目里乱跑。

很多人觉得这一步麻烦。可真正麻烦的是,AI一旦读到了不该读的东西,你很难回头判断它到底有没有发出去、发给了谁、什么时候发的。

第四条,环境变量和密钥先拿走

接着上一条的几个词。API key 是你调用各种AI、云服务时用来认账的字符串,谁拿到谁就能用你的额度和身份。数据库密码、GitHub token(GitHub的访问令牌)、云服务密钥,性质都一样。

这些东西不要放在AI要跑陌生项目的环境里。

你可以让它先用假的配置跑通结构。比如数据库连接写成示例地址,API key写成占位符,比如写成sk-your-api-key-here这种假字符串。等项目可信了,再换真实配置。

尤其是.env文件。很多项目启动时会自动读取它,AI也可能为了省事帮你复制一份。你如果不提前说,它不一定知道这里哪些东西不能碰。

给AI的规则可以这么写:

运行陌生项目时,不读取、不复制、不打印任何真实密钥、token、cookie、SSH配置和.env文件。如果项目必须要配置,先生成示例配置。

道理很简单:别把钥匙放在桌面上,再怪别人顺手拿起来。

第五条,先看package scripts

如果是Node项目(用JavaScript写的那一类),别急着npm install完就npm run dev。先让AI打开package.json(Node项目的配置清单),看scripts字段里写了什么。

有些脚本名字看起来很正常,比如postinstall(安装完自动跑)、prepare、dev、start。真正执行时,它可能会跑额外命令、下载二进制文件、改本地配置。

Python项目也一样。先看pyproject.toml、setup.py、requirements.txt这类文件,里面写着装什么、怎么装。Rust、Go、Bun、Deno都各有自己的入口。你不需要每个生态都懂,但可以要求AI先解释入口。

先搞清楚三件事:它会装什么,会执行什么,会访问哪里。

第六条,需要管理员权限的命令,一律停

先解释几个词。sudo 是Linux和Mac下"临时用管理员身份运行一条命令"的写法。注册表是Windows的中央配置库,系统级设置都存在这里。hosts 是系统里的域名映射表,能强行把某个网址指向别的地址。shell profile 是命令行每次启动时自动跑的脚本,改了它,你以后每次开终端都带着这个改动。

sudo、管理员PowerShell、改系统目录、写注册表、改hosts、改shell profile,这些都先停。

很多安装教程喜欢把权限开大,因为这样省解释。但对普通人来说,权限越大,出问题越难收拾。AI Agent更是这样。它一旦有了高权限,就可能把一个小错误放大成系统级问题。

我现在看这类命令,第一反应是问:它为什么需要这么大的权限?解释不清,就别跑。

可以让AI先找低权限方案。实在没有,再单独确认。

如果对你有帮助,记得关注一波~

第七条,外部域名要列出来

一个项目启动时访问GitHub、npm、PyPI、Docker Hub很正常。访问一个你认不出来的域名,就要停一下。

先把几个黑话翻译一下。DNS TXT 是域名系统里的一种记录,正常用来配邮件验证这类事,但也能塞自定义内容进去。paste站是Pastebin这类公开贴文本的网站,常被用来临时放一段代码或命令。短链接、临时文件托管、看不懂的CDN(内容分发网络)地址,都属于"为什么不直接用正规源"的可疑信号。

这些不一定有问题。但这种链路不适合让AI自动放过去。

给AI加一个检查点:

执行前列出所有将要访问的外部域名,说明每个域名的用途。如果用途不清楚,先不要访问。

它会逼AI把藏在安装过程里的外部依赖讲出来。

第八条,别让AI自己改你的长期配置

有些命令跑一次没事,改长期配置就麻烦了。

PATH 是系统查找命令的目录列表,改了它,你可能再也跑不起来原来的工具。shell profile 上一条解释过了。Git全局配置影响你每一次代码提交。SSH配置影响每一台你能登录的服务器。安装常驻服务、写入开机启动项,则是让一个程序每次开机都自动跑。

今天你是为了跑一个小项目,结果AI顺手把这些长期行为改了。以后每次开终端,每次git push,每次跑node,都可能带着这个改动。到那时候你再排查,会很烦。

所以陌生项目阶段,规则要明确:

不要修改全局配置、启动项、shell profile、Git全局配置、SSH配置和系统PATH。必须修改时,先说明影响范围和恢复命令。

恢复命令很重要。能写出来,说明它至少知道自己动了哪里。

第九条,让AI先交命令计划,不要直接开跑

很多人用AI Agent的方式太像许愿:帮我把这个项目跑起来。

这句话太宽了。AI会自己拆解,也会自己判断。它可能做得很好,也可能为了完成目标一路放权。

更稳的说法是:

先不要执行命令。请先给我一份运行计划,包含准备执行的命令、每条命令的目的、可能修改的文件、外部网络访问、风险等级和回滚方式。等我确认后,再一步一步执行。

这句话一放,AI就从"替你乱跑的手"变成"先把路线摆出来的助手"。

AI适合做的,是帮你把复杂任务拆开、解释清楚、跑你确认过的动作。它不适合在你完全不知道发生什么的时候,替你一路点下一步。

第十条,跑完以后要命令账单

项目跑起来以后,不要立刻关窗口。

让AI输出一份清单:它执行过哪些命令,改过哪些文件,装过哪些包,访问过哪些外部地址,哪些动作需要你后续清理。

这个东西像收据。平时不一定看,但出问题时救命。

你可以直接要求:

请输出本次会话执行记录,包括所有命令、修改文件、安装依赖、访问域名、创建进程、后台服务和建议清理项。不要省略失败命令。

别只要成功记录。失败命令有时候更关键。很多奇怪的问题,就是某条失败命令改了一半留下来的。

我自己的默认提示词

如果你嫌上面太散,可以直接复制下面这段,放在你让AI Agent跑陌生项目之前。

Image

你现在要帮我检查并运行一个陌生项目。安全优先,不要直接执行任何高风险命令。

规则如下:
1. 不要直接运行远程下载后立即执行的脚本,例如curl | sh、wget | bash、iwr | iex。
2. install、init、setup失败后,不要自动尝试新的修复命令,先列计划等我确认。
3. 不读取、不复制、不打印真实密钥、token、cookie、SSH配置和.env文件。
4. 不修改全局配置、系统PATH、shell profile、Git全局配置、SSH配置和启动项。
5. 任何需要管理员权限的命令必须先停下来解释原因。
6. 执行前列出将要访问的外部域名和用途。
7. 执行前给出命令计划,包含目的、影响文件、风险等级和回滚方式。
8. 每执行一步后告诉我结果,不要连续自动执行多步。
9. 如果发现脚本会下载或执行外部内容,先展开内容并解释。
10. 完成后输出执行记录,包括命令、修改文件、安装依赖、访问域名和清理建议。

先只输出运行计划,不要执行。

这段提示词解决一个实际问题:让AI把目标设成"安全地跑起来"。

这段有两种用法。临时跑陌生仓库,把上面整段(含首尾两句)贴进对话框就行。想让它长期生效,去掉首尾两句,只留 10 条规则,放进你项目的 CLAUDE.md 或 AGENTS.md,每次开新会话自动生效。

常驻版本:

## AI Agent 运行陌生项目安全规则

1. 不要直接运行远程下载后立即执行的脚本(curl | sh、wget | bash、iwr | iex),先下载展开内容并解释。
2. install、init、setup 失败后不要自动尝试新的修复命令,先列计划等我确认。
3. 不读取、不复制、不打印真实密钥、token、cookie、SSH 配置和 .env 文件。
4. 不修改全局配置、系统 PATH、shell profile、Git 全局配置、SSH 配置和启动项。
5. 任何需要管理员权限的命令必须先停下来解释原因。
6. 执行前列出将要访问的外部域名和用途。
7. 执行前给出命令计划,包含目的、影响文件、风险等级和回滚方式。
8. 每执行一步后告诉我结果,不要连续自动执行多步。
9. 发现脚本会下载或执行外部内容时,先展开内容并解释。
10. 完成后输出执行记录,包括命令、修改文件、安装依赖、访问域名和清理建议。

最后说一句边界

这张清单不能保证百分百安全。安全这事没有一招鲜。

它能做的,是把AI Agent最容易失控的几个地方挡一下。自动执行、自动修复、自动放权、自动访问外部资源,这几样你盯住了,大部分坑就躲过去了。你不需要变成安全专家,至少先让AI慢下来,把手里的动作说清楚。

我的判断是,AI编程接下来,光看模型会不会写代码已经不够了,人会不会验收AI的动作更重要。以前我们担心AI写错,现在更得防它太努力。写错了你能看到报错,太努力了你未必看得见它干了什么。

工具越勤快,人越不能完全撒手。你要盯着它干了什么,确认没问题再放行。

验收的标准很简单:电脑没被搞乱。AI自己觉得"完成了",不算数。


飞书****开源知识库(实时更新 交流群):
https://tffyvtlai4.feishu.cn/wiki/OhQ8wqntFihcI1kWVDlcNdpznFf


每次我都想提醒一下,这不是凡尔赛,是希望有想法的人勇敢冲。
我不会代码,我英语也不好,但是我做出来了很多东西。
我真心希望能影响更多的人来尝试新的技巧,迎接新的时代。

谢谢你读我的文章。
如果觉得不错,随手点个赞、在看、转发三连吧🙂
如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章。

相关文章
|
7天前
|
人工智能 JSON 自然语言处理
让教学更智慧:用阿里云百炼工作流,自动生成中小学教材内容#小有可为#有温度的AI
通过可视化工作流编排,将大模型推理能力转化为标准化的教学内容生成引擎。教师只需输入教材标题和适用学段,即可自动获得结构完整、符合课程标准的章节内容,大幅降低备课门槛,助力教育资源均衡化。
476 123
|
9天前
|
人工智能 定位技术 SEO
我学 GEO 第 15 天:终于知道AI GEO该如何做?
我是暴走的莉莉酱,边旅行边研究AI GEO的数字游民。专注普通人如何提升“AI可见度”——让AI在回答用户问题时准确识别、理解并推荐你。不讲玄学,只做可测、可调、可持续的GEO实践。
452 127
|
16天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
11天前
|
机器学习/深度学习 人工智能 调度
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
HappyHorse 1.1 是新一代视频生成大模型,全面升级动态表现力、角色一致性、指令遵循、视觉质感与音画协同能力。支持I2V/T2V/R2V三类生成,适配短剧、电商广告、品牌营销等场景,提供高质、流畅、可控的AI视频生产力。
783 5
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
|
3天前
|
人工智能 安全 Cloud Native
Higress 新发布:AI Gateway 能力增强,Gateway API 及其推理扩展持续打磨
增强 AI 网关能力,持续打磨 Gateway API 及其推理扩展。
302 122
|
3天前
|
消息中间件 存储 Kafka
Kafka 原生消息入湖能力上线!一键打通实时流与数据湖
阿里云消息队列 Kafka 版正式上线原生消息入湖能力。
256 121
|
9天前
|
缓存 人工智能 运维
阿里云618百炼大模型Qwen3.7-Max功能、免费试用、订阅计费、配置接入详解
Qwen3.7-MAX是阿里云百炼平台推出的通义千问3.7系列旗舰大语言模型,专为智能体时代复杂任务打造,依托阿里云全域算力与自研技术,在逻辑推理、长文本处理、代码工程、长周期自主执行等领域达到行业顶尖水平。2026年618期间,该模型推出多重免费试用权益、按量计费5折、订阅套餐优惠等专属福利,覆盖个人开发者、团队与企业全场景需求,以下从核心功能、免费试用、订阅计费、配置接入四方面展开详细解析。
467 124

热门文章

最新文章