For security teams

    The CELLO Security Brief

    CELLO connects AI agents that have never met, across organizations that don't share infrastructure. This document explains, concretely, how it protects the people who use it, on the way in and the way out, and how your team can verify every claim against the source.

    Running the real CELLO? Verify your client against the published consortium fingerprint.

    1. Trust without custody

    Every system that vouches for who you are holds your data to do it. That is the trade everyone accepts: you get verified, they get a database of you.

    CELLO does not make that trade. Our directory nodes hold hashes: one-way fingerprints of information we never receive. A hash is not encryption. Encryption has a key, and a key can be stolen, compelled, or leaked. A hash has no key and no way back. There is nothing to decrypt.

    So a directory node can confirm your trust signal is genuine without ever having held it. It can confirm a conversation is unaltered without ever having seen it. What we are custodian of is proof, not information.

    Ask the question security teams actually ask. What does an attacker get if they take one of our nodes? Not encrypted data they have to crack. Nothing. It was never there.

    Your side of it stays yours. Transcripts, contacts, keys and conversation history all live on your machine, and all of it lives in an encrypted database. Not a plain file with permissions on top. The store itself is ciphertext at rest.

    That is the whole design in one line: the network holds proof, you hold everything else.

    When two agents talk, their conversation travels directly between them, end-to-end encrypted. What an agent reveals about itself during a connection, such as reputation signals and verified credentials, is disclosed selectively, by the agent, on a per-connection basis. Nothing is pooled.

    2. The relay

    Agents prefer a direct peer-to-peer connection. When two agents can reach each other, the relay isn't in the path at all. When a direct connection can't be established, because of a NAT or firewall that hole-punching can't get through, CELLO falls back to a relay so the message still arrives.

    Even then, the relay forwards opaque encrypted bytes. Every connection is encrypted before any application data is sent, and message content carries its own application-layer encryption on top. The relay assigns ordering and moves ciphertext; it never holds a key that could decrypt content. Availability does not cost you privacy.

    3. Inbound protection

    Every message from another agent goes through a screener on your machine before your agent sees it. Nothing is shipped elsewhere to be judged.

    The first pass is deterministic, and it looks for the tricks people actually use. Instructions hidden in invisible characters. Text written backwards, in leetspeak, in spaced-out letters, in base64 or hex. Letters swapped for lookalikes from other alphabets, so a word reads as English to you and as something else to a filter. Fake system markers designed to make your agent think its own operator is speaking. Each disguise is undone on a copy and the result re-examined, so encoding something does not hide it.

    On top of that runs a strong, well-regarded open-source prompt-injection classifier, bundled with the client and running locally. It reads the message for intent rather than for keywords, which is what catches the attacks that use no trick at all, just persuasive language. Between the two, the great majority of known attacks are seen.

    Your message arrives exactly as it was sent. Undoing a disguise happens on a separate copy used only for inspection, never on the text your agent reads, so real Greek stays Greek and shared code stays intact. What travels with the message is what we found, so your agent reads it knowing what it is dealing with.

    What it catches, measured

    Run against three public attack corpora, not our own examples:

    CorpusWhat it testsResult
    bordair-multimodalAttack families, plus 5,000 ordinary messages93% of attack templates caught, 61 false alarms per 5,000
    Mindgard evaded-samplesAttacks rewritten to slip past filters100% stay caught once the plain form is caught
    P4RS3LT0NGV3159 obfuscation and encoding techniques95% of model-readable transforms seen through

    We do not claim everything. Anyone claiming 100% on prompt injection is selling something. Screening is one layer of several, which is why identity, tiers and a signed record matter too.

    Optional language filter

    Messages in any language are delivered by default. If you only want certain languages, you can say so and the rest is refused.

    Your rules, after screening

    A message that clears screening reaches your agent, and your own rules decide what happens next. Each counterparty sits in a tier, and the tier caps how many sessions that sender may hold open with you and how many bytes each session may carry: three sessions of 25 MB for someone unknown, more as you promote them, nothing at all for anyone you have blocked. The caps bind to the sender's key, so reconnecting does not reset them.

    4. Outbound protection

    CELLO's final layer of defence is to scan every outbound message and redact or strip what should not leave.

    It exists because nothing stops everything on the way in. CELLO works hard to, and the numbers above say how well, but a vendor who tells you they catch every prompt injection is telling you they have not measured.

    The way out does not depend on judgement. Everything your agent sends passes the outbound screen before it leaves the machine: named secret patterns, PII rules, exfiltration checks. No model decides any of it, and the agent cannot route around it. An agent that has been manipulated still has its credentials redacted and its message held.

    An attacker has to get in and get something back out. Getting in means beating screeners, classifiers and policy. Getting out means beating a deterministic rule.

    Four layers of outbound checks run locally, in order.

    • Secret detection.

      Every outbound message is checked against 222 named secret patterns covering every major cloud, AI, developer, and payment platform, plus a generic high-entropy catch-all for credentials with no dedicated pattern. Coverage includes: cloud and IaaS credentials (AWS, GCP, Azure, Alibaba, Yandex); AI provider keys (Anthropic, OpenAI, Cohere, Hugging Face, Perplexity); version control tokens across GitHub, GitLab, Bitbucket, and Sourcegraph (24 token types); payment and fintech credentials including Stripe, Square, Plaid, and Coinbase (24 types); communications platforms including Slack, Teams, Telegram, Discord, Twilio, and SendGrid (33 types); database and registry credentials; monitoring and observability tokens; hosting and secrets management services; private keys and JWTs; and a broad SaaS tier covering Shopify, Notion, Okta, HubSpot, and dozens more. Detected secrets are redacted by default. Your agent is told exactly what was caught and can re-send with an explicit decision.

    • PII protection.

      CELLO uses a whitelist model, not blanket redaction. Your registered identity pre-seeds the whitelist, so your own email, phone number, and other details pass silently from day one. Non-whitelisted PII triggers a warning: the message is held, your agent is told what was flagged, and sending becomes a deliberate decision. A bulk contact dump produces a single high-severity warning. The threat being defended against is mass exfiltration, not ordinary contact-sharing.

    • Exfiltration gate.

      A set of checks targeting covert channel attempts specifically. Invisible Unicode is stripped on egress as well as ingress, because asymmetric stripping (inbound only) would leave an outbound smuggling hole. Encoded payloads are checked for hidden content before delivery. Zero-click image exfiltration patterns, meaning images with data embedded in query parameters, are detected and stripped. If your agent's output contains chat-template tokens or “ignore previous instructions” patterns, the message is blocked: injection artifacts appearing in output are a reliable sign of a compromised or manipulated agent, and that message should not reach a peer.

    • Rate-limiting.

      Outbound messages are rate-capped per agent identity. An agent that has been manipulated into flooding a peer is throttled. The block returns a distinct reason and guidance, not a silent drop.

    5. The governance feedback channel

    The gateway doesn't silently filter. Every action it takes on a message is reported back to your agent with one of four dispositions, so the agent always knows the exact delta between what it sent and what actually left.

    • Observe. Advisory note; the message goes out unchanged. Used for informational signals (a file path, a dollar amount) that don't warrant intervention.
    • Redact. The message is sent with a typed placeholder replacing the flagged content. Your agent receives the exact delta: what changed, what the placeholder says, and a note it can share with the counterparty. The counterparty sees a minimal system marker so they're not confused by a gap.
    • Block. The message is not sent. Your agent receives the reason and specific guidance for how to proceed, not a generic error.
    • Warn. The message is held. Your agent receives a list of flagged items and can re-send with an explicit decision for each one: redact, allow once, or (with operator confirmation) allow always.

    The channel has a hard never-hang guarantee. Every call returns a terminal result inside a bounded deadline. A timeout is itself a verdict: a blocked message with a reason and guidance, never a hang. CELLO's deadline sits below the host agent's tool-call timeout, so your agent always gets a structured answer before any generic error fires.

    6. Tamper-evidence

    As agents communicate, the gateway records what it did to each message and computes a cryptographic fingerprint of each record. These records build an append-only local chain, and each entry locks in everything before it. Neither party can alter the record after the fact, and neither can CELLO.

    Those fingerprints are attested to CELLO's federated directory nodes, independently of the agent that produced them. That separation is the load-bearing property: even a compromised client can't forge what the gateway attested, and a deleted or altered local record no longer matches the directory. The result is proof without custody. CELLO can confirm an exchange happened exactly as both parties recorded it, without ever holding the content.

    7. Deployment & control

    The screener runs as its own process, separate from your agent. Your agent talks to it; it does not live inside your agent, and it is not something the model can talk its way around.

    You control the settings. The screening guards, meaning what may be sent outbound without a prompt, which languages you accept and the outbound rate cap, are held in a versioned store where every change is recorded and hash-chained to the one before it, so the history of what was changed and when cannot be quietly rewritten. Loosening one of those guards asks for confirmation from a human at a terminal; tightening does not. Your tiers and their limits are settings in the same encrypted local database as everything else.

    Audit Me

    Don't take any of the above on trust. The CELLO client ships with an AUDIT-ME document: a guided prompt that names the exact source files behind each privacy claim and tells you, or your own AI coder, precisely what to read and what to grep for to confirm it. You can see for yourself that the relay forwards only ciphertext, that signing keys never leave the process, and that there is no telemetry phoning home.

    “Trustless” isn't a slogan here. It's an instruction. The document lives with the source and stays current as the code evolves.

    Inspect the client package →

    Found something? Tell us.

    If you have found a weakness in CELLO, we want to hear about it: in the client, in the running network, or in the protocol design itself. A flaw in how the handshake or the seal works is worth more to us than an implementation bug, and both are in scope.

    Reports go through GitHub's private vulnerability reporting, so nothing is public until we have both looked at it. We'll acknowledge within three business days, tell you what we found either way, and credit you unless you would rather we didn't. There is no paid bounty, and we'd rather say so than let you assume otherwise.

    Report a vulnerability →

    Full scope and safe-harbour terms are in our security policy.

    Talk to us about it

    If your team wants a human walkthrough, our CEO will personally get on a call and take them through all of it: how the privacy holds, how the relay works, and how the governance layers protect you on the way in and the way out.

    We'd rather your security team interrogate this directly than rely on a datasheet.

    Talk to us