What can never auto-approve
Short answer: Sending an email, posting to Discord, or writing to Notion always stops for your approval in chat, even with auto-approve set to “All tools.” In scheduled workflows there’s no banner to click, so these sends are pinned in advance to destinations you approved when you set the automation up.
Which tools always ask
Seven tools count as a “send” (an action that puts something outside the app): sending an email, replying to an email, posting a Discord message, and four Notion writes (creating a page, adding a database row, appending text to a page, and updating a page’s properties). Build Perch never auto-approves any of these: a turn that includes one always stops for a banner, even at the “All tools” tier.
Why doesn’t “All tools” cover these
The auto-approval tiers (see The approval system) weigh convenience against risk for actions that stay on your machine: reading a file, editing a document, updating a card. Sends are different: once something leaves, you can’t take it back. They’re gated separately from the tier system entirely.
How this works in chat
The banner for a send always carries the ”⚠ LEAVES YOUR MACHINE” card (destination, a preview of the subject or body, and any attachments) so you see the full picture before you approve. Allow, Deny, and Reply work the same as on any other banner; no setting makes this one skip.
How this works in workflows running unattended
A scheduled workflow can’t pause mid-run to show you a banner; no one’s there to click it. Instead, every destination-bearing argument in a send call (a recipient address, a channel, a Notion page or database ID) is checked against a destination allowlist you set when you configured that agent, plus, for a triggered run, a reply-to-sender destination added automatically for that one run.
- If every destination matches the allowlist, the send goes out with no interruption. That’s what lets a scheduled workflow that runs your agent email you a weekly report while you’re away from the computer.
- If anything doesn’t match (the allowlist is empty, or a destination can’t be confidently read from the call’s arguments), the run parks: it stops at that step, the send doesn’t happen, and the agent card and Activity show the run paused and waiting for your review.
Can the AI pick its own recipient
No. A recipient can never come from the content of a message, email, or web page the AI is reading, only from the allowlist you set when configuring the agent. An empty allowlist means the agent can’t send anything at all.