Replies: 2 comments 1 reply
|
查了 rc.2 的
所以错误本身反而能证明文件操作尚未执行;但修复不应是: if (requestedPermission === currentPermission) execute();这会把一个格式错误的 authority request 静默降级成普通调用,削弱审计语义。正确的普通 Full Access 调用确实是不带 另一个容易误判的地方是:rc.2 的工具 Schema 可以在挂载的 executor 默认受限时公开完整升级枚举,而 Session 生效模式可变成 Full Access;Schema 里看得到字段,不表示每次都应填写,执行时的 strict-wider 检查才是权威。 建议回归矩阵至少覆盖:
我把 denial、 |
|
你的诊断是对的,而且这个修复已经存在了 —— 你命中的是一个已知缺陷(#4359 / #4383),修复方式和你提的第一个方案一字不差。
// A same-mode request is already satisfied: the call runs at that mode with
// or without the parameter, so it is granted idempotently — no prompt, no
// audit row, nothing widened. Models habitually re-request the mode they
// already hold, and erroring turned that habit into a hard failure on
// `danger-full-access` sessions, where NO strictly wider mode exists
// (upstream #4359 / #4383).
if (mode === effectiveMode) return effectiveMode同级请求直接幂等放行,不提示、不写审计、不加宽,然后才轮到严格加宽检查。注释里点出的正是你观察到的那件事:在 所以:
关于你提的第二个方向
这个方向本身是对的,但要注意它管不到你这个症状: 换句话说:能被代码保证的那一半已经在了,剩下的一半只能靠不把它当错误。 你最后提的回归测试建议是好的,值得单独确认一下是否已覆盖: |
Uh oh!
There was an error while loading. Please reload this page.
是的,这基本可以判定为一个 bug,具体在 文件工具与 sandbox 权限参数的衔接层,而不是 Full Access 策略本身。
预期行为应是:
实际行为却是:
关键证据是错误发生在工具参数处理阶段:
文件系统甚至没有机会尝试写入,所以不是文件路径、权限位或 Full Access sandbox 后端拒绝。
更具体地说,可能存在以下一个或两个问题:
sandbox_permissions被错误地作为文件工具的常规必填参数处理,而不是仅用于“sandbox 实际拒绝后的重试”;修复方向应是:
或者更彻底地:
另外,之前我在调用中主动传入这个参数,也放大了问题;按照官方文档和当前运行时规则,Full Access 下不应主动传递它。这个问题值得在 Harness 的文件工具参数适配或工具执行管线中加一个回归测试,覆盖:
预期结果应为成功写入,而不是同级权限升级错误。
All reactions