-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
feat: time-bounded exec approvals (approve for N minutes/hours) #62284
Copy link
Copy link
Closed as not planned
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.staleMarked as stale due to inactivityMarked as stale due to inactivity
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.staleMarked as stale due to inactivityMarked as stale due to inactivity
Type
Fields
Priority
None yet
Summary
Add a time-bounded approval mode so users can approve a command pattern for a specified duration (e.g. 30 minutes, 1 hour) without having to approve every single invocation or permanently allow it.
Motivation
The current approval modes are:
once— approve this command once, prompt again next timeoff— never prompt (YOLO)on— always promptThis leaves a gap for active work sessions: approving
systemctl restartorgit push --force10 times in a row is noisy, but permanently allowing them reduces security visibility.A timed approval (e.g.
/approve 30m) lets users stay productive during an active session while ensuring approvals expire automatically when they walk away.Proposed Design
New approval action:
durationWhen an agent requests exec approval, the approval card shows:
Or via slash command:
Storage
Add
approvedUntil?: number(Unix ms timestamp) to approval store entries:Resolution logic
Before prompting for approval:
approvedUntil > Date.now(): skip prompt, executeCLI visibility
openclaw approvals getshould show active timed approvals with time remaining:Config default duration
Optional config to set the default duration when user presses the timed-approve button:
Implementation scope
src/tools/exec-approvals.ts— addapprovedUntilto store, check expirysrc/auto-reply/reply/commands/approve.ts— parse/approve <duration>syntaxopenclaw approvals getCLI — show active timed approvals with countdownApprovalDuration = string(e.g."30m","1h","4h")Non-goals
git push origin mainspecifically) — out of scope