Skip to content

v1.13.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 08:29
· 447 commits to main since this release

1.13.0 (2026-09-20)

Bug Fixes

  • plan agent 去 bash 硬只读 + 子 agent 工具集与父取交集(subagent.ts 与 chat 路由,config.tools.enabled 的 fail-closed 不被 def 固定名单绕过,工作流空 tools 例外) + print/acp --continue 的 workflow 会话升级持久(Web 继续追问同口径,不再被 30 天临时清理) + 续接会话 worktree 与 cwd 不一致时拒绝并给 cd 指引 + ACP abort 真中止(loop chat 后台单飞不阻塞后续请求、handler AbortController 桥接 runPrintMode abortSignal、中止如实报 error 而非谎报 ok、并发 chat 拒绝、流结束前等在途收尾) + agent 提及部分无效也显式 400 列全部无效名(原仅全无效报错、拼错 1 个静默丢弃) + PUT /permissions 校验会话存在(不存在或回收站 404) + 物理删除真空会话 DELETE /:id/empty(ChatSession 首消息失败改走此路径,非空 409) + 文件写入 content 须为字符串且 20MB 上限(原 undefined 抛类型错误成 500) + 搜索 collectFiles 结果上限 5000 + PTY cols/rows 钳制 [1,1000]/[1,500] 且自然退出清理 shell 注入脚本与目录 + 更新检查新增 checkError 区分「检查失败」与「已是最新」(CLI 与 REST 各自给出重试指引,调度器异常降级保留真实版本不再写死 0.0.0) + 工作流删除刷新信任指纹并按 projectTrusted 热重载注册表(防删除后自锁复检与单名单位遮蔽不恢复) (892f62f)
  • security: security 收敛为全局作用域(项目作用域读取剥离+CLI/斜杠/Web 写入拒绝) + authEnabled=false 时跨域写请求 403 防线 + 配对设备在 token 交付时才登记(杜绝僵尸设备条目) + 首设备已注册时 serve 不再打印失效 bootstrap 链接 (ccde3bd)
  • usage: 统一 token 口径含 cacheRead,预算不回退项目值 (89d759b)
  • usage: 预算护栏双轴动作独立求值,超支取更严格者 (f4337d6)
  • 子 agent run 纳入宿主跟踪与级联暂停,补预算口径告警与多处服务端校验 (f134bf7)
  • 看板列引用一致性 + merge 恢复死胡同修复 + 预算暂停标记跨重启还原 + commit message 三模式统一校验 (a53b9ef)
  • 编辑器人机协作冲突检测(baseRef 三方比对:外部变更挂起横幅不静默覆盖本地修改、保存前比对磁盘阻断盲写、写入错误提示)+useChat 在 write/edit tool_call_end 失效 ['file', path] 查询 + 会话忙判定收敛 hasBusySession(fork/clear/compact 斜杠与 REST 同口径,补 starting 占位与工作流运行期两态,starting 单独 409 RUN_STARTING) + 无项目会话剔除项目绑定工具(PROJECT_BOUND_TOOLS:chat 与 CLI print 同步) + 看板导入体积上限(列100/标签200/卡2万) + 导出改 peekBoard 纯读不懒建(无板 404) + 卡片删除二次确认(物理删除不可恢复) + kanban 工具描述改默认第一列且须先 view 查列 id + store ensure-insert 缺行显式抛错 + 项目重定位/删除守卫打开的终端 + 删除运行中的工作流文件 409 (c58d9c1)
  • 配置写入刷新信任指纹、子 agent 工具集无条件取交集、会话路由口径统一 (e59dabd)

Features

  • CLI --allow 定向放行写工具、tokenBudgetAction 解耦、预算 CLI 中止、provider baseURL 信任门禁、全局预算键作用域收敛 (c8b49f3)
  • tools.enabled 语义改为 * =全部/[] =无工具(fail-closed,旧空数组加载告警) + CLI --budget-action warn|abort(pause 等效中止并 stderr 提示) + 热更新终端勾选自动重跑前台命令(proc children 检测 + POSIX 转义重放) + 成本口径与回收站绝对上限提示 (9166c81)
  • 中断轮次标记与上下文剔除 + 成本账本含回收站 + 未知价格显式计数 + 配对/首设备死锁恢复指引 + 图片体积提示 + 删除项目导出逃生口 + 顶栏月成本徽标 (957aedb)
  • 信任指纹覆盖代码面(MCP 全参数+插件目录内容 hash,漂移复检,serve 加载与聊天门禁同口径,CLI trust 展示风险须 --yes) + 配对审批须输入 6 位配对码防多请求误批 + websearch auto 运行时降级链(鉴权/限流/5xx/网络错误依次换后端) + slashCommands.enabled 空数组改 fail-closed + CLI sessions purge --yes 闭环与 trashSeenAt 同步 + 热更新影响面标注 run 运行态 (1ed4b98)
  • 信任门禁并入全局权限风险上下文(默认不改变触发条件) + fork 继承权限态(permissionMode/alwaysAllow 仅字符串)与 worktreePath (966718c)
  • 信任门禁支持 MCP 风险与指纹复检,预算护栏增加 token 口径,slash 命令加固跨项目校验 (479a0b1)
  • 工作流三通道同口径(chat 斜杠 /workflow run 走专用通道:预算护栏/urlRegistry/agentManager 注册+断连 abort/进度 SSE/RUN_ACTIVE 并发守卫,与 REST 一致) + meta.timeout 真中止(abort 级联子 agent,不再只报错后台续跑) + 运行会话标题带时间戳(workflow: MM-DD HH:mm) + 权限挂起请求按发起 run 的用户可见会话归属(reportSessionId,子 agent 弹窗可从主/工作流会话重挂) + REST 创建工作流 target 必填且 projectId 落盘项目 worktree(须已信任,409 TRUST_REQUIRED) + 斜杠 create 同名覆盖需 --yes + DELETE ?projectId 按路径删除免信任门禁(registry 仅清理同文件条目防误删 user 级) + Web 设置页工作流管理面板(查看/新建/编辑/删除) + 前端工作流运行进度横幅 + 临时会话(print/workflow)30 天到期移入回收站而非物理删除(子会话同享可恢复) + CLI --budget-action abort 直映射 config abort(不再借 pause 中转,文案按实际动作区分) + CLI sessions deleted --project 限定 seen 标记与列表作用域 + glob 双星号跨目录语义(**/ 匹配零层,单星号不跨分隔符) + README/docs 同步 (f4e3eec)
  • 工作流纳入信任边界(风险项+指纹 hash+加载/列出/运行 fail-closed 门禁,新建后刷新指纹防自锁复检) + REST /run 对齐 chat 斜杠路径(交互权限/预算护栏/会话绑定) + 中断恢复与重发覆盖图片消息 + 出错重试按钮 + 同名覆盖徽标 (59cd651)
  • 工作流解析统一「项目>用户>内置」(新增 resolveWorkflow,列表/查看/编辑/运行口径收敛,项目级同名不再被用户级或内置遮蔽) + 信任门禁覆盖所有 discovery 入口(斜杠 /workflow 与 chat 路由仅在会话绑定已信任项目时发现项目级,孤儿会话/CLI 未信任 cwd 不再执行仓库代码) + 并发守卫按执行作用域 project:projectId / dir:cwd(斜杠与 REST 双通道,原 tryAcquire 作用于全新会话 id 永真失效;另加发起会话占用互斥:主会话跑工作流期间普通消息 409) + 控制端点按 workflowBusyBySession 路由到实际工作流 run(abort/pause/resume) + 工作流 run 写 lastRun(running->completed,崩溃后重启可识别为 interrupted) + createSession 支持初始 metadata(工作流会话记 workflowName) + 中断横幅按 agentType 分流(工作流运行会话无 user 消息可重发,改为指引 /workflow run 重新发起) + POST 同名覆盖需 overwrite=1(409 ALREADY_EXISTS,编辑模式由前端显式传) + DELETE ?target=project|user 按层级显式删除(缺失 404 不回退另一层级,注册表仅清理同文件条目防误删 user 级) + GET /api/workflows 返回 trustRequired 隐藏未信任项目级条目 + CLI /workflow 注入三级注册表(resolveCwdProjectTrusted 提取复用) + 用量面板 abort 动作文案 (846cff8)
  • 工作流运行会话的控制端点路由到实际 run(steer/status/delete 按 workflowBusyBySession,此前 steer 恒 false 指令静默丢失、状态栏 idle、删除后工作流后台续跑 busy 映射悬挂) + 权限超时 pause 级联子 agent(chat 与 workflows 通道同口径,原仅暂停父 run) + 工具交集收紧(resolveEnabledToolNames 显式选择与 config.tools.enabled 取交集,请求级 tools 不再绕过 fail-closed 空名单) + /api/tools 按合并配置过滤且支持 ?projectId=(设置页禁用后开关不再提供该工具,Web ToolToggle 传项目) + 媒体预览 query token 认证(FilePreview img/audio/video/embed 无 Authorization 头,auth 中间件仅对 /api/files/*/raw 白名单路径在头无效时接受 ?token=) + raw 端点 nosniff 与 html 改 octet-stream(svg 保留并附加沙箱 CSP,收口同源 XSS 面) + 回收站会话 404 口径统一(发消息/改名/llm-details 拒绝软删除会话,与 GET/messages 一致) + 项目删除活跃守卫修复(按项目会话查 get()+isStarting(),原 children(projectId) 按 parentSessionId 过滤恒空属死代码且漏 starting 占位态) + usage summary 改 SQL GROUP BY 聚合(月份按本机时区+白名单校验,结果 O(月份×模型) 替代全表入内存) + 看板恢复校验目标项目存在 + 导入会话体积上限(20000 消息/2000 归档) + 搜索递归深度 5→8 + 更新影响面仅统计受影响会话的挂起权限数(新增 permissionStore.countForSessions) + 附件按解码字节校验大小(base64 字符串长度高估约 33%,解码失败按原长度兜底) (44aebb1)
  • 开发版/安装版数据目录隔离,serve 默认端口改为 7310 (64b9af5)
  • 权限超时动作可配置(pause/deny) + 用量预算面板 + CLI 持久会话对 Web 可见(worktreePath) + 回收站绝对上限 365 天 + SPA 深链回退修复 + serve host 绑定与 serve-info 引导 (9ffffb1)
  • 独立成本账本 usage_events(写路径+backfill+月份口径) + 预算超支自动暂停 + fork 继承归档与用量 + 恢复明示重建项目/归属当前项目 + 热更新终端随快照迁移 (0707242)
  • 看板回收站两阶段清理(到期先宽限 7 天) + 恢复并重建原项目 + 信任门禁增 timeoutAction=deny 风险项 + CLI 预算 pause 超支拒绝 + MCP 未接入明示 (64dbf59)
  • 移除 agents.dir 与 agent 文件发现模块(目录配置项/Settings 输入框一并删除) + composer 默认模型校正覆盖 provider 与 model 双重回退(仅未操作过时生效,自由输入不受干扰,列表加载中不误清) + 首跑首存 provider 引导全局作用域选择(已选过不再打扰) + CLI 首跑报错三分支(未配置/服务名不匹配列清单/模型不在声明清单列可用模型,与 Web 对齐) + 用量面板零预算无护栏告警 + 权限超时暂停提示补重试指引 + 切段/清空归档/全局重启文案澄清 (6751992)
  • 项目信任门禁(克隆即信任防线) + 看板软删除入回收站 + 用量口径与全局预算 + 成本账本 backfill 一次性标记 (d080b38)
  • 预算动作增 'abort' 硬封顶(与 pause 分道:Web 注入 budgetAbort、CLI 拦截口径统一) + 斜杠命令启用判定统一为 isSlashCommandEnabled(支持 ['*'] 通配,Web/CLI/help 共用) + 配置迁移告警导出至 Web 设置页(tools/slashCommands 空数组语义提示 + 无 provider/项目 providers 覆盖全局提示) + CLI chat 入口打印权限水位 + README 首用 Provider 配置引导 (2173c78)