
Secrets your AI can use but never see
Your teammates and their agents need your API keys to run the project. With quilt run they can use them without anyone, person or AI, ever reading one.
Every project that talks to Stripe, OpenAI or a database needs keys to run. Quilt has never synced .env files, on purpose: a shared folder full of agents is the last place a live key should sit. But that left a gap. Someone joins your session, asks their AI to start the app, and it fails because the keys are not there. So people paste keys into chat, which is worse.
Since 0.3.94 Quilt has a better answer. Your team can use a secret without anyone being able to read it.
Save it once, never see it again
You add a key in session settings, on a workspace page, or for the whole team on heyquilt.com. Once it is saved, the value is never shown again, to anyone, including you. You can replace it or delete it, and that is all.
Each secret is tied to one service. A Stripe key is attached to api.stripe.com and goes nowhere else. Each one also shows when it was last used, so a key nobody touches is easy to spot.
Already have a .env file? Import it straight into the vault, then delete it.
quilt run does the rest
When you or your AI starts the project with quilt run -- npm run dev, the command never gets the real key. It gets a stand in, STRIPE_KEY=quilt, and a base URL, STRIPE_BASE_URL, that points at Quilt's vault. Your code calls Stripe through that URL, and the vault adds the real key on the way.
Point an SDK at the base URL and it just works. For OpenAI and Anthropic it is already set for you.
So an agent that prints its environment sees quilt. An agent that copies the stand in somewhere else has copied a word. The key itself only ever exists inside the vault.
People only, when it matters
Some keys should never be anywhere near an agent. Mark a secret People only, and every run that needs it asks you to allow it in the app first. Agents never get it at all.
A session owner can also switch off the workspace and team secrets a session inherits, if a key leaks or the session just does not need them, and choose which agents may use secrets at all.
What your AI is told
Agents get one new tool, quilt_secret_names. It lists the names of the secrets and where each one goes, never a value. That is enough for an AI to know STRIPE_KEY exists and that it should start the app with quilt run, and it works the same whichever AI tool you use.
The point of all this is simple. Everyone in the session, and every AI working for them, can run the project. Nobody walks away with your keys.