Background
#2606 (closed via PR #2609) audited the singular exec.approval.* (request/decision/resolve) subsystem and confirmed the wire-path is broken: gateway handlers were deleted in two stages (PR #70/#71 stubbed empty; PR #2375 deleted the stubs), but the protocol surface and 4 live callers survive. Every caller currently receives INVALID_REQUEST: unknown method from the gateway.
The audit deferred the cleanup-vs-restore decision. Decision: CLEANUP. The macOS-mediated singular exec.approval.* path is not being restored. A future channel-mediated approach for node-host exec approvals (sister surface to the AgentRuntime tool-approval routing being scoped separately) will be designed when needed; not part of this work.
Audit reference: docs/refactor/exec-approval-singular-audit-2606.md in this repo (from PR #2609).
Acceptance criteria
Delete stranded callers
For each of these, either delete the caller entirely or replace its approval-requiring path with a clear failure response (no silent breakage):
Delete protocol declarations
Do NOT touch the plural exec.approvals.* (policy/storage) subsystem — exec.approvals.node.get etc. are in active use (e.g. register.invoke.ts:198). Out of scope.
Documentation
Tests
Non-goals
- Building the new channel-mediated approval surface (separate, future design)
- Touching the plural
exec.approvals.* (policy/storage) subsystem
- Restoring the deleted gateway handlers
Effort
1-2 days. Pure deletion + doc updates.
Background
#2606 (closed via PR #2609) audited the singular
exec.approval.*(request/decision/resolve) subsystem and confirmed the wire-path is broken: gateway handlers were deleted in two stages (PR #70/#71 stubbed empty; PR #2375 deleted the stubs), but the protocol surface and 4 live callers survive. Every caller currently receivesINVALID_REQUEST: unknown methodfrom the gateway.The audit deferred the cleanup-vs-restore decision. Decision: CLEANUP. The macOS-mediated singular
exec.approval.*path is not being restored. A future channel-mediated approach for node-host exec approvals (sister surface to the AgentRuntime tool-approval routing being scoped separately) will be designed when needed; not part of this work.Audit reference:
docs/refactor/exec-approval-singular-audit-2606.mdin this repo (from PR #2609).Acceptance criteria
Delete stranded callers
For each of these, either delete the caller entirely or replace its approval-requiring path with a clear failure response (no silent breakage):
src/agents/tools/nodes-tool.ts:550—callGatewayTool("exec.approval.request", ...)invoked whennode.invokeforsystem.runreturnsSYSTEM_RUN_DENIED: approval required. Without the gateway handler, this currently throwsunknown method. Decide between: keep the SYSTEM_RUN_DENIED path but return a clear "approval required; not currently supported" error to the agent, OR delete the entire approval-request branchsrc/cli/nodes-cli/register.invoke.ts:247— same pattern, CLI sideapp.ts:467(web UI) — same pattern, browser sideapps/macos/Sources/RemoteClaw/GatewayConnection.swift:91— macOS app'sexec.approval.*subscription (would receiveunknown method). Either delete the subscription or document as "subscription preserved for future restoration; currently inactive"Delete protocol declarations
src/gateway/method-scopes.ts:33-35— removeexec.approval.request,exec.approval.waitDecision,exec.approval.resolvedeclarationssrc/gateway/protocol/schema/protocol-schemas.ts:265-266— removeExecApprovalRequestParamsandExecApprovalResolveParamsregistrationssrc/gateway/protocol/schema/exec-approvals.ts— delete the request/decision/resolve schema definitionsDo NOT touch the plural
exec.approvals.*(policy/storage) subsystem —exec.approvals.node.getetc. are in active use (e.g.register.invoke.ts:198). Out of scope.Documentation
Add an "ICED" banner at the top of
docs/concepts/exec-approvals-architecture.md:Keep the rest of the doc intact for historical context.
Update
docs/concepts/middleware-architecture.md§ "The Middleware Boundary Principle" table — add a row to RemoteClaw's responsibility column: "AgentRuntime tool-approval routing (capture and surface to channels)" — counterpart row stays in agent's responsibility for "Tool execution (web search, file I/O, shell)"Audit
docs/tools/exec-approvals.md(user-facing) for references to the singularexec.approval.*interactive prompt path; remove or rewrite to describe the static~/.remoteclaw/exec-approvals.jsonallowlist as the only currently-supported approval gatingTests
exec.approvals.*(policy/storage): unaffectedNon-goals
exec.approvals.*(policy/storage) subsystemEffort
1-2 days. Pure deletion + doc updates.