安全模型
模型和外部数据均不可信。模型负责提出工具调用,本地 Tool Runtime 验证参数、准备动作、安全评估、选择确认方式后执行;风险不由模型自报。结果来自真实执行,禁止把失败或截断作为完整证据。
Shell 主要通过 brush-parser AST、展开/副作用分析与文件系统/Android/提权/网络领域策略判定。解析失败、动态执行、嵌套 shell 和未知包装采用保守等级;自定义 regex 只提高风险。已批准的精确命令与 root 计划绑定到进程内能力,执行 broker 再评估,错误绑定拒绝。
结构化工具共享风险与确认策略,读取有界、写入预览、目标身份复核与原子替换按工具实现。unsafe / never 不能解除生产强制确认。protocol_auto_approve 是默认关闭、明确选择的协议确认器,不是模型权限;详见 确认。
approval_grants 在最终评估后匹配工具、可信包名与风险上限,可免去匹配操作的人工确认并持久扣减次数;默认为空,Root、Critical 与强确认始终排除。非交互 CLI 也可使用有效凭据,未命中且需要确认时拒绝。Tailcat 本地快捷共享把用户在弹窗确定端口视为本次固定操作授权,直接批准限定的检查、安装、停止与共享工具;模型及协议通用调用仍用原确认器。完整条件见安全确认与Tailcat。
边界与局限
- 文件工具没有工作区路径沙箱,实际能力是进程权限范围。
- Root 能读/改更多对象,仍需确认;绝不把 Root 当批准。
- 内置 Web 无登录且默认监听所有 IPv4,网络访问是额外信任边界。
- 协议 Bearer 代表一个可信所有者,HTTPS 与 Host/Origin 校验不替代设备批准。
/shell与 companion ADB 调试广播是用户直接 shell 能力,不经过 Agent 确认链。- 输出可能有设备信息;已知凭据脱敏不能保证任意命令输出没有其他秘密。
PTY 的进程组、取消、超时、wait 与终端恢复属于执行可靠性边界。工具字节先过滤清屏/光标/备用屏序列,再显示到 TUI。开发者约束见 贡献。
受管 UI 归属与执行审计
受管任务在第一次 UI 操作准备前获取 Android UI 租约,通常持有至完成或取消,包括模型请求和确认等待。有界后台续跑等待会释放租约;可能修改状态的托管后台 Shell 把租约移交给监督器并持有至子进程结束,只读后台采集不续持。任务后续 UI/Shell 动作重新获取租约并复核目标。其他受管进程最多等待十秒,再返回设备忙。具备权限的原生 Android Shell 命令共用租约;直接命令在执行期间持有。独立的静态文件/APK 读取仍可运行。外部触摸、ADB 和用户直控的 /shell 仍可改变设备状态,因此动作目标继续复核。
连续且声明为只读的调用每批最多四项并行。修改类工具、UI 工具和 Shell 命令构成串行边界。预备动作再次核验风险,批处理不能执行 Shell 动作或升高风险的准备结果。返回结果保持请求顺序,预算和审批要求继续生效。
有界私有 JSONL 历史为受管 Agent、直接工具及 CLI/TUI/Web 命令入口追加 tool_audit 记录,包含任务/请求/会话关联、入口、风险、预览 SHA256、审批、进程 UID、请求的 root 计划、结果和耗时。会话标识只保存哈希。这些审计记录不保存参数、命令预览、凭据、输出或错误原文;其他对话历史记录仍遵循配置的历史策略。UID 表示原生进程身份;root 字段记录已评估的请求,不冒充对子进程 UID 的观测。日志达到配置文件上限后停止追加。这些诊断信息不授予执行批准。