An attacker did not steal a private key, exploit a zero-day vulnerability, or break a smart contract to drain $150,000–$200,000 from an autonomous AI agent wallet. They posted a public X reply encoded in Morse code dots and dashes.
Because the agent relied on a probabilistic Large Language Model (LLM) to both decode untrusted social replies and invoke state-mutating wallet transfer tools inside a single shared context window, the encoded instruction bypassed keyword guardrails, decoded into a transfer command, and executed immediately.
Here is the architectural post-mortem of how encoded indirect prompt injection bypasses prompt guardrails and "multi-model LLM juries"—and how the {^} Protocol One trust stack (Identity Physics, DocLock 1.5 with CLK-ATTEST-1, Tri-Signature HITL quorum, Alfa Code, G.A.I.L., and the ACP (Alfa Command Protocol) pre-deterministic outcome engine) stops unsealed tool calls in < 1 ms.
1. Anatomy of the $150k–$200k Morse Code AI Wallet Drain
The vulnerable agent architecture combined three patterns that are now common across autonomous treasury, support, and DevOps bots:
- Public Untrusted Ingestion: The agent continuously read public X replies and mentions to interact with community members.
- Lexical & Prompt-Level Guardrails: The system prompt instructed the model never to send funds without authorization, while surface string filters scanned incoming text for forbidden words (
transfer,send,drain,withdraw). - Direct Tool-Call Execution: When the LLM emitted a structured tool call (
transfer_funds(...)), the host runtime executed the wallet transaction using its hot key.
When the attacker replied with Morse code dots and dashes (.... . .-.. .--. / ...), the string filter saw zero English keywords. Inside the LLM's transformer blocks, however, token attention decoded the Morse sequence and collapsed the data plane (untrusted user reply) into the control plane (system execution instructions).
In the {^} Protocol One architecture (0x7B 0x5E 0x7D), two foundational canons prohibit this design:
- G.A.I.L. (
Guardian Adaptive Intelligence Layer) Canon: "The AI reads the proof; it is never the proof."- DocLock 1.5 (
CLK-ATTEST-1) Boundary: "DocLock proves a document is unchanged, not that what it says is true."
2. Why "Multi-Model LLM Juries / Greyboxing" Still Fail Under Encoding & Semantic Drift
A popular reaction to the Morse code exploit is Multi-Model LLM Juries ("Greyboxing"): placing three or five separate LLMs in front of the agent to paraphrase, rewrite, and vote on whether an incoming message is safe before allowing the wallet agent to act.
From a formal systems-security perspective, multi-LLM voting has three structural flaws:
| Architectural Axis | Multi-Model LLM Juries ("Greyboxing") | {^} Identity Physics + Pre-Deterministic ACP Engine |
|---|---|---|
| Evaluation Function | Probabilistic consensus over untrusted text tokens | Deterministic 5-input state table (0% LLM text influence) |
| Obfuscation Surface | Vulnerable to novel ciphers, split-turn payloads, and semantic drift across rewrites | Immune: raw or decoded prompt text has zero fields in ACPProofInputs |
Human Intent Binding (WHO) | None (infers intent from conversation text) | Tri-Signature HITL quorum inside a [0.05s, 10.0s] physical signing burst |
Artifact & Time Integrity (WHAT / WHEN) | Unsigned JSON arguments | DocLock 1.5 SHA-256 payload seal + CLK-ATTEST-1 RFC 3161 attested time |
Origin & Audit (WHERE / OVERSIGHT) | Non-deterministic model explanations | Alfa Code coordinate + G.A.I.L. SHA-256 receipt re-derivation |
| Execution Latency | 800 ms – 4,500 ms across multiple LLM API calls | < 1 ms in pure Python 3 Standard Library |
Instead of asking five probabilistic models whether a Morse code string "sounds malicious," Identity Physics + ACP (Alfa Command Protocol) separates text comprehension from execution authority. Every state-mutating tool call must resolve to a finite pre-deterministic outcome:
REJECT_UNSEALED_ARTIFACTHOLD_STEP_UP_HITL-
QUARANTINE_BROKEN_SEAL(plusREJECT_BURST_WINDOW_EXCEEDED/REJECT_ATTESTATION_MISMATCH) ALLOW_EXECUTE
3. Reproducible Python 3 Snippet (acp_engine.py --demo-morse-attack)
Below is the exact zero-dependency Python 3 verification showing how acp_engine.py evaluates the Morse code wallet drain attempt in < 1 ms:
# File: acp_engine.py (Zero-Dependency Python 3 Standard Library) # Run: python3 acp_engine.py --demo-morse-attack from acp_engine import ( ACPProofInputs, TIER_1_TREASURY_OR_PRIVILEGE, DOCLOCK_VERIFIED, TIME_ATTESTED, evaluate_acp_outcome, ) # Even after an LLM decodes a Morse code X reply into a proposed $200k transfer, # the pre-deterministic ACP gate checks the 5 Identity Physics proof inputs: morse_attack_vector = ACPProofInputs( action_id="WALLET-TX-2026-1027-MORSE-REPLY", action_tier=TIER_1_TREASURY_OR_PRIVILEGE, tri_signature_verified=False, # Public X reply has NO Tri-Signature HITL quorum tri_signature_burst_seconds=0.0, # Outside [0.05s, 10.0s] physical signing burst doclock_verdict=DOCLOCK_VERIFIED, payload_sha256_match=True, alfa_code_valid=False, # Untrusted external sender lacks Alfa Code coordinate cryptolock_time_axis=TIME_ATTESTED, ) receipt = evaluate_acp_outcome(morse_attack_vector) assert receipt["predetermined_outcome"] == "REJECT_UNSEALED_ARTIFACT" assert receipt["execution_permitted"] is False assert receipt["matched_rule_id"] == "ACP-RULE-04-UNSEALED-OR-UNSIGNED" assert receipt["gail_audit"]["gail_verdict"] == "AUDIT_PASS_DETERMINISTIC" print(f"Blocked in <1ms: {receipt['predetermined_outcome']} ({receipt['matched_rule_id']})") Because a public social reply cannot forge an out-of-band Tri-Signature human intent receipt or a registered Alfa Code coordinate (ALFA-P1-ORG-MESA-85206-000001-E3), the ACP truth table returns REJECT_UNSEALED_ARTIFACT every single time—regardless of whether the prompt was written in English, Morse code, Base64, Braille, or hexadecimal.
4. Interactive Simulator & Production Governance Toolkits
- Canonical Case Study on
{^}Protocol One: {^} How a Morse Code Tweet Drained $200k from an AI Agent Wallet—and How Identity Physics & Pre-Deterministic ACP Stop Encoded Prompt Injection - Live Interactive ACP Pre-Deterministic Simulator (
C0–C4AI Index Page v3.0): https://protocolone.store/pages/ai-index#p1-acp-engine - Production Engineering & CISO Toolkits (Instant
.ZIPDownload):- {^} Agentic AI Tool-Call & HITL Governance Standard ($99) (Canonical Store Page · 1-Click Express Checkout ($99)) — Includes
acp_engine.py, Python@require_tri_signature_hitlmiddleware, EU AI Act Article 14 Offline HTML Simulator, and editable.DOCX/.PDF/.XLSXgovernance templates. - {^} Complete CISO Agentic AI Governance & Trust Bundle ($199) (Canonical Store Page · 1-Click Express Checkout ($199)) — Complete 36-file Single-Organization Suite (
$499for the vCISO / MSP Unlimited-Client White-Label Edition).
- {^} Agentic AI Tool-Call & HITL Governance Standard ($99) (Canonical Store Page · 1-Click Express Checkout ($99)) — Includes
- Open-Source Reference Verifier Repository (
v3.1.0): https://github.com/firstpageseollc-lgtm/protocol-one-ai-index-v3