技术 · 熟练

它说跑完了,但该做的那件事没做

无人值守时,被拒的权限提示不会喊人
有人在旁边看时,权限提示是个安全阀;没人在旁边看时,它变成一个静默的洞。新一版编码 agent 给无人值守主机专门加了一个开关:任何会要求权限提示的动作,一律自动拒绝。官方自己把这句风险写在了说明里 —— 任务可能跑完,但没做成本来要做的事。这一页讲三件事:为什么「跑完了」与「做完了」在无人值守下会分家 → 怎么把被拒的提示变成日志里的结构化失败 → 怎么在收尾处核对一遍。顺带一条同源的坑:写在设置文件里的权限规则,可能被静默跳过 —— 你以为生效的规则,从来没生效过。
方法 · 一图看懂
1
先把「跑完」和「做完」分开统计 — 退出码 0 只说明进程结束了,不说明该做的动作都执行了;无人值守的作业日志里必须有一个独立于退出码的「本次被拒了几次」
2
把被拒的提示当结构化失败,而不是当噪音 — 让 agent 在被拒的当下输出一行可解析的记录(哪个动作 · 为什么需要权限 · 谁拒的),编排层收到就记一条失败,别让它混在正常输出里
3
收尾核对「本该发生的事」发生了没有 — 出场的产物 / 被改的文件 / 发出的消息,逐项对着任务里写死的预期核一遍;这一核才是无人值守的真正验收
4
回头验一遍你写的规则真的在生效 — 设置里的规则可能被静默跳过;用一次「故意触发」的试跑确认,而不是相信配置文件里那几行字
原理 · 为什么有效
为什么无人值守会把「跑完」和「做完」撕开?因为有人的时候,权限提示的默认结局是「有人看了一眼」。没人的时候,这个提示必须有一个默认结局 —— 两种选法各有一个代价:默认等,作业会永远挂在半路,谁也不知道;默认拒,作业会顺利跑完、交出看起来正常的产物,而其中一个关键动作根本没执行。行业给出的答案是后者(默认拒),并且把代价明确写在文档里,让编排层自己接住。
这类失败最贵的地方在于它不像失败。退出码是 0,日志没有红色,产物文件也在 —— 唯一缺的是「那个动作」。你在三天后才发现某封确认邮件从来没发出去,而当时的作业记录里一个字都没提。
同一条脉络上还有第二种静默:规则本身没生效。同一次修复里披露,写在设置文件里、带中段通配的 Bash 规则会被静默跳过,而同样一条规则走命令行参数却生效;托管设置里某个布尔锁键的值拼错,会被整条忽略 —— 锁没上,没人知道。这两处的共性是同一个判据:配置里「写了」不等于「生效了」,「没报错」也不等于「在执行」。所以第 4 步不是可选项 —— 它和前三步用的是同一种怀疑。
适用场景
适合:把编码 / 运维任务交给 agent 在夜里、在 CI、在定时计划里跑的人;已经用上「无人值守模式」或「无头会话」这类开关的人;发现过「作业显示成功但结果不对」却查不出原因的人。
不适合:全程有人盯着、每次弹窗都有人点的人(本页的三个动作都是给「没人的时段」补的);以及把权限放开当解法的人 —— 把开关拆掉让作业能跑完,等于把「静默漏做」换成「静默乱做」,风险量级完全不同,⛔ 不是本页建议的方向。
自测 · 5 问
我的无人值守作业里,有一个独立于退出码的「被拒次数」吗?
被拒的时候,agent 会输出一行可解析的记录,还是只把这句话咽下去?
收尾时我核对的是「进程结束了」还是「任务里写的每件事都发生了」?
我有没有用一次故意触发的试跑,证明过我写的规则真的在生效?
如果这次作业静默漏做了一件事,我要过多久才会知道?
怎么上手 · 验证步骤
上手第一步只做一件事:给无人值守的作业加一行输出 —— 本次被拒了几个动作、分别是什么。这行输出要能被机器解析(固定前缀 + 动作名),因为它的读者是编排层,不是你。
接着两件配套动作:① 收尾核对清单 —— 把「本该发生的事」列成 3~5 条可判定的事实(文件在不在 · 消息发没发 · 记录写没写),跑完逐条打勾;② 一次故意触发的试跑 —— 在隔离环境里放一个明显需要权限的动作,看它是否如约出现在「被拒」那一行里。这一步同时验了两件事:开关在工作、规则在生效。
自检动作:拿最近三次无人值守的作业记录,只看一件事 —— 「被拒」这一行出现过吗?如果三次都是 0,先别高兴,先怀疑这行输出本身有没有接上(接口没接上时,它同样是 0)。确认接上之后,再问第二个问题:这三次里,有没有哪一件「本该发生的事」,只是因为你没去核,才显得发生了。把这两问的答案写进下一版的收尾核对清单。
[C级]Claude Code 官方 changelog(2026-09 · 新增 `--permission-prompts none` 给无人值守的无头主机用:任何会要求权限提示的动作自动被拒;官方自陈「任务可能跑完但没做成本来要做的事」) [C级]Claude Code 官方 release notes v2.1.282(2026-09-24 · 七处权限 / 托管设置漏洞收口:设置文件里带中段通配的 Bash 规则被静默跳过 · 托管设置 boolean 锁键拼错值被静默忽略) [C级]Claude Hub《Claude Code 2.1.282: permission fixes pile up, auto mode changes without telemetry》(2026-09-24 · 逐条整理官方 release notes,并指出「你以为生效的规则可能什么都没做、且无任何警告」) [C级]AI Coding Tools Directory《Claude Code September updates add managed gateway and effort controls》(2026-09 · 对 `--permission-prompts none` 的编排建议:把被拒提示当结构化失败并在作业日志里暴露) 同类:给AI操作上权限审批链:危险动作先拦下来等你点头 · 它昨天显示「跑成功」了,但什么都没做
继续往下读
同级:给AI操作上权限审批链:危险动作先拦下来等你点头 下一级:Agent 谎报成功了,问题多半不在提示词 随机一篇