cd /news/artificial-intelligence/conversation-stenography-hide-secret… Β· home β€Ί topics β€Ί artificial-intelligence β€Ί article
[ARTICLE Β· art-64270] src=github.com β†— pub= topic=artificial-intelligence verified=true sentiment=Β· neutral

Conversation Stenography: Hide secret messages in normal looking conversations

A new open-source tool called Conversation Stenography lets users hide encrypted secret messages inside innocent-looking chat text generated by a local AI model, bypassing government surveillance of messaging apps. The proof-of-concept tool works with any messaging platform and encrypts messages so that only the intended recipient can decode them.

read7 min views1 publishedJul 18, 2026
Conversation Stenography: Hide secret messages in normal looking conversations
Image: source

Hide secret messages inside normal-looking chat text.

Conversation Stenography lets two people have a completely private conversation through any messaging app (WhatsApp, Telegram, Signal, iMessage, email, or even Instagram DMs). Your secret messages are encrypted and then disguised as innocent, natural-sounding text generated by a local AI model. No one reading the chat can tell there's a hidden message.

  • Governments are moving toward scanning private messages
  • Sending normal encrypted messages is risky because it might flag you on basis of suspicioun
  • Today it's "just CSAM." Tomorrow god knows what

Example:You type"meet me at the coffee shop at 3pm"

and Conversation Stenography generates something like"Hey, I was just thinking about that recipe you mentioned. It sounds amazing, especially the part about the fresh basil."

which is what gets sent in your chat app. Your friend's Conversation Stenography decodes it back to"meet me at the coffee shop at 3pm"

.

Your actual messages never leave your device unencrypted. The messaging platform only ever sees innocent cover text.

Caution

Educational Use Only This project is provided for educational and research purposes. Engaging in any unauthorized or illegal activities is strictly prohibited. The creator assumes no liability for any misuse.

Warning

This is a proof of concept and still has multiple issues

git clone https://github.com/nethical/conversation-stenography.git
cd conversation-stenography
go build -o conversation-stenography ./cmd/conversation-stenography
./conversation-stenography

On first run, Conversation Stenography walks you through everything:

  • Lets you pick an AI model (with recommendations for your system)
  • Downloads the model automatically
  • Creates your config file

That's it. You're ready to chat.

You do not need two computers or phones to verify that Conversation Stenography works. After setup, start a local two-person simulation:

./conversation-stenography simulate

Enter your shared secret phrase when prompted. The terminal starts as Alice:

Alice> Meet me outside at six.
  Generating and transporting cover text...

  Cover text (what the messaging app would see):
  <innocent-looking generated message>

  Bob decoded: Meet me outside at six.

Bob> That works for me.

Each turn uses two independent protocol participants. One generates the cover text and the other decodes it, then the prompt automatically switches users. This exercises the same encryption, model encoding, decoding, and conversation chain used between separate devices.

Simulation commands:

Command What it does
/switch
Switch the active user without sending
/show
Show the simulated plaintext conversation
/help
Show simulation help
/quit
Exit; simulation state is not saved

Names and the test conversation can be customized:

./conversation-stenography simulate -user-a Alex -user-b Samir -conversation test-chat
./conversation-stenography

The tool prompts you for a conversation name and your name, then drops you into the chat:

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚        πŸ”’  Secure Chat Active       β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  Conversation:  coffee-plans
  You are:       alex

  HOW TO USE:
  β€’ Type a message and press Enter β†’ generates cover text to copy
  β€’ /paste SENDER β†’ paste a message you received from someone
  β€’ /help β†’ see all commands
  β€’ /quit β†’ save and exit

alex>

Just type your secret message:

alex> Hey, can we meet tomorrow at noon?
  ⏳ Generating cover text...

  β”Œβ”€β”€β”€ COPY THIS into your messaging app ───┐

  I was thinking about trying that new place downtown.
  Have you been there before? I heard they have great pasta.

  └─── END β€” send as alex β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Copy the cover text and paste it into WhatsApp/Telegram/Signal.

When your friend sends you a response through the messaging app:

alex> /paste bob
  Paste the exact message received from bob below.
  Then type /end on a new line when done:

Yeah the pasta place sounds great! My friend went last week
and said the carbonara was incredible.
/end

  πŸ“© Message from bob:
  Sure, noon works! See you there.
Your secret message
        ↓
   [AES encryption]
        ↓
   [AI model generates innocent text
    that encodes the encrypted bytes
    in its token choices]
        ↓
Normal-looking chat text  β†’  WhatsApp/Telegram/Signal  β†’  Friend's Conversation Stenography
        ↓                                                       ↓
   [AI model recovers                                   [Same process
    the encrypted bytes                                  in reverse]
    from token choices]                                        ↓
        ↓                                              Your secret message
   [AES decryption]
        ↓
  Original message

Key security properties:

AES-SIV encryptionβ€” military-grade authenticated encryption** Conversation chain**β€” every message is cryptographically linked to the previous one; tampering, deletion, or reordering is detected** Local AI model**β€” the model runs entirely on your device, nothing is sent to the cloud** Shared secret phrase**β€” derived using PBKDF2 with 600,000 rounds; never stored on disk

Both people need the exact same configuration:

Meet in person and agree on:- A secret phrase(6+ random words, e.g."purple elephant dances under crimson moonlight"

) - A conversation name(e.g."coffee-plans"

) - The same model(e.g. both pick option 1 in the setup wizard)

  • A

Each person runs:

./conversation-stenography

Exchange messages through any messaging app β€” just copy/paste the cover text.

Important

Both people must process messages in the exact same order they appear in the messaging app. If you miss a message, use /paste

to process it before sending your next reply.

Command What it does
./conversation-stenography
Start chatting (or first-run setup)
./conversation-stenography setup
Re-run the setup wizard
./conversation-stenography simulate
Test two independent users on one device
./conversation-stenography conversations
List your saved conversations
./conversation-stenography chat -conversation NAME -me NAME
Start with explicit flags
Command What it does
(just type)
Send an encrypted message
/paste NAME
Decode a received message from NAME
/send
Multi-line message (end with /end )
/show
Show conversation history
/status
Show sync info (useful for debugging)
/help
List all commands
/quit
Save and exit

The setup wizard offers these models:

Model Size Runtime Best for
Llama 3.2 3B (4-bit)
~2 GB MLX Apple Silicon Macs (recommended)
Llama 3.2 1B (4-bit)
~1 GB MLX Apple Silicon (lightweight)
Llama 3.1 8B (4-bit)
~5 GB MLX Apple Silicon (best quality)
GPT-2
~500 MB Transformers Any system
GPT-2 Medium
~1.5 GB Transformers Any system (better quality)

Go 1.22+(to build)** Python 3.9+**

The setup wizard creates an isolated virtual environment when necessary and installs mlx-lm

(Apple Silicon) or torch + transformers

(other systems), plus huggingface-hub

. You do not need to install the hf

command separately.

For automation and scripting:

Variable Purpose
CONVERSATION_STENOGRAPHY_SECRET
Shared phrase (alternative to interactive prompt)
CONVERSATION_STENOGRAPHY_KEY
Base64 key (legacy, prefer CONVERSATION_STENOGRAPHY_SECRET )
CONVERSATION_STENOGRAPHY_CONFIG
Path to config file (default: conversation-stenography.local.json )
CONVERSATION_STENOGRAPHY_MODEL
Override model path
CONVERSATION_STENOGRAPHY_PYTHON
Override Python path
CONVERSATION_STENOGRAPHY_RUNTIME
Override runtime (mlx or transformers )

Existing installations can continue using decalgo.local.json

, ~/.decalgo/conversations

, and DECALGO_*

variables while migrating. New files and documentation use the Conversation Stenography names.

For shell automation (e.g. bots, CI, automated relays):

export CONVERSATION_STENOGRAPHY_SECRET='purple elephant dances under crimson moonlight'
./conversation-stenography chat -conversation coffee-plans -me alex

For programmatic multi-party message exchange:

export CONVERSATION_STENOGRAPHY_KEY="$(openssl rand -base64 32)"

printf 'hi alex' | ./conversation-stenography chain-send \
  -conversation friends -state bob.state -from bob > record-1.json

./conversation-stenography chain-receive \
  -conversation friends -state alex.state < record-1.json

Messages must be copied exactly. No autocorrect, no formatting, no smart quotes. Copy and paste the cover text byte-for-byte.Process messages in order. Both people must paste received messages in the exact order they appear in the messaging app.Same model required. Both people must use the same AI model, same version, same settings. The setup wizard handles this.The secret phrase is never stored. You'll need to re-enter it each time you start Conversation Stenography (or setCONVERSATION_STENOGRAPHY_SECRET

).

  • Messages are encrypted with AES-SIV(Synthetic Initialization Vector), which provides both confidentiality and integrity. - Every message is chained β€” each carrier authenticates the sender, conversation ID, message index, and the hash of all previous messages.
  • The shared phrase is stretched with PBKDF2-HMAC-SHA-256(600,000 iterations). - The AI model runs 100% locally. No API calls, no cloud, no telemetry. - Conversation state is encrypted at rest with AES-GCM.
git clone https://github.com/nethical6/conversation-stenography.git
cd conversation-stenography
go build -o conversation-stenography ./cmd/conversation-stenography
go test ./...

See LICENSE for details.

── more in #artificial-intelligence 4 stories Β· sorted by recency
── more on @conversation stenography 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/conversation-stenogr…] indexed:0 read:7min 2026-07-18 Β· β€”