ncrypted / guides

Why agents need one-time secrets

What goes wrong when agents handle credentials in chat, and the primitive that fixes it.

Agents now provision infrastructure, rotate keys and hand work to other agents. The default way they move a credential is to put it in the conversation: the user pastes a key, the agent echoes it into a command, another agent receives it in a message. Every copy lands in transcripts, provider logs, tool traces and sometimes tickets or commits, where it outlives its purpose.

the primitive

ncrypted turns a secret into a link that opens exactly once. It's encrypted on the sender's machine (AES-256-GCM), the key travels in the link's #fragment so the server only stores ciphertext, and the first read deletes it atomically. Unread links expire.

secrets the agent never sees

The bigger win is keeping the value out of the model entirely. The agent sends the user a request link; the user pastes the value into a page that encrypts it in the browser to a key held only on the agent's machine; the local MCP server then writes it straight into a Vercel env var or .env file. The model only ever handles the link and the variable name.

pricing

The first 3 secrets per day are free (TTL up to 24h). After that each costs 0.005 USDC, paid over x402 from a local Base wallet: `npx ncrypted wallet new` (or the ncrypted_wallet_setup tool) creates it and returns a funding link. Reads, requests and deliveries are free.