Replies: 4 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 之前,保留原始调用并将审批与其绑定,整体会更清晰。 |
|
Thanks everyone. We have consensus on moving sandbox approval into Runtime pre-dispatch. I propose closing this Discussion with the following convergence:
The observed sandbox failures remain tracked in #4267 and its forthcoming scoped sub-issues. #3731 should be revisited against this decision rather than adding a separate negotiation-state authority. I’m closing this Discussion as the architecture direction is settled. Implementation and verification will continue through Issues and PRs. 中文大家已经对 Runtime pre-dispatch 的方向达成共识,最终收敛为:
实际 sandbox 故障继续由 #4267 及后续子 Issue 跟踪。#3731 也应根据这个决策重新评估,不再增加独立的 negotiation-state authority。 架构方向已经确定,因此关闭本 Discussion;后续施工和验收通过 Issue 与 PR 推进。 AI assistance disclosure: OpenAI Codex, Claude, and K3-256K assisted with the architecture and naming analysis. I reviewed this conclusion and take responsibility for it. |
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