Pending Deliveries
When an AI agent tries to send a message but the channel is unavailable or the send fails, the message is captured as a pending delivery so the content is never lost. The Pending Deliveries page lets operators review, re-send, or discard those captured messages.
Where to Find It
Navigate to Boardroom > Pending Deliveries in the Admin Console sidebar.
How Pending Deliveries Are Created
The agent uses three outbound tools - messages.reply, messages.send:person, and mailbox_messages.reply:supervisor. If any of them fail in a way that would lose the message (lost conversation context, channel outage, reply failure), the system saves the full message envelope as a pending delivery artifact. The original message body, recipient, subject, tool name, and failure reason are all preserved.
Page Layout
Status Tabs
The top of the page has four filter tabs:
| Tab | Description |
|---|---|
| Pending | Active pending deliveries awaiting operator action |
| Approved | Deliveries that were re-sent by an operator |
| Discarded | Deliveries marked as no longer needed |
| All | All deliveries regardless of status |
Tool Filter
Below the status tabs you can filter by the tool that originally failed:
- Any tool - Show all tools
- respond - Chat/conversation replies
- messages.send:person - Outbound sends to a specific address
- mailbox_messages.reply - Email replies sent on behalf of someone
Delivery List
Each row in the list shows:
- The tool that failed (icon and name)
- Status badge (Pending / Approved / Discarded)
- Failure code badge (if applicable)
- Recipient address and subject
- A summary of the message body (first two lines)
- How long ago the delivery was captured
Click any row to open the detail drawer.
Paging
The list shows 15 deliveries per page. Use Previous and Next under the list to move between pages; the pager also shows which rows you are looking at (for example "Showing 16-30 of 42"). The page loads up to the 200 most recent deliveries for the selected tab, and shows a note when that limit is reached.
Bulk Actions
On the Pending and All tabs, each row has a checkbox so you can act on many deliveries at once:
- Tick individual rows, or use Select all on this page to select every row on the current page. Your selection is kept as you move between pages, so you can select across pages.
- Rows that can no longer be acted on (already approved or discarded) have a disabled checkbox.
- The selection count appears above the list with a Clear link. Switching tabs clears the selection.
When at least one row is selected, a bulk action bar appears:
| Action | What it does |
|---|---|
| Discard selected (N) | Discards every selected delivery that can be discarded. An optional shared discard reason applies to all of them. |
| Approve & resend (N) | Re-sends every selected delivery that can be approved, using the same path as a single approve. |
The number in each button is how many of the selected rows that action applies to; a button is disabled when none apply. Both actions ask for confirmation first. Approve & resend sends real messages to their recipients, so check the selection before confirming.
While a bulk action runs, the page shows its progress and the other controls are disabled. When it finishes, a single summary appears, for example "6 resent, 1 already handled, 2 failed". "Already handled" means another operator or the system acted on that delivery first, so nothing was sent twice. Deliveries that failed stay selected so you can retry them; the rest drop off the list.
Detail Drawer
Clicking a delivery opens a side drawer with the full envelope:
| Field | Description |
|---|---|
| Status | Current status of this delivery |
| Tool | The outbound tool that failed |
| Channel | The channel type (email, chat, etc.) |
| Recipient | The intended recipient address |
| Subject | Email subject line (if applicable) |
| Failure code | Short machine-readable failure code |
| Failure reason | Human-readable explanation of what went wrong |
| Captured | When the delivery was saved |
| Conversation | ID of the agent conversation it came from |
| Body | The full message body |
Approving a Delivery
Click Approve & resend to retry the original send using the same tool and the same preserved body. The system dispatches through the original tool path (messages.reply, messages.send:person, or mailbox_messages.reply:supervisor). On success, the status changes to Approved.
If the re-send fails, the button shows a toast with the failure code and reason so you can diagnose the underlying channel issue.
If another operator approved the same delivery between when you loaded the page and when you clicked Approve, you will see an "Already approved by another operator" notice and no duplicate send occurs.
Discarding a Delivery
If the message is no longer needed - for example, the conversation is resolved or the recipient is no longer relevant - click Discard. You can optionally enter a reason (up to 400 characters) to explain why it was discarded. The record is kept for audit purposes; discarded deliveries are not deleted.
FAQ
Why does a delivery show a failure code like channel_send_failed?
The failure code is set when the outbound tool catches the specific error. channel_send_failed means the channel (email server, messaging service) rejected or dropped the send. Check the channel configuration and connectivity before approving.
Can I approve a delivery that is already Approved or Discarded?
No. The Approve and Discard buttons only appear for deliveries in Pending status. Approved and discarded deliveries are read-only in the drawer.
Will approving a delivery re-trigger the Safety Gateway?
Yes. The re-dispatch goes through the same tool execution path, which includes Safety Gateway analysis. If the message is flagged, it will be held in the Review Queue rather than sent immediately.
How long are pending deliveries kept?
Pending delivery artifacts are stored in AgentArtifacts with standard artifact retention. Discarded deliveries are preserved for audit purposes and are not purged sooner than other artifact types.
Who can see Pending Deliveries?
Pending Deliveries requires the caioo:view permission. Any operator with that permission can approve and discard deliveries for their tenant. Operators cannot see deliveries from other tenants.
Related Topics
- Safety Gateway Overview - How outbound communications are intercepted
- Review Queue - Review messages held by the Safety Gateway before sending
- Audit Log - View the history of all gateway decisions