#Environments & secrets
An environment is a named bundle of secrets — your API keys, tokens, and config values. Attach one to a chatspace and its values are injected as environment variables when the machine starts, so the agent (and your code) can use them.
Use them for things like a Vercel token, a Supabase service key, a database URL, or any
KEY=VALUE your project needs.
#How it works
- You create environments in the app and fill them with
KEY=VALUEpairs. - Each chatspace is attached to one environment (you pick it when creating, or change it later).
- When the chatspace starts, those values are decrypted and injected as environment variables into the agent's process. They're not written to disk on the machine.
Every account has a built-in Default environment. You can't rename or delete it, but you can put values in it.
#Creating and editing
In the app, go to your settings and open Environments:
- Create a new environment with a name and a block of
KEY=VALUElines (standard.envformat — blank lines and#comments are fine). - Edit an environment to add, change, or remove keys.
- Switch which environment a chatspace uses — the change applies the next time it starts.
A few limits keep things sane: up to 100 keys, up to 8 KB per value, 32 KB total per environment. Keys must look like normal env-var names (letters, digits, underscores; not starting with a digit).
#Values are write-only
For safety, Chatspaces never shows you a secret's value again after you save it. The app
shows your keys (with the value masked, like STRIPE_KEY ••••••), so you can see what's set
and remove or replace keys — but the actual values only ever travel one way: in.
To change a value, just set the key again with the new value. To remove one, delete the key.
#Security
- Secrets are encrypted at rest and decrypted only on our servers, at the moment a chatspace starts, to inject them.
- They're not persisted to the machine's disk — they're passed straight into the agent's process environment.
- Access is audit-logged, and secret-shaped values are scrubbed from logs.
See Provider credentials for the same protections applied to your Claude and Codex logins.
#Special case: GITHUB_TOKEN
If you set a key named GITHUB_TOKEN in an environment, it overrides the GitHub access
Chatspaces would otherwise manage for that chatspace — git and the gh CLI will use your token
instead. This is the way to bring your own GitHub Personal Access Token. See
GitHub access for when you'd want this.
Setting GITHUB_TOKEN to an empty value disables the managed token without supplying a
replacement — useful if you want a chatspace with no GitHub write access at all.
#Opting out of an environment
A chatspace doesn't have to use any environment. If you set it to none, no secrets are injected — the chatspace still works, but anything that needs those keys (deploys, external APIs) won't have them.
If you delete an environment that a chatspace is using, that chatspace is left with no environment (it doesn't silently fall back to Default). Pick a new one before you next start it.
Next: how GitHub access is scoped, or how usage is measured.