Skip to content

Require approval

A tool can wait for a person to approve each call before it runs. The run waits, the approver decides in Salesforce, and the run continues. The agent never approves its own work.

On the Agent Tool:

FieldWhat to enter
Always Require ApprovalChecked. Every call waits for approval.
Approver TypeWho decides. See below.
Approver User or Approver QueueDepends on Approver Type.
Approval Timeout (Hours)How long the approver has. Blank is 24.
When Approval ExpiresDeny and Continue (the default): the agent is told the call was not approved and carries on. Pause for Operator: the run pauses with WAIT_EXPIRED for an operator.

Leave Always Require Approval unchecked if only some calls need approval, such as refunds over $200. A policy class then decides call by call, and still sends approvals to the Approver Type. See Approve by rule.

Approver TypeWho decidesAlso set
UserOne person.Approver User
QueueAny member of the queue.Approver Queue. The queue must support Agent Approval.
Anchor Record OwnerThe owner of the run’s record.Optional Approver Queue as a backup, used when the owner cannot decide, the record is owned by a queue that cannot hold approvals, or the run has no record. Without a backup, the run pauses.
Requester’s ManagerThe manager of the person who started the run.
Approval ProcessAn approval process integration picks the reviewers and passes the decision back. Without one installed, the approval waits until it expires.

Every approver needs the AgentKernelHumanDecision permission set and read access to the approval.

  • The execution user. Core refuses an identity whose user holds approval permissions.
  • Anyone who is not the assigned user or a member of the assigned queue.

The person who started the run may approve it when they are the assigned approver.

For a tool that needs approval, Core asks the model for the change, the facts behind it, and what the approver should check. The approver sees this as the agent’s explanation. Core does not check it, so treat it as a claim, not proof.

While it waits, the run’s status is Waiting and an Agent Approval record is open with status Pending. The approval ends as Approved, Rejected, Expired, or Cancelled (when the run is cancelled).

OutcomeWhat happens
ApprovedThe tool runs with the exact input that was approved.
RejectedThe tool does not run. The agent gets TOOL_APPROVAL_DENIED with the approver’s comment and continues.
ExpiredDepends on When Approval Expires.

An approval can be reassigned only to someone who could decide it.

Each approval adds 2 jobs and 1 API call when the run continues, plus the wait itself. There are no model calls while it waits.

Pluto is licensed under the GNU Affero General Public License, version 3 only.