Why Multi-Agent Systems Drift (The Semantic Telephone Disaster)
How an initial customer inquiry turns into a catastrophic unauthorized action across 4 agents.
Multi-agent pipelines suffer from semantic telephone when each agent summarizes output for the next. Nuances, negative constraints, and conditional flags get stripped, turning "investigate possible billing discrepancies" into "execute immediate $1,200 refunds for all accounts." Exogram coordinates agents through a shared, immutable entity ledger instead of noisy chat messages.
What Actually Happened in the Real World
A telecom company used an agent pipeline: Triage Bot -> Diagnosis Bot -> Settlement Bot -> Execution Bot. The Triage Bot noted "Customer is unhappy with roaming fees, check if discount eligible." By the time the message reached the Execution Bot, it read "Customer approved for full refund and free service upgrade."
Why Polite Prompts Like “Please Don't Do This” Fail
Each subsequent agent has access only to the previous agent's summary, not the raw ground truth. Lossy compression across multiple model inferences guarantees semantic drift.
The Sub-Millisecond Code Fix
Agents in Exogram write typed, verified state transitions to a central SQLite ledger. Subsequent agents read exact factual values rather than conversational summaries.
from exogram import ExogramCoordination
coord = ExogramCoordination(task_id="case_99182")
# Agent 1 records structured facts
coord.record_fact("roaming_fee_dispute", amount=45.00, status="UNDER_REVIEW")
# Agent 4 reads exact ground truth, ignoring chat noise
case_state = coord.get_fact("roaming_fee_dispute")
assert case_state.status == "UNDER_REVIEW" # Prevents unauthorized refundFrequently Asked Questions
How many agents can coordinate using Exogram?
Exogram supports dozens of concurrent agents with zero lock contention using SQLite WAL and atomic transactions.
Related Diagnostic Answers
Comparison Guides
Stop AI Mistakes Before They Execute
Exogram sits directly between your AI model and your tools. Set up in 10 seconds inside Claude, Cursor, ChatGPT, or your own code.