Keep API keys and settings out of chat: global secrets reach every session, session secrets reach one.
A secret is a named value, such as STRIPE_SECRET_KEY, that Alpha hands to your session’s machine as an environment variable. The agent’s commands, the apps it starts and the Shell read it, and the value never passes through the transcript. If the service has a ready connector, such as Gmail or Notion, sign in under Integrations instead.
Never paste a key into the composer. Anything you send lands in the transcript and in the agent’s context. When your draft holds something shaped like a credential, a warning appears above the composer: “That looks like a Stripe secret key. Keys typed here land in the transcript — add it under Secrets instead, and the agent gets it as an environment variable.” It doesn’t block sending.
For global secrets, click your name at the bottom of the sidebar and choose Global secrets. For a session, click + at the end of the workspace’s tab strip and choose Secrets, or click the Secrets tab if it is already open. Viewers of a shared session don’t get this tab.
2
Click Add secret
The Add secret form opens: “An environment variable for the commands the agent runs, from its next command on.”
3
Fill in Name and Value
Type the name your code reads, such as STRIPE_SECRET_KEY, and paste the value. Value is a single-line field, so a service-account JSON goes in as one line.
4
Choose Available in
From a session’s tab, pick This session (“Only here; beats a global of the same name”) or Global (“Every session you own”). The account menu skips this choice and always saves globally.
From a session, Available in asks where the secret goes, and This session is picked first.
5
Save the secret
Click Add secret. The new row appears in the list. If the name already exists there, the form says “STRIPE_SECRET_KEY is already set there — saving replaces its value.” and the button reads Save.
New commands see the secret right away, even in running sessions. Anything already running, such as a dev server, keeps its old environment until it restarts. Ask the agent to restart it, or click Restart shell in the Shell.
In the Add secret form, click Paste a .env instead. The title changes to Paste a .env.
Paste the file into .env contents. Each line holds one NAME=value. Blank lines and # comments are ignored, export NAME=value lines work, and quotes around a value are removed.
Tick Replace values that are already set if the paste should overwrite names you already have. Left unticked, those names are skipped as “already set”.
Choose Available in if you are in a session, then click Import.
Names you already have are skipped unless you tick Replace values that are already set.
If anything is skipped, the paste stays on screen so you can fix it and import again. Add one instead switches back to the single form.
The eye for Reveal is always on a row. The other actions appear when you hover it.
Action
What it does
Reveal / Hide (eye)
Shows the full value in place. Closing the dialog or the tab, or switching sessions, hides it again.
Copy value
Copies the value to your clipboard without showing it.
Replace value (pencil)
Opens Replace STRIPE_SECRET_KEY with a New value field. The name can’t change; to rename, add a new secret and delete the old one.
Delete (bin)
Asks “Delete STRIPE_SECRET_KEY? Sandboxes already running keep it until they restart.” There is no undo.
Values of 12 or more characters show their last four, so you can tell two keys apart without revealing either. Deleting a session secret that shadowed a global one brings the global value back for that session.
The agent is told never to ask for keys in a message. When its work needs a key you haven’t added and no connector covers the service, it posts a card, then carries on with whatever doesn’t need the key and finishes its turn.
Click Add STRIPE_SECRET_KEY on the card. The Add secret form opens with the name filled in and locked, because the agent’s code depends on that exact name.
Paste the value and click Add secret. It saves to this session.
The card changes to “STRIPE_SECRET_KEY is added”, with “It is in the agent’s environment from its next command.”
Click Tell the agent to continue. Alpha sends “I added STRIPE_SECRET_KEY under Secrets — it is in your environment now. Continue.” and the button reads Told the agent.
The request also waits in a tray above the composer, “Add STRIPE_SECRET_KEY · the agent asked for it”, with Add and then Continue, so it never scrolls away. While that tray row is showing, adding the key from either place tells the agent on its own, so you don’t need step 4. The agent is told once, whichever button you use. Viewers of a shared session see the card without its buttons.The agent’s own reach is deliberately narrow:
The agent can
The agent can’t
List the names of this session’s secrets and of your global ones
Read a value through Alpha. Its commands return names only.
Ask you for a key with a card, once per name every two minutes
Add or change a global secret
Save a value it generated itself, such as a random SESSION_SECRET, as a new session secret
Replace a session secret that is already set
Read secrets from its environment, like your app does
Delete a secret. Only you can, from the list.
A session secret the agent saves wins over a global one of the same name in that session, as one of yours would.
Alpha replaces any secret value of 8 or more characters with [redacted] wherever it appears verbatim. That covers the transcript, publish and setup logs, session search, and files that viewers of a shared session open. Your GitHub token and your sessions’ tools keys are masked the same way.A few values are left visible because masking them would only hide ordinary text: the words production, development, localhost, postgres and postgresql, an email address, and a plain web address with no credentials in it. So https://api.openai.com/v1 shows, while a webhook URL or a database URL with a password stays masked.
Masking works only on exact matches. Output that transforms a value, such as base64-encoding it, printing part of it or reversing it, can still expose it. Values under 8 characters are never masked.
Published apps don’t receive your secrets automatically. When you publish, you pick which ones production gets under Environment. See Publish your app.
If a save is refused, the form shows one of these messages.
Rule
Message you see
Names start with a letter or _, then letters, digits and _, up to 64 characters
”name must start with a letter or _ and contain only letters, digits and _ (max 64 chars)“
Names the machine’s shell depends on are reserved
”PATH is reserved — setting it would break the sandbox shell”
A value can’t be empty
”value must not be empty”
One value is at most 8 KB (default)
“value must be at most 8192 bytes”
At most 256 secrets in one place
”at most 256 secrets“
Values in one place: at most 32 KB in total (default)
“secrets total would exceed …”, followed by the cap in bytes
The reserved names are PATH, HOME, PWD, OLDPWD, USER, LOGNAME, SHELL, SHLVL, PS1 to PS4, IFS, ENV, BASH_ENV, SHELLOPTS, BASHOPTS, NODE_OPTIONS, PYTHONPATH, PYTHONSTARTUP, PERL5OPT, TMPDIR, TERM, LANG and CODEX_HOME, plus any name starting with LD_ or FORGE_. Case doesn’t matter.Your global secrets and each session’s own secrets are counted separately. A trailing newline from copy and paste is dropped when the value is saved. Every limit is also listed in Limits.
Sign in to Gmail, Slack or Notion once, so the agent gets tools rather than a raw key.
Use integrations in your app
What “This session’s key” is for, and the two lines an exported app needs in its .env.
Publish your app
Choose which secrets production gets, at build time and at runtime.
The Shell
Check a variable with printenv, and restart the shell to load a secret you added since it opened.
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Alpha","colors":{"primary":"#1A54F0","light":"#749FF9","dark":"#1A54F0"},"logo":{"light":"https://mintcdn.com/lyzr-15a99e0f/peFm_Sv4KgaR4cun/images/logo/light.png?fit=max\u0026auto=format\u0026n=peFm_Sv4KgaR4cun\u0026q=85\u0026s=633788f52e3e9a8128bdaf2d7a62fff6","dark":"https://mintcdn.com/lyzr-15a99e0f/peFm_Sv4KgaR4cun/images/logo/dark.png?fit=max\u0026auto=format\u0026n=peFm_Sv4KgaR4cun\u0026q=85\u0026s=cca4899a3c056f427f80610ac85d1170","href":"https://alpha.new"},"favicon":"https://mintcdn.com/lyzr-15a99e0f/peFm_Sv4KgaR4cun/images/favicon.png?fit=max\u0026auto=format\u0026n=peFm_Sv4KgaR4cun\u0026q=85\u0026s=606bf8d8b1dd77e7fc7d13b52bd06f85","appearance":{"default":"system","strict":false},"background":{"color":{"light":"#FAFAF9","dark":"#0E0E0D"}},"navbar":{"primary":{"type":"button","label":"Open Alpha","href":"https://alpha.new"}},"footer":{"socials":{"github":"https://github.com/suyash-lyzr/alpha-documentation"}},"search":{"prompt":"Search docs"},"seo":{"metatags":{"og:site_name":"Alpha docs"}},"fonts":{"family":"Geist"},"icons":{"library":"fontawesome"},"styling":{"eyebrows":"section","codeblocks":"system","latex":false},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lyzr-15a99e0f","hasAudioNarration":false,"actualSubdomain":"lyzr-15a99e0f","customDomains":[],"gitSource":{"type":"github","owner":"suyash-lyzr","repo":"alpha-documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":"","_id":"6ae0b4f093d54c7ebe38e84c"},"chroma":{"latestBuiltDeploymentHistoryId":"6ae13e48963c9b68664e663c","collectionId":"6f6abaac-a319-483c-b30d-6356d4f82504","liveDeploymentHistoryId":"6ae13e48963c9b68664e663c","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae13f861208be8074bfe6ae","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Build","count":22},{"language":"default","tag":"Get started","count":17},{"language":"default","tag":"Reference","count":12},{"language":"default","tag":"Workspace","count":10},{"language":"default","tag":"Ship","count":8},{"language":"default","tag":"Agents","count":7},{"language":"default","tag":"Connect","count":7},{"language":"default","tag":"Chat with the agent","count":6},{"language":"default","tag":"Sessions","count":6},{"language":"default","tag":"Guides","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--a-canvas:#f0f0ef;--a-bg:#fafaf9;--a-card:#ffffff;--a-fill:#f2f2f1;--a-fg:#161614;--a-soft:#3c3c39;--a-muted:#636361;--a-border:rgb(22 22 20 / 9%);--a-signal:#1a54f0;--a-signal-soft:rgb(26 84 240 / 8%);--a-radius:0.7rem;--a-shadow-card:0 0 0 1px var(--a-border), 0 1px 2px rgb(22 22 20 / 4%), 0 2px 6px rgb(22 22 20 / 4%);--a-shadow-raised:0 0 0 1px var(--a-border), 0 2px 10px rgb(22 22 20 / 7%)}.dark{--a-canvas:#0e0e0d;--a-bg:#0e0e0d;--a-card:#181817;--a-fill:#20201f;--a-fg:#f5f5f4;--a-soft:#d6d6d3;--a-muted:#9f9f9a;--a-border:rgb(255 255 255 / 8%);--a-signal:#749ff9;--a-signal-soft:rgb(116 159 249 / 10%);--a-shadow-card:0 0 0 1px var(--a-border), inset 0 1px 0 rgb(255 255 255 / 4%), 0 1px 2px rgb(0 0 0 / 25%);--a-shadow-raised:0 0 0 1px var(--a-border), inset 0 1px 0 rgb(255 255 255 / 5%), 0 2px 12px rgb(0 0 0 / 30%)}code,kbd,pre{font-family:\"Geist Mono\",ui-monospace,\"SF Mono\",Menlo,monospace!important}#page-title{font-size:1.75rem!important;line-height:1.2!important;font-weight:600!important;letter-spacing:-.025em!important}#header .eyebrow{font-size:.75rem;font-weight:500;letter-spacing:.01em}#content-area .prose{font-size:.9375rem;line-height:1.7}#content-area .prose h2{font-size:1.25rem;font-weight:600;letter-spacing:-.015em;margin-top:2.5rem}#content-area .prose h3{font-size:1rem;font-weight:600;letter-spacing:-.01em}#content-area .prose li,#content-area .prose p{color:var(--a-soft)}#content-area .prose strong{color:var(--a-fg);font-weight:560}#content-area .prose a{text-decoration-color:color-mix(in oklab,var(--a-signal) 45%,transparent);text-underline-offset:3px}::selection{background:var(--a-signal-soft)}#sidebar-content{font-size:.875rem}#content-area .prose table,#table-of-contents{font-size:.8125rem}.callout,.card{border-radius:var(--a-radius)!important;box-shadow:var(--a-shadow-card)}.card{border-color:transparent!important;background:var(--a-card);transition:box-shadow 150ms ease}.card[role=link]:hover,a.card:hover{box-shadow:0 0 0 1px color-mix(in oklab,var(--a-signal) 55%,transparent),0 2px 10px rgb(22 22 20/6%)}.card [data-component-part=card-content-container]{display:flex;align-items:flex-start;gap:.75rem;padding:.875rem 1rem!important}.card [data-component-part=card-icon]{flex:none;width:1.75rem!important;height:1.75rem!important;margin:0!important;display:grid;place-items:center;border-radius:.45rem;background:var(--a-fill);box-shadow:0 0 0 1px var(--a-border)}.card [data-component-part=card-icon] svg{width:.875rem!important;height:.875rem!important;background-color:var(--a-soft)!important}.card [data-component-part=card-title],.card [data-component-part=card-title] *{margin-top:0!important;padding-top:.25rem;font-size:.875rem!important;line-height:1.3!important;font-weight:600;letter-spacing:-.01em}.card [data-component-part=card-content]{margin-top:0!important;font-size:.8125rem!important;line-height:1.5!important;color:var(--a-muted)}.card [data-component-part=card-content] *{font-size:inherit!important;line-height:inherit!important}.callout{border:0!important;background:var(--a-card)!important;font-size:.875rem}.callout [data-component-part=callout-icon] svg{color:var(--a-muted)!important}.callout[data-callout-type=warning] [data-component-part=callout-icon] svg{color:#c27c0e!important}.callout[data-callout-type=check] [data-component-part=callout-icon] svg{color:#1f8a5b!important}.callout [data-component-part=callout-content],.callout [data-component-part=callout-content] p{color:var(--a-soft)!important}[data-component-part=frame]{border-radius:calc(var(--a-radius)*1.4)!important;background:var(--a-fill)!important;border:0!important;box-shadow:0 0 0 1px var(--a-border);padding:.5rem!important}[data-component-part=frame] img,[data-component-part=frame] video{border-radius:var(--a-radius)!important;box-shadow:var(--a-shadow-raised)}[data-component-part=frame-caption]{font-size:.8125rem;color:var(--a-muted)}[data-component-part=step-number]{font-family:\"Geist Mono\",ui-monospace,monospace;font-size:.75rem!important}[data-component-part=step-title]{font-weight:600;letter-spacing:-.01em}#content-area .prose th{font-weight:560;color:var(--a-muted)}.prose :not(pre)>code{font-size:.8125rem;border-radius:.35rem}kbd{display:inline-block;min-width:1.4em;padding:.05em .4em;font-size:.75rem;line-height:1.5;text-align:center;color:var(--a-fg);background:var(--a-card);border-radius:.35rem;box-shadow:0 0 0 1px var(--a-border),0 1px 0 var(--a-border)}.prompt-card{margin:1.5rem 0;padding:.25rem .75rem .5rem;border-radius:calc(var(--a-radius)*1.4);background:var(--a-fill);box-shadow:0 0 0 1px var(--a-border)}.prompt-card-label{margin:.6rem .25rem -.25rem;font-size:.75rem;font-weight:500;color:var(--a-muted)}@media (max-width:640px){#page-title{font-size:1.5rem!important}#content-area .prose table{display:block;overflow-x:auto}}#content-area .prose table{width:100%;table-layout:fixed}#content-area .prose td,#content-area .prose th{overflow-wrap:anywhere;vertical-align:top}#alpha-top-actions{position:fixed;top:.5rem;right:1.5rem;z-index:40;display:flex;align-items:center;gap:1rem}#alpha-top-actions[hidden]{display:none}#alpha-changelog-link{font-size:.8125rem;font-weight:500;color:var(--a-muted);text-decoration:none;transition:color 150ms ease}#alpha-changelog-link:hover{color:var(--a-fg)}#alpha-ask-ai{display:inline-flex;align-items:center;gap:.4rem;height:2rem;padding:0 .5rem 0 .75rem;border-radius:999px;font-size:.8125rem;font-weight:560;color:var(--a-signal);background:var(--a-signal-soft);box-shadow:0 0 0 1px color-mix(in oklab,var(--a-signal) 35%,transparent);cursor:pointer;transition:background 150ms ease,box-shadow 150ms ease}#alpha-ask-ai:hover{background:color-mix(in oklab,var(--a-signal) 18%,transparent);box-shadow:0 0 0 1px color-mix(in oklab,var(--a-signal) 60%,transparent)}#alpha-ask-ai[hidden]{display:none}#alpha-ask-ai kbd{padding:0 .35em;font-size:.6875rem;color:inherit;background:0 0;box-shadow:0 0 0 1px color-mix(in oklab,var(--a-signal) 30%,transparent)}@media (max-width:1023px){#alpha-top-actions{display:none}}.card-group:is([style*=\"--cols:3\"], [style*=\"--cols: 3\"], [style*=\"--cols:4\"], [style*=\"--cols: 4\"]) .card [data-component-part=card-content-container]{display:block;padding:1rem!important}.card-group:is([style*=\"--cols:3\"], [style*=\"--cols: 3\"], [style*=\"--cols:4\"], [style*=\"--cols: 4\"]) .card [data-component-part=card-icon]{margin-bottom:.75rem!important}.card-group:is([style*=\"--cols:3\"], [style*=\"--cols: 3\"], [style*=\"--cols:4\"], [style*=\"--cols: 4\"]) .card [data-component-part=card-title]{padding-top:0}.card-group:is([style*=\"--cols:3\"], [style*=\"--cols: 3\"], [style*=\"--cols:4\"], [style*=\"--cols: 4\"]) .card [data-component-part=card-content]{margin-top:.25rem!important}:root{--content-width:46rem}html.alpha-sidebar-collapsed{--sidebar-width:0px;--content-width:54rem}html.alpha-sidebar-collapsed #sidebar{display:none!important}#alpha-sidebar-toggle{position:fixed;top:.6875rem;left:calc(var(--sidebar-width, 19rem) + .5rem);z-index:40;display:grid;place-items:center;width:1.625rem;height:1.625rem;border-radius:.45rem;color:var(--a-muted);cursor:pointer;transition:color 150ms ease,background 150ms ease}#alpha-sidebar-toggle:hover{color:var(--a-fg);background:var(--a-fill)}html.alpha-sidebar-collapsed #alpha-sidebar-toggle{color:var(--a-signal)}@media (max-width:1023px){#alpha-sidebar-toggle{display:none}}.update-container{flex-direction:column!important;gap:1rem!important}.update-container>div:first-child{position:static!important;width:100%!important;display:flex!important;flex-direction:row!important;flex-wrap:wrap;align-items:center!important;gap:.5rem;padding-bottom:1rem;border-bottom:1px solid var(--a-border)}.update-container [data-component-part=update-description]{order:-1;flex-basis:100%;max-width:none!important;margin:0 0 .125rem!important;font-size:1.25rem!important;line-height:1.3!important;font-weight:600!important;letter-spacing:-.015em;color:var(--a-fg)!important}.update-container [data-component-part=update-label]{padding:0!important;background:0 0!important;font-size:.8125rem!important;font-weight:500!important;color:var(--a-muted)!important}.update-container [data-component-part=update-label]::after{content:\"·\";margin-left:.5rem;color:var(--a-muted)}.update-container [data-component-part=update-tag-list]{display:flex;flex-wrap:wrap;gap:.375rem;margin:0!important}.update-container [data-component-part=update-tag]{margin:0!important;padding:.0625rem .5rem!important;border-radius:999px;font-size:.75rem!important;font-weight:500!important;line-height:1.5!important;color:var(--a-soft)!important;background:var(--a-fill)!important;box-shadow:0 0 0 1px var(--a-border)}.update-container [data-component-part=update-content]{width:100%}.update-container [data-component-part=update-content],.update-container [data-component-part=update-description]{padding-left:0!important;padding-right:0!important}.update-container [data-component-part=update-content]>:first-child{margin-left:0!important}#pagination [data-component-part=pagination-next]>div{justify-content:space-between!important}#pagination [data-component-part=pagination-next]>div>div:first-child{flex:1;align-items:flex-start!important;gap:.125rem}#pagination [data-component-part=pagination-description],#pagination [data-component-part=pagination-title]{width:100%!important;max-width:none!important;text-align:left!important}#pagination [data-component-part=pagination-description]{font-size:.8125rem}"}],"page":{"pagePath":"secrets","slug":"/secrets","pageMetadata":{"title":"Secrets","sidebarTitle":"Secrets","description":"Keep API keys and settings out of chat: global secrets reach every session, session secrets reach one.","href":"/secrets"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Keep API keys and settings out of chat: global secrets reach every session, session secrets reach one.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const secretsTotal=`32 KB in total (default)`;const secretsMax=`256 secrets`;function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Card,CardGroup,Frame,Heading,Note,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`A secret is a named value, such as `,_jsx(_components.code,{children:`STRIPE_SECRET_KEY`}),`, that Alpha hands to your session’s machine as an environment variable. The agent’s commands, the apps it starts and the `,_jsx(_components.a,{href:`/workspace/shell`,children:`Shell`}),` read it, and the value never passes through the transcript. If the service has a ready connector, such as Gmail or Notion, sign in under `,_jsx(_components.a,{href:`/integrations/overview`,children:`Integrations`}),` instead.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Never paste a key into the composer. Anything you send lands in the transcript and in the agent’s context. When your draft holds something shaped like a credential, a warning appears above the composer: “That looks like a Stripe secret key. Keys typed here land in the transcript — add it under Secrets instead, and the agent gets it as an environment variable.” It doesn’t block sending.`})}),`\n`,_jsx(Heading,{level:`2`,id:`global-or-session-where-should-a-secret-live`,children:`Global or session: where should a secret live?`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`Global secret`}),_jsx(_components.th,{children:`Session secret`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Reaches`}),_jsx(_components.td,{children:`Every session you own`}),_jsx(_components.td,{children:`Only the session it was added in`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Manage it in`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Account menu → Global secrets`}),`, or the `,_jsx(_components.strong,{children:`Global`}),` group of any session’s `,_jsx(_components.strong,{children:`Secrets`}),` tab`]}),_jsxs(_components.td,{children:[`That session’s `,_jsx(_components.strong,{children:`Secrets`}),` tab, in the `,_jsx(_components.strong,{children:`This session`}),` group`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Same name in both`}),_jsxs(_components.td,{children:[`Loses. Its row shows an `,_jsx(_components.strong,{children:`overridden`}),` tag (“This session has its own value for it”).`]}),_jsx(_components.td,{children:`Wins in its own session. Every other session still gets the global value.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Good for`}),_jsx(_components.td,{children:`Keys you use everywhere`}),_jsx(_components.td,{children:`A test key, or a value that differs per app`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Removed when`}),_jsx(_components.td,{children:`You delete it`}),_jsx(_components.td,{children:`You delete it, or delete the session`})]})]})]}),`\n`,_jsx(Frame,{caption:`One list shows what this session gets: your global secrets above, its own below.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/secrets-tab-overview.png?fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=5a85ebc9c0fa250ae2adbe842640dd12`,alt:`The Harbor bookings session with the Secrets tab open in the workspace, whose tab strip reads Plan, Preview, Shell, Database, Secrets with its ×, README.md and server.js, followed by +, the GitHub and Share icons, Publish and the files button. The chat on the left shows an answered The agent has questions card and a Proposed plan card titled Automatic class waitlist, above the composer's placeholder Describe what to plan…. In the Secrets tab, a section headed This session holds the card This session's key, with FORGE_TOOLS_URL reading https://alpha.new/api/tools/v1, FORGE_TOOLS_API_KEY masked as dots, and the buttons Reveal, Copy .env lines and Rotate. Below it, a section headed Secrets, with the caption environment variables for this session and an Add secret button at the right, holds a panel with two empty groups: GLOBAL reads None — global secrets reach every session you own., and THIS SESSION reads None — a secret here reaches only this session. Under the panel, a grey note reads Anything the agent runs can read them — only add what you'd hand the agent directly. Values of 8+ characters are replaced with [redacted] in the transcript when they appear verbatim; output that transforms a value can still expose it.`,\"data-og-width\":`2940`,width:`2940`,\"data-og-height\":`1646`,height:`1646`,\"data-path\":`images/secrets/secrets-tab-overview.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/secrets-tab-overview.png?w=280\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=cc3b8911423929316c27fc6bd4afadef 280w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/secrets-tab-overview.png?w=560\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=cc1e24a85eb8f600a727d5f5fd82ce92 560w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/secrets-tab-overview.png?w=840\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=e71005f6da4fb1301330298ec59fd22b 840w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/secrets-tab-overview.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=cc8d0d37d6a027681fb90221718a3321 1100w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/secrets-tab-overview.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=04f0869336b4e1a1b0d9320ae9d341f4 1650w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/secrets-tab-overview.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=ef30a032175984724535f75bc3691446 2500w`})}),`\n`,_jsx(_components.p,{children:`Anything the agent runs can read your secrets, and so can the app it builds. Only add what you’d hand the agent directly.`}),`\n`,_jsx(Heading,{level:`2`,id:`add-a-secret`,children:`Add a secret`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open a list of secrets`,children:_jsxs(_components.p,{children:[`For global secrets, click your name at the bottom of the sidebar and choose `,_jsx(_components.strong,{children:`Global secrets`}),`. For a session, click `,_jsx(_components.strong,{children:`+`}),` at the end of the workspace’s tab strip and choose `,_jsx(_components.strong,{children:`Secrets`}),`, or click the `,_jsx(_components.strong,{children:`Secrets`}),` tab if it is already open. Viewers of a `,_jsx(_components.a,{href:`/sharing`,children:`shared session`}),` don’t get this tab.`]})}),_jsx(Step,{title:`Click Add secret`,children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Add secret`}),` form opens: “An environment variable for the commands the agent runs, from its next command on.”`]})}),_jsx(Step,{title:`Fill in Name and Value`,children:_jsxs(_components.p,{children:[`Type the name your code reads, such as `,_jsx(_components.code,{children:`STRIPE_SECRET_KEY`}),`, and paste the value. `,_jsx(_components.strong,{children:`Value`}),` is a single-line field, so a service-account JSON goes in as one line.`]})}),_jsxs(Step,{title:`Choose Available in`,children:[_jsxs(_components.p,{children:[`From a session’s tab, pick `,_jsx(_components.strong,{children:`This session`}),` (“Only here; beats a global of the same name”) or `,_jsx(_components.strong,{children:`Global`}),` (“Every session you own”). The account menu skips this choice and always saves globally.`]}),_jsx(Frame,{caption:`From a session, Available in asks where the secret goes, and This session is picked first.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/add-secret-form-scope.png?fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=cce0218d821ba96280ab66e65607377d`,alt:`The Add secret dialog, with a close button at its top right. The description reads: An environment variable for the commands the agent runs, from its next command on. The Name field shows the placeholder STRIPE_KEY in monospace. The Value field is empty, with an eye button at its right edge. Under the heading Available in, two option cards sit side by side: This session, selected with a check mark, with a key icon and the line Only here; beats a global of the same name, and Global, with a globe icon and the line Every session you own. The footer holds Paste a .env instead on the left, then Cancel and a dimmed Add secret on the right.`,\"data-og-width\":`964`,width:`964`,\"data-og-height\":`926`,height:`926`,\"data-path\":`images/secrets/add-secret-form-scope.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/add-secret-form-scope.png?w=280\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=ccb7f9f3969f2144fd22bac427c90ccc 280w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/add-secret-form-scope.png?w=560\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=1ffa54fa66ba377d0c5b7e92a2fd0235 560w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/add-secret-form-scope.png?w=840\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=ed16889bb7e48e96e6abcea14b6be30f 840w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/add-secret-form-scope.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=7cee8fb5c91950aeb49287aa0b869afd 1100w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/add-secret-form-scope.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=c966ded49c933ed60746c24a34615e6b 1650w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/add-secret-form-scope.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=650111db1207cb634ad2d3c5b059e909 2500w`})})]}),_jsx(Step,{title:`Save the secret`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Add secret`}),`. The new row appears in the list. If the name already exists there, the form says “STRIPE_SECRET_KEY is already set there — saving replaces its value.” and the button reads `,_jsx(_components.strong,{children:`Save`}),`.`]})})]}),`\n`,_jsxs(_components.p,{children:[`New commands see the secret right away, even in running sessions. Anything already running, such as a dev server, keeps its old environment until it restarts. Ask the agent to restart it, or click `,_jsx(_components.strong,{children:`Restart shell`}),` in the Shell.`]}),`\n`,_jsx(Heading,{level:`2`,id:`import-a-env-file`,children:`Import a .env file`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`Add secret`}),` form, click `,_jsx(_components.strong,{children:`Paste a .env instead`}),`. The title changes to `,_jsx(_components.strong,{children:`Paste a .env`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Paste the file into `,_jsx(_components.strong,{children:`.env contents`}),`. Each line holds one `,_jsx(_components.code,{children:`NAME=value`}),`. Blank lines and `,_jsx(_components.code,{children:`#`}),` comments are ignored, `,_jsx(_components.code,{children:`export NAME=value`}),` lines work, and quotes around a value are removed.`]}),`\n`,_jsxs(_components.li,{children:[`Tick `,_jsx(_components.strong,{children:`Replace values that are already set`}),` if the paste should overwrite names you already have. Left unticked, those names are skipped as “already set”.`]}),`\n`,_jsxs(_components.li,{children:[`Choose `,_jsx(_components.strong,{children:`Available in`}),` if you are in a session, then click `,_jsx(_components.strong,{children:`Import`}),`.`]}),`\n`]}),`\n`,_jsx(Frame,{caption:`Names you already have are skipped unless you tick Replace values that are already set.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/paste-env-import.png?fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=75f6d2a9707e9ae28ca880755ce68537`,alt:`The Paste a .env dialog, with a close button at its top right. The description reads: An environment variable for the commands the agent runs, from its next command on. The empty .env contents box shows two placeholder lines in monospace, STRIPE_KEY=sk_live_… and GITHUB_TOKEN=ghp_…. Below the box, the checkbox Replace values that are already set is unticked. Under the heading Available in, the cards show This session selected with a check mark, Only here; beats a global of the same name, and Global, Every session you own. The footer holds Add one instead on the left, then Cancel and a dimmed Import.`,\"data-og-width\":`964`,width:`964`,\"data-og-height\":`1060`,height:`1060`,\"data-path\":`images/secrets/paste-env-import.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/paste-env-import.png?w=280\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=6d4f97a6edcadf64c13a1d51521db7ae 280w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/paste-env-import.png?w=560\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=be9f239801377057ae92b3694d5507ca 560w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/paste-env-import.png?w=840\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=9a506203ccfc11b3e470b4de568f98ef 840w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/paste-env-import.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=3e59f77cf7042fcb0957344e573a26e9 1100w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/paste-env-import.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=5449e0a57d18246d1e2dbdc314756d53 1650w, https://mintcdn.com/lyzr-15a99e0f/ObBpayiae_4aNgzN/images/secrets/paste-env-import.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ObBpayiae_4aNgzN\u0026q=85\u0026s=557b1a10889b2ad4f0fd8be607babd21 2500w`})}),`\n`,_jsxs(_components.p,{children:[`If anything is skipped, the paste stays on screen so you can fix it and import again. `,_jsx(_components.strong,{children:`Add one instead`}),` switches back to the single form.`]}),`\n`,_jsx(Heading,{level:`2`,id:`copy-replace-or-delete-a-secret`,children:`Copy, replace or delete a secret`}),`\n`,_jsxs(_components.p,{children:[`The eye for `,_jsx(_components.strong,{children:`Reveal`}),` is always on a row. The other actions appear when you hover it.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Action`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Reveal`}),` / `,_jsx(_components.strong,{children:`Hide`}),` (eye)`]}),_jsx(_components.td,{children:`Shows the full value in place. Closing the dialog or the tab, or switching sessions, hides it again.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Copy value`})}),_jsx(_components.td,{children:`Copies the value to your clipboard without showing it.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Replace value`}),` (pencil)`]}),_jsxs(_components.td,{children:[`Opens `,_jsx(_components.strong,{children:`Replace STRIPE_SECRET_KEY`}),` with a `,_jsx(_components.strong,{children:`New value`}),` field. The name can’t change; to rename, add a new secret and delete the old one.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Delete`}),` (bin)`]}),_jsx(_components.td,{children:`Asks “Delete STRIPE_SECRET_KEY? Sandboxes already running keep it until they restart.” There is no undo.`})]})]})]}),`\n`,_jsx(_components.p,{children:`Values of 12 or more characters show their last four, so you can tell two keys apart without revealing either. Deleting a session secret that shadowed a global one brings the global value back for that session.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-happens-when-the-agent-needs-a-key`,children:`What happens when the agent needs a key?`}),`\n`,_jsx(_components.p,{children:`The agent is told never to ask for keys in a message. When its work needs a key you haven’t added and no connector covers the service, it posts a card, then carries on with whatever doesn’t need the key and finishes its turn.`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add STRIPE_SECRET_KEY`}),` on the card. The `,_jsx(_components.strong,{children:`Add secret`}),` form opens with the name filled in and locked, because the agent’s code depends on that exact name.`]}),`\n`,_jsxs(_components.li,{children:[`Paste the value and click `,_jsx(_components.strong,{children:`Add secret`}),`. It saves to this session.`]}),`\n`,_jsx(_components.li,{children:`The card changes to “STRIPE_SECRET_KEY is added”, with “It is in the agent’s environment from its next command.”`}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Tell the agent to continue`}),`. Alpha sends “I added STRIPE_SECRET_KEY under Secrets — it is in your environment now. Continue.” and the button reads `,_jsx(_components.strong,{children:`Told the agent`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The request also waits in a tray above the composer, “Add `,_jsx(_components.code,{children:`STRIPE_SECRET_KEY`}),` · the agent asked for it”, with `,_jsx(_components.strong,{children:`Add`}),` and then `,_jsx(_components.strong,{children:`Continue`}),`, so it never scrolls away. While that tray row is showing, adding the key from either place tells the agent on its own, so you don’t need step 4. The agent is told once, whichever button you use. Viewers of a shared session see the card without its buttons.`]}),`\n`,_jsx(_components.p,{children:`The agent’s own reach is deliberately narrow:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`The agent can`}),_jsx(_components.th,{children:`The agent can’t`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`List the names of this session’s secrets and of your global ones`}),_jsx(_components.td,{children:`Read a value through Alpha. Its commands return names only.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Ask you for a key with a card, once per name every two minutes`}),_jsx(_components.td,{children:`Add or change a global secret`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Save a value it generated itself, such as a random `,_jsx(_components.code,{children:`SESSION_SECRET`}),`, as a new session secret`]}),_jsx(_components.td,{children:`Replace a session secret that is already set`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Read secrets from its environment, like your app does`}),_jsx(_components.td,{children:`Delete a secret. Only you can, from the list.`})]})]})]}),`\n`,_jsx(_components.p,{children:`A session secret the agent saves wins over a global one of the same name in that session, as one of yours would.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-are-values-hidden-in-the-transcript`,children:`How are values hidden in the transcript?`}),`\n`,_jsxs(_components.p,{children:[`Alpha replaces any secret value of 8 or more characters with `,_jsx(_components.code,{children:`[redacted]`}),` wherever it appears verbatim. That covers the transcript, publish and setup logs, session search, and files that viewers of a shared session open. Your GitHub token and your sessions’ tools keys are masked the same way.`]}),`\n`,_jsxs(_components.p,{children:[`A few values are left visible because masking them would only hide ordinary text: the words `,_jsx(_components.code,{children:`production`}),`, `,_jsx(_components.code,{children:`development`}),`, `,_jsx(_components.code,{children:`localhost`}),`, `,_jsx(_components.code,{children:`postgres`}),` and `,_jsx(_components.code,{children:`postgresql`}),`, an email address, and a plain web address with no credentials in it. So `,_jsx(_components.code,{children:`https://api.openai.com/v1`}),` shows, while a webhook URL or a database URL with a password stays masked.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Masking works only on exact matches. Output that transforms a value, such as base64-encoding it, printing part of it or reversing it, can still expose it. Values under 8 characters are never masked.`})}),`\n`,_jsxs(_components.p,{children:[`Published apps don’t receive your secrets automatically. When you publish, you pick which ones production gets under `,_jsx(_components.strong,{children:`Environment`}),`. See `,_jsx(_components.a,{href:`/publish/publish-your-app`,children:`Publish your app`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`name-rules-and-limits`,children:`Name rules and limits`}),`\n`,_jsx(_components.p,{children:`If a save is refused, the form shows one of these messages.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Rule`}),_jsx(_components.th,{children:`Message you see`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Names start with a letter or `,_jsx(_components.code,{children:`_`}),`, then letters, digits and `,_jsx(_components.code,{children:`_`}),`, up to 64 characters`]}),_jsx(_components.td,{children:`”name must start with a letter or _ and contain only letters, digits and _ (max 64 chars)“`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Names the machine’s shell depends on are reserved`}),_jsx(_components.td,{children:`”PATH is reserved — setting it would break the sandbox shell”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`A value can’t be empty`}),_jsx(_components.td,{children:`”value must not be empty”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`One value is at most 8 KB (default)`}),_jsx(_components.td,{children:`“value must be at most 8192 bytes”`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`At most `,secretsMax,` in one place`]}),_jsxs(_components.td,{children:[`”at most `,secretsMax,`“`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Values in one place: at most `,secretsTotal]}),_jsx(_components.td,{children:`“secrets total would exceed …”, followed by the cap in bytes`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`The reserved names are `,_jsx(_components.code,{children:`PATH`}),`, `,_jsx(_components.code,{children:`HOME`}),`, `,_jsx(_components.code,{children:`PWD`}),`, `,_jsx(_components.code,{children:`OLDPWD`}),`, `,_jsx(_components.code,{children:`USER`}),`, `,_jsx(_components.code,{children:`LOGNAME`}),`, `,_jsx(_components.code,{children:`SHELL`}),`, `,_jsx(_components.code,{children:`SHLVL`}),`, `,_jsx(_components.code,{children:`PS1`}),` to `,_jsx(_components.code,{children:`PS4`}),`, `,_jsx(_components.code,{children:`IFS`}),`, `,_jsx(_components.code,{children:`ENV`}),`, `,_jsx(_components.code,{children:`BASH_ENV`}),`, `,_jsx(_components.code,{children:`SHELLOPTS`}),`, `,_jsx(_components.code,{children:`BASHOPTS`}),`, `,_jsx(_components.code,{children:`NODE_OPTIONS`}),`, `,_jsx(_components.code,{children:`PYTHONPATH`}),`, `,_jsx(_components.code,{children:`PYTHONSTARTUP`}),`, `,_jsx(_components.code,{children:`PERL5OPT`}),`, `,_jsx(_components.code,{children:`TMPDIR`}),`, `,_jsx(_components.code,{children:`TERM`}),`, `,_jsx(_components.code,{children:`LANG`}),` and `,_jsx(_components.code,{children:`CODEX_HOME`}),`, plus any name starting with `,_jsx(_components.code,{children:`LD_`}),` or `,_jsx(_components.code,{children:`FORGE_`}),`. Case doesn’t matter.`]}),`\n`,_jsxs(_components.p,{children:[`Your global secrets and each session’s own secrets are counted separately. A trailing newline from copy and paste is dropped when the value is saved. Every limit is also listed in `,_jsx(_components.a,{href:`/reference/limits#routines-setups-and-secrets`,children:`Limits`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Connect an app`,icon:`plug`,href:`/integrations/connect-apps`,children:_jsx(_components.p,{children:`Sign in to Gmail, Slack or Notion once, so the agent gets tools rather than a raw key.`})}),_jsx(Card,{title:`Use integrations in your app`,icon:`code`,href:`/integrations/in-your-app`,children:_jsxs(_components.p,{children:[`What “This session’s key” is for, and the two lines an exported app needs in its `,_jsx(_components.code,{children:`.env`}),`.`]})}),_jsx(Card,{title:`Publish your app`,icon:`rocket`,href:`/publish/publish-your-app`,children:_jsx(_components.p,{children:`Choose which secrets production gets, at build time and at runtime.`})}),_jsx(Card,{title:`The Shell`,icon:`terminal`,href:`/workspace/shell`,children:_jsxs(_components.p,{children:[`Check a variable with `,_jsx(_components.code,{children:`printenv`}),`, and restart the shell to load a secret you added since it opened.`]})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{secretsTotal,secretsMax,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Secrets","sidebarTitle":"Secrets","description":"Keep API keys and settings out of chat: global secrets reach every session, session secrets reach one.","href":"/secrets"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[23152,23169,"`256 secrets`,` in o"],[23226,23243,"`256 secrets`,`“`]})"],[23343,23369,"`32 KB in total (default)`]}),_jsx(_comp"]]},"mdxExtracts":{"tableOfContents":[{"title":"Global or session: where should a secret live?","slug":"global-or-session-where-should-a-secret-live","depth":2,"children":[]},{"title":"Add a secret","slug":"add-a-secret","depth":2,"children":[]},{"title":"Import a .env file","slug":"import-a-env-file","depth":2,"children":[]},{"title":"Copy, replace or delete a secret","slug":"copy-replace-or-delete-a-secret","depth":2,"children":[]},{"title":"What happens when the agent needs a key?","slug":"what-happens-when-the-agent-needs-a-key","depth":2,"children":[]},{"title":"How are values hidden in the transcript?","slug":"how-are-values-hidden-in-the-transcript","depth":2,"children":[]},{"title":"Name rules and limits","slug":"name-rules-and-limits","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/lyzr-15a99e0f/f9d02407465743f5/ask-ai.js","/_mintlify/custom/lyzr-15a99e0f/b625f5335bec8a53/sidebar-toggle.js"],"subdomain":"lyzr-15a99e0f","siteName":"Alpha","title":"Secrets - Alpha","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T23:53:05.229Z","originalFileLocation":"secrets.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Keep API keys and settings out of chat: global secrets reach every session, session secrets reach one.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Alpha\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Secrets - Alpha\">\u003cmeta data-mint-head property=\"og:description\" content=\"Keep API keys and settings out of chat: global secrets reach every session, session secrets reach one.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Alpha docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://lyzr-15a99e0f.mintlify.app/secrets\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lyzr-15a99e0f.mintlify.app/_mintlify/api/og/v2?division=Secrets\u0026amp;title=Secrets\u0026amp;description=Keep+API+keys+and+settings+out+of+chat%3A+global+secrets+reach+every+session%2C+session+secrets+reach+one.\u0026amp;theme=47e77850d1920921f207f882\u0026amp;signature=38efc50e4bd12362dc920ca07ce00876667e1633e1ba449761cc0c16468e9e95\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Secrets - Alpha\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Keep API keys and settings out of chat: global secrets reach every session, session secrets reach one.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lyzr-15a99e0f.mintlify.app/_mintlify/api/og/v2?division=Secrets\u0026amp;title=Secrets\u0026amp;description=Keep+API+keys+and+settings+out+of+chat%3A+global+secrets+reach+every+session%2C+session+secrets+reach+one.\u0026amp;theme=47e77850d1920921f207f882\u0026amp;signature=38efc50e4bd12362dc920ca07ce00876667e1633e1ba449761cc0c16468e9e95\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/lyzr-15a99e0f/O3mZitdsDDMzESr8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Alpha\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1A54F0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://lyzr-15a99e0f.mintlify.app/secrets\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/secrets.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://lyzr-15a99e0f.mintlify.app/#organization\",\"name\":\"Alpha\",\"url\":\"https://lyzr-15a99e0f.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/lyzr-15a99e0f/peFm_Sv4KgaR4cun/images/logo/light.png?fit=max\u0026auto=format\u0026n=peFm_Sv4KgaR4cun\u0026q=85\u0026s=633788f52e3e9a8128bdaf2d7a62fff6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://lyzr-15a99e0f.mintlify.app#website\",\"name\":\"Alpha\",\"url\":\"https://lyzr-15a99e0f.mintlify.app\",\"publisher\":{\"@id\":\"https://lyzr-15a99e0f.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://lyzr-15a99e0f.mintlify.app/secrets#webpage\",\"url\":\"https://lyzr-15a99e0f.mintlify.app/secrets\",\"name\":\"Secrets\",\"description\":\"Keep API keys and settings out of chat: global secrets reach every session, session secrets reach one.\",\"dateModified\":\"2026-10-27T23:53:05.229Z\",\"isPartOf\":{\"@id\":\"https://lyzr-15a99e0f.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://lyzr-15a99e0f.mintlify.app/secrets#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://lyzr-15a99e0f.mintlify.app/secrets#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Alpha\",\"item\":\"https://lyzr-15a99e0f.mintlify.app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Secrets\",\"item\":\"https://lyzr-15a99e0f.mintlify.app/secrets\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://lyzr-15a99e0f.mintlify.app/secrets#article\",\"headline\":\"Secrets\",\"name\":\"Secrets\",\"description\":\"Keep API keys and settings out of chat: global secrets reach every session, session secrets reach one.\",\"url\":\"https://lyzr-15a99e0f.mintlify.app/secrets\",\"mainEntityOfPage\":{\"@id\":\"https://lyzr-15a99e0f.mintlify.app/secrets#webpage\"},\"dateModified\":\"2026-10-27T23:53:05.229Z\",\"publisher\":{\"@id\":\"https://lyzr-15a99e0f.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://lyzr-15a99e0f.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Alpha\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Alpha","nav":{"global":null,"tabs":[{"tab":"Get started","pages":[{"title":"Get started","href":""}]},{"tab":"Build","pages":[{"title":"Build","href":"/sessions/home-screen"}]},{"tab":"Ship","pages":[{"title":"Ship","href":"/publish/publish-your-app"}]},{"tab":"Connect","groups":[{"group":"Integrations","pages":[{"title":"Integrations","sidebarTitle":"Integrations catalog","href":"/integrations/overview"},{"title":"Connect an app","sidebarTitle":"Connect apps","href":"/integrations/connect-apps"},{"title":"MCP servers","sidebarTitle":"MCP servers","href":"/integrations/mcp-servers"},{"title":"Use integrations in your app","sidebarTitle":"In your app","description":"Call your connected apps and MCP servers from the code the agent writes, in the Preview, in published apps and in exported copies.","href":"/integrations/in-your-app"}]},{"group":"Secrets","pages":[{"title":"Secrets","sidebarTitle":"Secrets","href":"/secrets"}]},{"group":"Skills","pages":[{"title":"Skills","sidebarTitle":"Skills","description":"Teach the agent how your team works: install skills from the catalog, write your own, or import one from GitHub.","href":"/skills/overview"},{"title":"Skills that ship with Alpha","sidebarTitle":"Built-in skills","href":"/skills/built-in-skills"}]}]},{"tab":"Agents","pages":[{"title":"Agents","href":"/agents/build-an-agent"}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference/slash-commands"}]}]},"title":"Secrets - Alpha","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BbYRHtLl.js","DynamicMarkdown-DN96a4Ur.js","zoom-image-lightbox-D7yRe3On.js","lightbox-handle-r17bVUz3.js"]}