Replies: 3 comments
|
@YayoiNanoka @liugddx, this proposal touches the permission-escalation model and the Windows AppContainer sandbox. I’d appreciate your views, especially on keeping the original tool invocation pending before dispatch and distinguishing user-approvable access from capabilities Windows cannot enforce. Automated message from Maka, posted at the discussion author’s request. |
|
Thanks for looping me in. I agree with this direction. A missing sandbox capability should not surface as an ordinary tool failure followed by a model retry. Runtime should preflight the original invocation, keep it pending, and ask the user only when the missing access is something the user can approve. The intended behavior would be:
If the current boundary is already For the first implementation, I would keep the intent/dispatch bookkeeping internal to Runtime so each invocation still appears to the model as one tool call with one final result. I also agree that Bash may need to retain |
|
Thanks for the proposal. LGTM. For context, I designed the earlier auto-approval review in #1016, inspired by Codex's Guardian-style flow. The intention was for a separate LLM query—not the acting model—to review the original user intent together with the exact requested action, justification, and risk, and then allow or deny the request fail-closed. I may have missed the context behind the later refactor in #1581, but the flow eventually became model-driven: after a tool reports a concrete missing capability, the acting model calls I agree with the proposal here. Moving capability checks and approval handling into Runtime pre-dispatch, while keeping the original invocation pending and binding the approval to it, is a cleaner design. 中文感谢这个提案,整体 LGTM。 补充一点背景:#1016 中较早的自动权限审核是我设计的,思路参考了 Codex 的 Guardian。原本希望由一个独立的 LLM 请求——而不是正在执行任务的模型——结合用户的原始意图、具体操作、提权理由和风险,决定允许或拒绝,并在审核失败时默认拒绝。 我可能遗漏了 #1581 后续重构的一些背景,但最终流程变成了由执行任务的模型在工具报告具体能力缺失后,调用 我赞同这里提出的方案:把能力检查和审批状态机移到 Runtime 的 dispatch 之前,保留原始调用并将审批与其绑定,整体会更清晰。 |
Uh oh!
There was an error while loading. Please reload this page.
Problem
Sandbox approval is currently initiated by the model through
request_sandbox_boundary.This creates an unnecessary loop:
Runtime already knows the active
ExecutionBoundary, the original tool call, and often the exact missing capability. The model should choose the operation, not control the permission state machine.The current design also exposes
request_sandbox_boundaryin full-access sessions. A request can reach the user even when the boundary is alreadybypass, then settle asboundary_kind_changed.Proposed behavior
Permission checking should happen before tool dispatch:
Permission waiting is not a tool failure, and allowing access is not a retry.
Each invocation should produce one model-visible tool call and one final result. This likely requires separating durable tool intent from actual dispatch:
The model-visible
request_sandbox_boundarytool can then be removed. Existing Host interaction, settlement, recovery, and UI prompt machinery should remain.Bash may still need
required_boundary, since Runtime cannot safely infer the resources used by an arbitrary command. That field should describe the original operation's requirements. Runtime should handle approval.Windows
Windows currently uses the packaged AppContainer broker for the purpose-built filesystem worker. Managed arbitrary shell execution is not supported and fails closed. Some file mutations also cannot be represented precisely by the current ACL policy.
The preflight contract must therefore distinguish:
bypass;User approval must not turn an unsupported Windows operation into unsandboxed execution. Windows sandbox work remains tracked in #2142.
Questions
AI assistance disclosure: Drafted with Maka and subject to human review.
All reactions