Docs menuActions and Approvals
Docs/Build

Actions and Approvals

Route privileged operations through action policies, approval states, and execution records.

Request lifecycle

An action request represents an intended operation: install a plugin, change a source, create an issue, send an external action, or call a plugin action. The policy engine evaluates the request before it can execute.

StatusMeaning
draftA supported pre-approval state. Approval and rejection functions can transition it, but most main creation paths create pending_approval or approved directly.
pending_approvalA reviewer must approve or reject the request.
approvedThe request can be queued for execution.
rejectedA reviewer rejected it.
expiredThe request is no longer actionable.
executedExecution completed successfully.
failedExecution failed.
cancelledThe request was withdrawn.

Policy modes

ModeResult
observe_onlyDeny execution and keep the request observable.
draft_onlyRequire human approval before execution.
approval_requiredRequire approval, normally by the configured approver role.
auto_approveAllow execution only when risk is at or below the policy threshold.
neverDeny the action.

Policies are sorted by ascending priority, so lower numbers win. Default policies cover user administration, source configuration, code actions, channel management, data-source management, plugin management, and a broad external-action fallback.

Plugin actions

Plugin action manifests can declare default_mode. auto creates auto-approve policy rows for that plugin action and scope, ask falls through to approval behavior, and deny keeps the action off the agent tool surface.

  • Use action kinds that are specific enough for policy review.
  • Set risk levels conservatively for external writes or user administration.
  • Keep plugin credentials in worker-side secrets and sandbox injection, and keep browser state free of them.
  • Review action_execution rows for executor, operation, payload, result, status, error, and external references.