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.

Each Agent Tool has an Approval Mode field. It names who decides each call.

ApprovalWhat happens
Not Required (the default)Every call runs. The agent’s policy is not asked.
Always RequiredEvery call waits for the tool’s Approver Type. The agent’s policy is not asked.
Decided by PolicyThe agent’s policy decides each call: run it, deny it, or wait for a user or queue the policy names. See Approve by rule.

On the Agent Tool:

FieldWhat to enter
ApprovalAlways Required.
Approver TypeWho decides. See below.
Approver User or Approver QueueDepends on Approver Type.
Approval Timeout (Minutes)How long the approver has, from 1 to 10080 (7 days). Blank is 1440 (24 hours).
When Approval ExpiresRequired. Deny and Continue: the agent is told the call was not approved and carries on. Use it when a missed deadline is an acceptable answer. Pause for Operator: the run pauses with WAIT_EXPIRED for an operator. Use it when the run should not finish without the action, for example because the approver was away. Rescue asks for approval again with a new deadline, and Cancel ends the run.

The tool page saves without an error when the setup is valid. It refuses an approver, Approval Timeout, or When Approval Expires on a tool whose Approval Mode is Not Required.

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 ProcessYour approval process picks the reviewers, and a relay user with AgentKernelApprovalRelay passes the decision back. Saving is refused when no active user has that permission.

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.

Core asks the model to explain every tool call. For a tool whose Approval Mode is Always Required or Decided by Policy, it asks what the call will do, the facts behind it, and each condition it did not confirm with a tool. The approver sees this as the agent’s explanation. For other tools, it asks for one sentence on what the call does and why it is needed now. The Agent Run Story shows each call’s explanation under The agent’s reasoning. 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.