网易首页 > 网易号 > 正文 申请入驻

5个Agent无头模式:拒绝与放行

0
分享至

把AI编程Agent塞进CI流水线,最怕的不是它报错,是它一声不吭地把活干砸了。五个主流Agent CLI的无头模式,权限模型各不相同,其中有的会在没人值守的时候直接拒绝工具调用,然后继续往下跑。


Claude Code的文档写得很直白:一次运行碰到需要审批的工具调用,现场没人批,调用被拒,运行照常继续。Agent最后还能交回一条消息说它修好了那个不稳定的测试,任务显示绿色,diff却是空的。Gemini CLI是故意这么设计的——在非交互模式下,一条本该弹出来问你的规则,"被视为拒绝"。

下面按各家当前文档拆一遍,五个Agent、五套权限模型,有的拒绝你还不告诉你。

Claude Code:模式要显式给,CI里加--bare

不指定权限模式,运行会落到内置的起始模式,文档说这个模式"可能自动"。acceptEdits允许它写文件,但只读集合之外的shell命令仍然需要一条--allowedTools条目。

CI里还要加--bare。不加的话,一个-p会话会跑仓库.claude/settings.json里的钩子、连.mcp.json里的服务器,全程没有信任弹窗。bare模式跳过这些,也不读订阅登录,所以得设ANTHROPIC_API_KEY。

示例命令里,--output-format json把结果写进文件,再用jq检查permission_denials数组长度是否为零,有任何拒绝就让任务失败。Bash(npm test *)这条规则同时匹配裸的npm test。

Codex:默认只读沙箱

codex exec默认"跑在只读沙箱里"。你不加--sandbox workspace-write就让它修bug,它能读你的仓库,改不了。旧的--full-auto标志"已不再支持"。要写文件用--sandbox workspace-write,或者用--approve-for-me把审批请求送进自动审查。danger-full-access留给受控环境。

Codex还要求当前目录是Git仓库,--skip-git-repo-check可以绕过。同一页文档警告:在会执行仓库控制代码的工作流里,别把OPENAI_API_KEY或CODEX_API_KEY设成任务级变量。

Gemini CLI:策略文件管住非交互

--approval-mode接受default、auto_edit、yolo、plan四个值。--yolo和--allowed-tools都已废弃,后者让位给策略引擎。用户策略放在~/.gemini/policies/下,可以只允许某一条命令,且只在没有终端附着时生效——规则里写interactive = false,这条策略就"只在非交互(无头)模式下"适用,你手动开的会话照样会问你。

Gemini CLI还有个前提:文档说它"已于2026年6月18日被Antigravity CLI取代",针对免费层和Google One用户。账号还跑Gemini CLI的,上面这行成立;已经迁走的,继任者的打印模式是agy -p,在Antigravity CLI 1.1.8里拿到了--output-format和--json-schema。打印模式的用法错误以状态码2退出,1.3.4修掉了最后一个仍然退出0的问题。

Copilot CLI:拒绝规则优先级最高

Copilot的编程参考文档没说-p碰到一个你从未允许的工具会怎样。那就把能跑的和不能跑的都列出来。拒绝规则"即使设置了--allow-all"也照样生效,而--allow-all(别名--yolo)等于同时打开工具、路径和URL三扇门。

示例里用--allow-tool放行写入和shell(npm:*),用--deny-tool挡掉shell(npm publish),再加--no-ask-user防止它停下来问澄清问题。另一个坑:如果既管道输入又传-p,管道输入会被忽略。--continue和--resume在命令参考里是通用标志,但没写清怎么和-p组合,流水线依赖它之前先手动试一次恢复。

OpenCode:反着来,默认放行

OpenCode是另外四个的反面。"大多数权限默认允许",只有doom_loop和external_directory默认询问,.env读取被拒。所以opencode run不加任何标志就能改文件、跑shell命令。你的防线是项目opencode.json里的拒绝规则。

加--auto会批准每一个"未被显式拒绝"的请求,每条ask变成yes,那两行deny就是全部的围栏。不加--auto时,无头模式下的ask行为没有文档,只能当未知处理。还有个容易踩的:opencode run上的-p意思是--password,服务器的basic-auth密码,不是提示词。提示词是位置参数。

输出和退出码:别把日志当答案

第二个坑是解析日志,而你要的是答案。Claude Code用--output-format json打一个JSON对象,文本在result里,附带session_id和total_cost_usd(客户端估算)。加--json-schema,解析后的答案落在structured_output。Codex默认很干净:进度走stderr,只有最终消息走stdout;--json把stdout变成JSONL,从thread.started到turn.completed或turn.failed;-o把最终消息写进文件。Gemini CLI在JSON模式返回response、stats和可选的error对象。Copilot CLI不加-s会带上统计和装饰,--output-format json输出JSONL。OpenCode用--format json输出"原始JSON事件",但CLI页面没描述结构,解析前先锁版本。

五个里只有两个为无头运行写了退出码。Claude Code成功为0,失败非零,运行内部的失败(比如缺认证)会作为结果打到stdout,SIGTERM给143,JSON里的is_error和subtype(如error_max_turns)说明原因。Gemini CLI是0成功、1一般或API错误、42输入错误、53超出轮次上限。Codex只点名了一种失败退出:required = true的MCP服务器启动失败。Copilot的参考给的是copilot workflow run的退出码,不是-p的。OpenCode的CLI页面关于run的退出码只字未提。

退出0只说明进程结束了。所以Agent步骤之后自己加两道检查:Codex失败轮次就失败;任何本该改文件的Agent步骤,什么都没改就失败。第二道检查能抓住空diff的绿色构建,不管跑的是哪个Agent。

无头模式是给没人看的运行用的。其余时候,你大概还是想让同样的Agent把提示词摆在屏幕上。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
上海徐浦大桥车祸:被控制的货车司机,和通报里“消失”的浙F白车

上海徐浦大桥车祸:被控制的货车司机,和通报里“消失”的浙F白车

迷世书童
2026-10-18 14:51:44
多部门介入“母子衣衫不整”事件!

多部门介入“母子衣衫不整”事件!

新动察
2026-10-16 11:00:05
巨大争议!皇马巨星肘击对手逃红牌:裁判无视 VAR看了3分钟无表示

巨大争议!皇马巨星肘击对手逃红牌:裁判无视 VAR看了3分钟无表示

风过乡
2026-10-19 06:16:36
66岁的费翔采访中,被问到“你看到别人有儿子、有孙子的时候,羡慕吗?遗憾吗?”,他回答得很平静

66岁的费翔采访中,被问到“你看到别人有儿子、有孙子的时候,羡慕吗?遗憾吗?”,他回答得很平静

孙琬童
2026-10-17 06:25:12
手机市场搞笑一幕,国产手机涨价没人买,如今又降价千元促销

手机市场搞笑一幕,国产手机涨价没人买,如今又降价千元促销

柏铭锐谈
2026-10-19 06:52:51
杜兰特炮轰太阳老板后续!狄龙补刀KD:感谢马特清理更衣室那股臭味

杜兰特炮轰太阳老板后续!狄龙补刀KD:感谢马特清理更衣室那股臭味

罗说NBA
2026-10-18 11:16:23
奢靡荒唐的白马会所:性交易泛滥,让无数富婆挥金如土

奢靡荒唐的白马会所:性交易泛滥,让无数富婆挥金如土

天启大世界
2026-10-13 17:17:54
13岁出道拍遍大片,36岁好莱坞女星突然放手:这条路我走不动了

13岁出道拍遍大片,36岁好莱坞女星突然放手:这条路我走不动了

飘逸语人
2026-10-19 09:41:07
92年我在矿工队干爆破,动工前晚做梦,两白蛇:缓我3天,必有重谢

92年我在矿工队干爆破,动工前晚做梦,两白蛇:缓我3天,必有重谢

古怪奇谈录
2025-09-09 14:17:47
既要又要!蔡康永删动态:别用我这点破事去打扰蒋万安市长

既要又要!蔡康永删动态:别用我这点破事去打扰蒋万安市长

青辉
2026-10-18 15:38:10
11月1日起新规施行, 用个人码收款未申报, 主动补缴为何不能免罚 ?

11月1日起新规施行, 用个人码收款未申报, 主动补缴为何不能免罚 ?

社会日日鲜
2026-10-19 06:27:19
王祖蓝回归没站C位,范丞丞一个动作冲上热搜,网友:太会做人了

王祖蓝回归没站C位,范丞丞一个动作冲上热搜,网友:太会做人了

可乐谈情感
2026-10-18 20:22:15
现场画面曝光!法国多地LV、劳力士门店被洗劫一空,爱马仕、苹果、丝芙兰等门店也成目标

现场画面曝光!法国多地LV、劳力士门店被洗劫一空,爱马仕、苹果、丝芙兰等门店也成目标

都市快报橙柿互动
2026-10-18 15:39:35
广东男篮输球,新任主帅赛后说出原因,点名2人是输球关键

广东男篮输球,新任主帅赛后说出原因,点名2人是输球关键

南海浪花
2026-10-19 10:02:40
谢贤前女友Coco直播被说丑,本人回应:“姐都40岁了,把头发往下一放还是迷倒一大片的”

谢贤前女友Coco直播被说丑,本人回应:“姐都40岁了,把头发往下一放还是迷倒一大片的”

韩小娱
2026-09-04 05:54:22
活神仙啊!于东来回到老家,坐在门前水泥台晒太阳,一身简单装扮,引发网友围观

活神仙啊!于东来回到老家,坐在门前水泥台晒太阳,一身简单装扮,引发网友围观

火山詩话
2026-10-18 17:11:47
国家出手抓的4位首富,劣迹触目惊心,害惨百姓,没一个值得饶恕

国家出手抓的4位首富,劣迹触目惊心,害惨百姓,没一个值得饶恕

不畏山海a
2026-10-07 16:09:37
前三季度我国工业机器人产量同比增长29.1%

前三季度我国工业机器人产量同比增长29.1%

界面新闻
2026-10-19 10:09:50
大势已定!再过一年,退休人员必须直面的3个养老真相

大势已定!再过一年,退休人员必须直面的3个养老真相

匹夫来搞笑
2026-10-18 16:02:58
张雪WSBK夺冠后推倒公升组方案:弃四缸改自研V5,两年冲公升组经理放话全力托底

张雪WSBK夺冠后推倒公升组方案:弃四缸改自研V5,两年冲公升组经理放话全力托底

沙雕小琳琳
2026-10-18 18:15:20
2026-10-19 10:59:00
码上闲叙
码上闲叙
有态度网友ytd
178文章数 102关注度
往期回顾 全部

科技要闻

王晟:近千亿资金涌入后 具身智能开始退烧

头条要闻

上海阿姨心疼保险业务员离异带娃 结果5年被转走200万

头条要闻

上海阿姨心疼保险业务员离异带娃 结果5年被转走200万

体育要闻

从NBA退役10年后,他真去警局上班了

娱乐要闻

演员许君聪近况曝光 婚恋成谜让人唏嘘

财经要闻

三季度GDP,同比增长4.5%

汽车要闻

星瑞L PLUS限时售价10.97万元起 开启智混3L时代

态度原创

亲子
家居
本地
公开课
军事航空

亲子要闻

让孩子学搏击,不是教会孩子暴力,而是让孩子更加勇敢有担当

家居要闻

2026建博会(广州) 公装联探展交流活动

本地新闻

因新荣记出圈,这座浙东小城才是吃货天堂

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

乌克兰全国超15处重要能源设施遭俄袭击 泽连斯基发声

无障碍浏览 进入关怀版