Skip to content
Moosewave
Demo
Agentic email marketing & approvals

An approval without a diff is a ceremony.

A button can record that someone clicked. It cannot prove they understood the audience, message, timing, cost, uncertainty, and side effects that were about to change.

By Moosewave

Published · 13 min read

An approved campaign and its proposed replacement sit on either side of a comparison bridge that exposes changes to audience, message, timing, and cost before unlocking an approval lever.
The approval lever becomes useful only when the proposed state is compared with the state people already trusted.

Share this article

The short answer

Human approval is useful when it transfers a bounded decision to a person who can understand and own it. The person needs to see what the agent wants, why it wants it, what will change, who will be affected, what evidence supports the proposal, and which uncertainty remains.

Do not ask a person to approve the agent. Ask them to approve one exact change.

This is the same lesson software teams learned from code review. A pull request is not merely a merge button. It gathers the intent, exact changes, discussion, automated checks, and decision history around one proposed update. An agentic approval needs the domain equivalent.

For email, the unit of review is not the prose alone. It is a campaign plan: goal, audience, exclusions, content, claims, sender, schedule, budget, tools, connected automations, and expected measurement. If any of those can move, the reviewer needs the movement, not a reassuring summary.

An Approve button can hide the decision

The cheapest human-in-the-loop interface puts a modal before a tool call. It says the agent wants to send a campaign and offers two choices: Approve or Reject. This may satisfy a technical requirement that execution paused. It does not necessarily create meaningful oversight.

Reviewers compensate for missing context in predictable ways. They trust the agent because it sounded confident. They reopen five tabs and reconstruct the plan by hand. They approve because the deadline is close. Or they reject safe work because the interface makes every proposal look equally dangerous.

NIST's AI Risk Management Framework treats human oversight as an organizational process, not a decorative last step. It calls for clear roles, documented context and limitations, impact assessment, and oversight designed around policy and risk tolerance. A popup is only one surface inside that system.

A useful pause therefore answers a harder question: has the system assembled enough evidence for this particular person to make this particular decision without becoming the agent's forensic investigator?

Give the reviewer a decision packet

The approval packet should be short enough to scan and complete enough to challenge. Put the consequence first, details second, and raw evidence one layer deeper. For an email campaign, eight fields usually deserve the front page.

01

Intent

The customer or business outcome, not merely the tool name the agent wants to call.

02

Affected scope

Exact recipient count, segment rule, exclusions, data classes, and connected systems touched.

03

Message

Subject, preview, body, claims, links, sender identity, and protected language in its rendered context.

04

Timing

Schedule, time zone, quiet-hour implications, expiry, and any trigger or follow-up that starts afterward.

05

Resources

Expected send volume, spend, incentives, tool calls, and the remaining autonomy budget.

06

Checks

Consent, suppression, policy, link, rendering, deliverability, and data-freshness results with timestamps.

07

Uncertainty

Missing evidence, estimates, stale inputs, assumptions, and conditions the agent could not resolve.

08

Recovery

What can still be cancelled, which effects become irreversible, and the owner if the result is wrong.

The packet should link to evidence, not drown the decision in it. A recipient count can open the audience definition. A deliverability result can open the test. A proposed message can open its template and variants. Progressive disclosure preserves both speed and scrutiny.

Show what changed, not what exists

Review is an attention-allocation problem. A full campaign plan may be correct in ninety-nine places and dangerous in one. Showing the whole plan with equal visual weight makes the dangerous change harder to find.

Start with a trusted baseline: the last approved version, the governing template, or the plan the person just reviewed. Compare it with the proposed version at the semantic level. Highlight that the audience grew from active customers to all contacts, a discount changed, the destination URL moved, a suppressed group reappeared, or a follow-up automation was added. Do not make reviewers infer those changes from two walls of prose.

Example of information shown before and after a proposed campaign change
FieldApproved baselineProposed stateWhy it matters
AudienceRecent buyers, consented+ Dormant buyers over 180 daysMore recipients, lower recent signal
OfferFree shipping15% discountNew commercial promise and cost
Schedule10:00 local timeImmediate global sendQuiet hours and support coverage change
AutomationNo follow-up+ Reminder after 24 hoursApproval now creates a second send

A diff must include removals and invariants too. Show that the suppression policy remains active, the sender is unchanged, and no new data source is introduced. Confidence comes partly from knowing what did not move.

Bind approval to the version that was reviewed

An approval is stale the moment a material input changes. If an agent can replace the audience query, destination page, discount, sender, or schedule after approval, the review was attached to a story rather than an action.

Freeze the plan and calculate a stable digest over the fields that matter. Store the audience snapshot or reproducible query, suppression version, rendered content, links, sender, schedule, budgets, tool arguments, and connected effects. The execution path should accept only that approved identity.

Approval contract

Review

Show plan v12 and its diff from v11.

Bind

Approve the digest of v12, not a mutable draft.

Execute

Reject if the current digest no longer matches.

Not every typo requires a board meeting. Define which edits are cosmetic, which trigger focused re-review, and which invalidate the whole approval. The essential rule is that the policy is explicit and the interface says when approval has been dismissed.

Route the question to someone who can answer it

Human in the loop does not mean any available human in the loop. A copy editor can judge tone. A lifecycle owner can judge frequency. A privacy or security owner may need to review a new data source. Finance may own a promotion budget. The sender-domain owner may control a risky volume jump.

Split review by responsibility when the proposal crosses boundaries. Ask each person a question they are equipped to answer, then assemble the decisions. Avoid presenting one giant approval that makes every reviewer implicitly endorse every domain.

This is where scoped permissions and autonomy budgets meet interface design. The agent should know who can approve which boundary, how long that decision lasts, and when a higher-impact proposal needs escalation.

Approval is not binary

Approve and Reject are often the least informative choices. A reviewer may agree with the goal but not the scope, agree with the copy but not the timing, or need one unresolved fact before deciding.

  1. 01

    Approve this exact version

    Authorize the bound plan once, inside the displayed limits.

  2. 02

    Narrow the scope

    Remove a segment, lower the volume, reduce the budget, or disable a follow-up before reconsidering.

  3. 03

    Request a change

    Return a precise instruction tied to the field that needs work; the new version receives a new diff.

  4. 04

    Ask for evidence

    Pause on a missing test, stale count, ambiguous claim, or unresolved data source without rejecting the goal.

  5. 05

    Decline

    Close this proposal with a reason the agent may use as policy feedback, not as an invitation to route around the reviewer.

The agent should preserve the reviewer's edit as structured intent. “Exclude dormant customers” belongs in the next plan, its diff, and eventually the receipt, not only in a chat transcript the execution layer never sees.

Use an approval ladder, not one universal gate

Too little approval creates unowned risk. Too much approval creates fatigue. People learn to click through harmless reads and carry that habit into consequential sends. Match the review to impact, novelty, uncertainty, sensitivity, and reversibility.

Observe

Read reports and inspect state inside permitted data scopes; record access, but do not interrupt routine analysis.

Prepare

Draft, simulate, and calculate audiences in a private workspace; require review before any external effect.

Execute within policy

Allow familiar, low-impact actions inside pre-approved templates, recipients, budgets, and schedules with receipts.

Focused approval

Pause on the exact boundary that changed: a claim, audience expansion, new tool, higher spend, or uncertain evidence.

Escalated approval

Require the accountable owner for novel, sensitive, high-volume, hard-to-reverse, or incident-related actions.

Model confidence may help decide when to ask for more evidence. It must not decide authority. A highly confident agent can still be outside its recipient, spend, data, or tool boundary.

Review a win-back campaign without rereading the company

Imagine an agent is asked to prepare a win-back campaign for customers who have not purchased recently. It starts from an approved template and a previously approved audience rule. During planning, it finds a larger dormant group and proposes a stronger incentive.

A weak approval says: “Win-back campaign ready. 48,210 recipients. Approve?” A useful approval begins with the change: 12,840 additional people have no purchase in the last 180 days; the offer moved from free shipping to 15%; the send moved from local morning delivery to immediate global delivery; and a reminder branch was added.

Review handoff

Change, consequence, evidence, choice

Changed
Four material fields differ from the approved plan; all other message, sender, and suppression controls remain fixed.
Consequence
The proposal reaches a less recent audience, creates a larger incentive liability, and adds a second possible send.
Evidence
Audience query time, exclusions, incentive cap, link checks, rendering, and a deliverability forecast are attached.
Choice
Approve v12, remove dormant recipients, restore local scheduling, drop the reminder, request evidence, or decline.

If the reviewer narrows the audience and removes the reminder, the agent creates v13. The new review highlights those two removals and preserves the unresolved offer and schedule changes. Nothing is sent merely because the conversation sounded complete.

MCP can carry the pause; the product must carry the meaning

In an MCP-connected workflow, a server may need more information or a human decision while a client is handling a request. The current draft elicitation specification defines structured form and URL modes, requires clear identity and decline paths, and separates sensitive interactions from ordinary in-client data collection.

That protocol boundary is valuable, but it does not decide what a marketer needs to see. A raw function name and JSON arguments may be technically accurate and practically unreadable. Moosewave should translate the tool call into the campaign's audience, message, timing, budget, safeguards, uncertainty, and diff, while retaining the raw call for inspection.

Decline and cancel are normal outcomes. The agent must handle them without retrying through a different tool, shrinking the description until the same action looks harmless, or treating silence as consent. A request for approval is a question, not an error state to route around.

The click needs a decision receipt

After approval, preserve what the person actually saw: the plan identity, semantic diff, policy checks, linked evidence, remaining uncertainty, available choices, decision, approver, and time. Then connect that record to the execution identity and provider receipts.

This makes later questions answerable. Did the campaign that ran match the campaign that was approved? Was a material edit made after review? Did a requested exclusion reach the final audience? Did the action remain inside its autonomy budget? If something went wrong, the receipt becomes the starting point for containment and recovery.

Do not call a hidden model explanation the audit trail. Store the external facts, policy results, versions, decisions, tool arguments, and observed outcomes. Those are the parts an operator can inspect, reproduce, and dispute.

How this should feel inside Moosewave

A person gives Moosewave a goal. The agent prepares a private plan using scoped connected data, runs audience, policy, link, rendering, and deliverability checks, then opens a review surface focused on material change.

Desktop can hold the complete comparison. Mobile can lead with consequence and changed fields, then let the reviewer inspect evidence or narrow the plan. Both surfaces refer to the same immutable plan version. Approving on a phone must not mean approving a different summary than the one prepared on desktop.

After the decision, Moosewave either closes the proposal, prepares the requested revision, or executes the exact bound plan. The evidence layer then joins approval, send receipts, placement, engagement, and customer outcomes into one history.

The product should make careful work feel faster because the right difference is already on the table, not slower because a human has been inserted as a ceremonial obstacle. Explore the full connected ecosystem or follow one goal end to end in the product walkthrough.

Frequently asked questions

Direct answers about human-in-the-loop approvals, semantic diffs, stale decisions, MCP elicitation, and audit receipts.

What is a human-in-the-loop approval for an AI agent?

It is a bounded decision in which a person reviews a proposed tool action before execution and explicitly approves, narrows, changes, or rejects it. A useful approval includes the action, arguments, affected scope, important differences from the approved baseline, checks, uncertainty, and expected side effects.

What should an AI-agent approval screen show?

At minimum it should show the goal, exact action, audience or records affected, message or payload, timing, cost, exclusions, policy checks, uncertainty, downstream effects, reversibility, and the version being approved. It should emphasize what changed rather than making the reviewer reread everything.

Why is a diff important in an approval workflow?

A diff directs scarce human attention to changed facts. It makes audience expansion, altered claims, new tools, higher cost, later edits, and removed safeguards visible. Without a baseline and proposed state, an Approve button may record a click without supporting an informed decision.

Should every AI-agent action require approval?

No. Requiring approval for every low-risk, reversible read can create fatigue and teach people to click through. Approval should follow impact, novelty, uncertainty, data sensitivity, and reversibility. High-impact or boundary-changing actions deserve stronger review.

Does high model confidence remove the need for approval?

No. Confidence and authority answer different questions. A model may be confident about a draft while lacking permission to contact a larger audience, change a discount, use sensitive data, or spend beyond a workspace limit. Policy and impact determine authority.

What happens if an approved campaign changes later?

Material edits should invalidate the approval. Bind approval to a stable plan version or digest covering the audience query, exclusions, content, links, sender, schedule, budgets, and connected side effects. Cosmetic changes can follow an explicit policy, but the system should never silently reuse stale approval.

How should MCP tools ask for human input?

The MCP elicitation flow lets a server request structured input through a client while preserving review and decline paths. The approval interface still needs domain context: who is asking, why, what exact tool call is proposed, what data and effects are involved, and what will happen after acceptance.

What should be recorded after an AI-agent approval?

Record the approver identity, approved plan version, displayed diff, decision, timestamp, policy and preflight results, execution identity, and later receipts. Do not store hidden reasoning as the basis of consent; store the concrete evidence and action the person actually reviewed.

Sources and further reading

From field note to next move

Turn the question into a reviewable plan.

Give Moosewave the outcome you want. The goal carries into a guided workspace with its scope, approval points, and evidence still attached.

Journal handoffGuided workspace · no live actions
Enter to preview · Shift + Enter for a new line

Opens a guided workspace. Nothing is sent or changed.

  1. 01UnderstandQuestion and evidence
  2. 02PlanScope and exclusions
  3. 03ApproveExact proposed action
  4. 04VerifyResult and receipt
One plan. One visible diff. One decision receipt.

Make the consequence visible before the click.

Follow a goal through scoped data, a reviewable proposal, explicit approval, execution, and evidence inside Moosewave.