A safety playbook for customer-facing agents

Quarantine stale CRM projections before AI agent follow-up

Stop customer actions when the agent's authoritative work and CRM state disagree. Reconcile the gap, verify the repair, then release follow-up with a durable receipt.

Why this workflow exists

A stale CRM record can turn a capable agent into a reckless one.

When an AI agent uses CRM as context for its next action, projection freshness becomes part of the action's safety boundary.

Imagine an agent that researches an account, sends an approved message, receives a reply, schedules a meeting, and projects those events into CRM. If the meeting projection is delayed, another agent process may still see “no meeting booked” and send an unnecessary follow-up. If a reply outcome is missing, a sales workflow may escalate a prospect who already declined. If a contact merge has not propagated, a message may target the wrong relationship record.

The unsafe pattern is to treat every readable CRM object as current enough. The safer pattern gives each customer-facing action a freshness requirement. Before follow-up, the agent checks whether required source operations have been projected, whether destination mappings are verified, whether relevant connectors are inside their service objective, and whether unresolved incidents affect this account or workflow.

Quarantine is not a generic pause for the whole agent. It is a scoped state for an intended action. The agent can still research, draft, summarize, or ask for review while external follow-up remains blocked. That keeps productivity high without pretending uncertainty is authority.

The source of truth also needs definition. CRM may be authoritative for human-edited opportunity stage and ownership, while the agent operation registry is authoritative for whether one message was sent and whether one meeting action completed. A freshness gate evaluates the required authorities for the next action rather than declaring one database universally correct.

Release requires evidence, not elapsed time. The system reconciles unknown outcomes, repairs missing projections with idempotent upserts, verifies destination state, refreshes any dependent read model, and creates a release receipt. If uncertainty remains, the action stays quarantined or routes to a human with a concise exception packet.

This guide builds that control as an operational workflow: define the protected decision, calculate scope-aware freshness, classify quarantine reasons, reconcile safely, verify downstream state, and release exactly one follow-up operation.

The operating model

Gate the action, not the entire assistant.

Protected follow-up operation

Create the follow-up as a durable intent before sending. Bind the account, contact, channel, purpose, draft version, required CRM objects, freshness budget, and approval. Its state can become ready, quarantined, released, sent, canceled, or superseded.

Rule: the follow-up cannot acquire send commitment while any required projection is unresolved.

F

Scoped quarantine

Block only the affected action, account, connector, object type, or region. Preserve safe preparatory work and unrelated workflows.

Rule: quarantine has a reason, owner, evidence link, and next check.

Q

Freshness evidence

Compare event time, expected projection deadline, verified destination timestamp, connector health, backlog age, mapping version, and incident scope.

Safe reconciliation

Search destination state by stable external identity before retry. Repair with idempotent upsert, never by replaying the customer-facing action.

Release receipt

Record the evidence that cleared each blocker, the destination objects verified, policy version, releaser, and follow-up operation authorized to continue.

Decision table

Translate freshness into deterministic action states.

Observed conditionFollow-up stateRequired response
All required projections verified inside budgetReadyAcquire normal approval and send commitment. Preserve references to the verified snapshot used.
Projection pending inside expected delayWaitSchedule another evaluation. Continue draft or research work, but do not send.
Projection exceeds freshness objectiveQuarantined: staleOpen scoped incident or queue item, identify missing source-to-destination edge, and begin reconciliation.
Connector timeout after write requestQuarantined: unknownRead destination by stable external key before any retry. Classify created, rejected, or still unknown.
More than one destination recordQuarantined: duplicatePrevent action, preserve both references, apply approved merge or deletion rules, then verify cardinality.
Destination differs on human-owned fieldReview authorityDo not overwrite automatically. Respect field ownership and route material conflicts to a human.
Mapping version is obsoleteQuarantined: mappingReproject under the current transformation using idempotent identity, then validate associations and field semantics.
Record was intentionally deleted or mergedCancel or redirectFollow tombstone and merge policy. Do not blindly recreate a human-deleted record.
Repair verified but read model remains staleWait: downstreamRefresh cache, index, or analytical model and verify the exact read surface the agent will use.
Required evidence unavailable beyond deadlineHuman escalationSend an exception packet with proposed action, uncertainty, customer risk, evidence gathered, and safe options.
Human approves despite bounded stalenessException releaseRecord explicit scope, expiration, actor, reason, and prohibited assumptions. Create a fresh follow-up operation.
Source operation was supersededCanceledLink the replacement operation and ensure the stale intent cannot later resume from a delayed callback.

Do not reduce this table to a single global “CRM healthy” flag. One connector can be healthy overall while a specific object is missing. One account can be safe for a service update and unsafe for a sales follow-up because the two actions require different fields and event histories.

Calculate the gate from declared dependencies. A follow-up after a meeting may require verified meeting outcome, contact association, opt-out state, owner, and opportunity stage. A shipping update may require order status and destination but not forecast category. Narrow dependencies make quarantine both safer and less disruptive.

Interactive quarantine simulator

Would this follow-up be released?

Quarantined: stale

Do not send follow-up

The verified CRM projection is older than this workflow permits. Keep the intended follow-up scoped in quarantine and reconcile the source operation to destination state.

18Observed minutes
-3Budget margin

Next evidence: verify the destination record and refresh the exact CRM read used by the agent.

Implementation sequence

Detect, quarantine, reconcile, verify, release.

The control is only trustworthy when every transition is durable and retries cannot skip the gate.

Define

Declare dependencies and freshness budgets

For each external action type, list the CRM objects, fields, associations, and source events that must be current. Define a budget by workflow consequence, not convenience. Record field authority, allowed exceptions, escalation owner, and what evidence qualifies as verification.

Detect

Evaluate the exact action scope

Create the intended follow-up operation, resolve customer identity, and gather the latest authoritative source operations. Compare them with CRM by stable external identity. Include connector health and incident scope, but never substitute aggregate health for object-level verification.

Quarantine

Persist a blocker before scheduling send

Write quarantine state transactionally with the follow-up operation. The send worker must require a valid release token or ready state; a queue retry cannot bypass it. Store reason code, evidence references, first observed time, last checked time, owner, and next evaluation.

Reconcile

Repair projection without repeating the business action

Search CRM using the stable destination key and source operation reference. Resolve unknown writes, deduplicate logical records, apply current mapping, and respect human-owned edits. Use idempotent upsert for projection repair. Never resend a message or recreate a meeting merely to repair CRM.

Release

Verify the read surface and issue a receipt

Check the final CRM object and any cache or index the agent will actually read. Generate a release receipt linking repaired operations, verified objects, policy and mapping versions, actor, and timestamp. Release only the intended follow-up; delayed callbacks cannot revive superseded work.

State model

Make quarantine visible and recoverable.

Ready

Dependencies are verified inside their budgets. The action may proceed through ordinary approval and commitment.

Waiting

A projection is pending but still within expected delay. Schedule reevaluation without creating a second action.

Quarantined

Freshness, identity, mapping, count, or outcome is unsafe. External commitment is blocked with a reason.

Escalated

Automatic reconciliation cannot establish authority before the deadline. A human receives an exception packet.

Released

Evidence clears every blocker or documents a bounded exception. A receipt authorizes one specific operation.

State transitions should be append-only events or otherwise auditable. Operators need to know why an action entered quarantine, what changed, and who released it. A mutable boolean such as paused=true is too weak: it loses reason, scope, history, and the link between evidence and release.

Expiration is essential. A release based on a verified snapshot should not remain valid forever. If the action waits beyond its release window, customer state may change again. Reevaluate dependencies and issue a new release rather than carrying stale authority forward.

Failure-injection drills

Test the dangerous moments, not only the happy path.

Successful create with a timed-out response

Configure the CRM test adapter to create an activity and then withhold the response until the client times out. The first worker should mark the projection outcome unknown. A second worker or retry must search by the same stable external key, discover the existing activity, attach its destination ID, and close the projection without another create.

Verify that the follow-up remains quarantined throughout uncertainty, that exactly one CRM activity exists, and that the repair does not resend the original customer message. The release receipt should reference the initial attempt, reconciliation read, found destination object, and final verified timestamp.

Delayed callback after cancellation

Create a follow-up, place it in quarantine, then cancel or supersede it while a provider or connector callback is delayed. Deliver the callback after the replacement operation is active. The late event may update evidence for the original operation, but it must not release, reschedule, or otherwise revive the canceled follow-up.

Verify monotonic terminal-state rules and operation identity. The replacement should retain its own dependencies, approval, and release. A callback handler that queries only by account or contact can accidentally affect the newest operation; require the exact operation and attempt identity.

Human edit during projection repair

After the agent writes a record, have a seller change the owner, association, or outcome before the repair job runs. The source and destination will differ, but the mismatch is not automatically stale data. The repair process should classify each field by authority and preserve the human-owned value while repairing agent-owned fields.

Verify that no oscillating write loop begins, the operator can see why the values differ, and the release decision uses the resolved business state. For material conflicts, create a human review packet instead of silently choosing whichever update arrived last.

Stale read model after a correct CRM repair

Repair the CRM object successfully while intentionally delaying the cache, search index, warehouse, or local agent memory that supplies follow-up context. Destination verification alone should not release the action if the agent still reads stale state. The gate must name and verify the actual read surface required by the protected decision.

After refresh, query the read model by the same customer and operation references, compare critical fields, and only then issue release. This drill catches a common partial fix: the system of record is correct while the autonomous process remains wrong.

Minimum release receipt

Bind evidence to one authorized continuation.

The receipt is not a decorative log message. The send path validates its operation identity, policy version, expiration, and blocker clearance before commitment. Store sensitive traces separately and link them through controlled evidence references.

{
  "follow_up_operation_id": "followup_...",
  "account_reference": "acct_...",
  "quarantine_reasons_cleared": ["projection_stale"],
  "required_dependencies": [
    {"source_operation_id": "op_...",
     "destination_object_id": "crm_...",
     "verified_at": "...",
     "mapping_version": "..."}
  ],
  "read_surface_verified": "crm_activity_index",
  "policy_version": "...",
  "released_by": "system-or-human-reference",
  "released_at": "...",
  "expires_at": "..."
}

Run the drills with duplicate callbacks and worker crashes at every boundary. Crash after quarantine write, after CRM upsert, after destination verification, and after receipt creation but before queue acknowledgement. On restart, each worker should recover from durable state and converge without creating another logical action.

Measure the drill, too. Record time to detection, time to quarantine, reconciliation duration, customer actions prevented, operator steps, and residual uncertainty. A gate that is technically correct but impossible to diagnose will invite manual bypasses during the first real incident.

Applied agent workflows

Use the same gate across different actions.

Text-message follow-up

Require current reply outcome, opt-out status, contact mapping, and last-send receipt before another outbound message can commit.

Text-message AI assistant
T

Browser-based CRM entry

After an ambiguous form submission, reconcile destination history before retry. Quarantine prevents two records and two downstream follow-ups.

Computer-use cache
B

Campaign website leads

Verify lead capture, enrichment, assignment, and consent projection before an agent contacts a newly submitted lead.

AI agent website building
W

Personal operations

Super can keep quarantine notices, approvals, and release receipts near the user while integrations reconcile in the background.

Explore Super
S
Launch checklist

Prove the gate before it protects real customers.

Every customer-facing action declares required CRM dependencies.
Freshness budgets reflect workflow consequence and customer expectation.
Source operation and destination record identities remain stable across retries.
Quarantine is persisted before any send task can acquire commitment.
Queue retries and alternate workers cannot bypass the release requirement.
Unknown write outcomes reconcile by read before retry.
Repair uses projection upsert and never repeats the customer action.
Human-owned fields and intentional deletions have explicit authority rules.
Destination count, mapping, association, owner, and critical fields are verified.
The exact cache or index read by the agent refreshes before release.
Each quarantine item has reason, owner, evidence, and next evaluation.
Human escalation packets describe risk and safe alternatives concisely.
Release receipts bind evidence to one specific follow-up operation.
Release authority expires and forces reevaluation after delay.
Delayed callbacks cannot resume canceled or superseded operations.
Failure drills cover omission, duplication, timeout, stale cache, merge, and mapping drift.
Implementation FAQ

Questions teams should settle early

Is quarantine the same as an approval queue?

No. Approval asks whether an authorized person or policy permits an action. Quarantine says the system lacks sufficiently current or trustworthy state to evaluate or execute that action safely. A human may approve intent while the action remains quarantined for missing projection evidence.

Should all agent activity stop during a CRM incident?

Usually not. Scope the block to affected connectors, objects, accounts, regions, or action types. Research, drafting, summarization, and unrelated actions can continue. Broad shutdown is appropriate only when incident scope is unknown or the shared dependency affects every protected decision.

How is freshness calculated?

Start from the authoritative event time and the latest verified destination state for the required dependency. Include expected processing and reconciliation boundaries. Keep event time, projection time, and observation time separate. A dashboard refresh timestamp alone does not prove that the underlying object is current.

Can a human override quarantine?

Allow bounded exceptions only under explicit policy. Record actor, reason, scope, expiration, known uncertainty, and prohibited assumptions. An override should authorize one new operation, not permanently disable the gate for an account or connector.

What if CRM is the authoritative source?

Then verify CRM freshness for those fields and compare any agent-side cache or read model against it. The pattern still applies: identify authorities per dependency, prove the action's read surface reflects them, and quarantine when required state is stale or ambiguous.

How should quarantined work be prioritized?

Use customer impact, action deadline, account sensitivity, staleness age, affected volume, and repair confidence. Avoid prioritizing only by queue age. A newly quarantined opt-out mismatch can be more urgent than an older internal note projection.

What metrics show the control is working?

Track quarantine rate by reason, time to reconciliation, prevented unsafe actions, false-positive rate, exception-release rate, repeat incidents, projection lag percentiles, and post-release duplicate count. Monitor whether teams route around the gate, which signals missing ergonomics or policy alignment.

Primary references

Foundations for the workflow

HTTP Semantics, RFC 9110

Standards guidance for method semantics, idempotency, responses, and uncertainty around distributed requests.

PostgreSQL Constraints

Primary documentation for unique and integrity constraints used to protect stable logical identities.

OWASP Logging Cheat Sheet

Guidance for event attributes, sensitive-data handling, access control, verification, and secure operational logging.

These references establish network semantics, integrity, observability, and secure evidence handling. The quarantine state model and implementation sequence are an applied synthesis for personal-agent CRM workflows.

Keep uncertainty from becoming customer action

Quarantine the stale state. Release verified follow-up.

A useful personal agent can keep working while the unsafe action waits, explain the blocker clearly, and resume only when evidence restores authority.

Explore Super