# How Spend Reservations and Suppression Gates Make Agent SMS Safer

Canonical URL: https://texttree.ai/blog/sms-spend-and-suppression-gates/
Markdown URL: https://texttree.ai/blog/sms-spend-and-suppression-gates.md
Target query: How do you control AI agent SMS spend and opt-outs?
Page type: blog
Priority tier: 2

## Direct answer

A safe agent SMS path checks account and campaign suppressions and reserves message spend before external execution. TextTree performs those gates before background provider work, keeping opt-outs and financial limits authoritative even when an agent initiates the action.

## Best for

Operators and engineers responsible for messaging cost, opt-outs, and automated execution.

## Key points

- Suppression checks before provider execution
- Ledger-backed cost reservation before queueing
- Background delivery with auditable state transitions

## Pricing or setup

Prepaid balance and account limits bound eligible spend; final provider cost can be reconciled through the ledger.

## Next step

- Review suppression behavior: https://texttree.ai/docs/compliance-and-suppressions/
- Review the outbound execution path: https://texttree.ai/docs/outbound-sms/

## Keywords

- AI agent SMS spend controls
- SMS suppression checks
- SMS cost reservation



## Page content

Automated SMS combines two kinds of risk: contacting someone who should not receive a message and spending money without an effective limit. TextTree handles both as execution gates, not dashboard warnings that run after the send.

## Check suppressions before execution

Workspace and campaign suppressions gate outbound messaging. STOP-derived opt-outs can add recipients to suppression state, and the outbound workflow checks that state before a message reaches provider execution.

Suppressions are not a substitute for the sender's consent and legal responsibilities. They are an application-enforced deny path that helps make known opt-outs authoritative across automated workflows.

## Reserve expected spend before queueing provider work

An accepted message can incur provider cost later, after the API request returns. TextTree therefore checks prepaid balance and workspace limits and creates a ledger reservation before queueing external execution.

The reservation makes concurrent sends compete for the same bounded funds instead of each reading an unchanged balance and overspending it independently. If the spend gate cannot be satisfied, the send does not proceed to the provider worker.

## Keep external work in a durable queue

Once eligibility and reservation succeed, TextTree persists the workflow and enqueues background execution with Oban. Controllers and LiveViews do not call the SMS provider directly.

This ordering creates a clear boundary:

1. Check suppression eligibility.
2. Check balance and spending limits.
3. Reserve expected cost in the ledger.
4. Persist and enqueue the message.
5. Execute through the provider adapter.
6. Reconcile provider events and final cost.

## Reconcile rather than pretend estimates are final

Message cost can depend on destination, encoding, segmentation, and provider results. A pre-send reservation bounds the attempt using the information available at that point. Later processing can reconcile the authoritative result through ledger entries without rewriting financial history.

## Apply the same path to agent-triggered sends

MCP changes how an agent requests an action; it does not create a privileged bypass. An agent-triggered send uses the same domain workflow and gates as other supported outbound paths. That lets teams add an agent interface without duplicating or weakening the controls around cost and recipients.

Read the current [compliance and suppression behavior](/docs/compliance-and-suppressions/), [outbound SMS flow](/docs/outbound-sms/), and [architecture overview](/docs/architecture/).

