Commit Graph

2 Commits

Author SHA1 Message Date
Glucksberg
bc7ba73a34 feat(gateway): add human-in-the-loop approval for outbound messaging (#2023)
Add `approvals.message` config that requires human confirmation before
executing outbound messaging tools. Follows the existing exec approval
pattern with in-memory state management and Promise-based waiting.

New components:
- MessageApprovalManager: tracks pending approvals with timeout handling
- Gateway RPC handlers: message.approval.request and message.approval.resolve
- MessageApprovalForwarder: delivers approval requests to chat channels
- Approval interception in runMessageAction with gatewayClient/skipApproval params

Extended /approve command to handle message approvals (IDs starting with "msg-").

Config schema added under approvals.message with options for:
- enabled, mode (session/targets/both), actions, channels
- agentFilter, sessionFilter, targets, timeout

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:49:25 +00:00
Lucas Czekaj
483fba41b9
feat(discord): add exec approval forwarding to DMs (#1621)
* feat(discord): add exec approval forwarding to DMs

Add support for forwarding exec approval requests to Discord DMs,
allowing users to approve/deny command execution via interactive buttons.

Features:
- New DiscordExecApprovalHandler that connects to gateway and listens
  for exec.approval.requested/resolved events
- Sends DMs with embeds showing command details and 3 buttons:
  Allow once, Always allow, Deny
- Configurable via channels.discord.execApprovals with:
  - enabled: boolean
  - approvers: Discord user IDs to notify
  - agentFilter: only forward for specific agents
  - sessionFilter: only forward for matching session patterns
- Updates message embed when approval is resolved or expires

Also fixes exec completion routing: when async exec completes after
approval, the heartbeat now uses a specialized prompt to ensure the
model relays the result to the user instead of responding HEARTBEAT_OK.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: generic exec approvals forwarding (#1621) (thanks @czekaj)

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-24 20:56:40 +00:00