Environment variables
Friday reads a small set of environment variables at startup. They control where state lives, enable a couple of optional integrations, and tweak terminal behavior. AI provider credentials are not on this list: Friday's proxy auth uses gh auth token, so the credential path is gh auth login, not env vars. See Installation for the auth setup and Agent model for how the model is selected.
Friday reads
| Variable | What for | Required? | Notes |
|---|---|---|---|
FRIDAY_HOME | Override the parent directory for Friday's state (settings, checkpoints, snapshots, plugin clones). | No. Defaults to ~/.friday. | Useful for per-machine isolation or putting state on a non-default disk. See File & directory layout. |
NOTION_API_TOKEN | Token for the /share-conversation Notion export. | Only if you use /share-conversation. | Set in your shell rc so it's present when Friday launches. |
APPDATA, TERM_PROGRAM, VSCODE_INJECTION, CURSOR* | Read by /terminal-setup to detect the host editor and write the right Shift+Enter keybinding. | No. Set by your OS or editor. | You don't configure these yourself. |
The gh CLI handles GitHub auth. Friday calls gh auth token to fetch the token at runtime, so any GitHub-related env vars (GH_TOKEN, GITHUB_TOKEN) are read by gh itself, not by Friday directly. Run gh auth status if you're debugging a GitHub auth problem.
Friday passes through
Bash mode and worker subprocesses inherit your shell environment. Anything exported in the shell that launched friday (PATH, language toolchain vars, EDITOR, project tokens, and so on) is visible to commands run via ! in Bash mode and to agents working inside thread worktrees.
This means three things in practice:
- If a tool works in your terminal but fails inside Friday, check whether the var is exported from your shell rc rather than only set in the current session.
- Secrets exported in your shell are visible to any command Friday runs. Treat agent commands the same way you'd treat a script you ran yourself.
- Worktree threads start in a sibling git worktree, so untracked files like
.envare not present by default. The shell environment carries over, but a project's.envfile does not. Use Worktree file sync to bring.env(or other untracked files) into the worktree when tools depend on them.
Friday sets
Friday does not export any FRIDAY_* marker that subprocess scripts can use to detect "I'm running inside Friday." If you need that signal, set your own marker in the command you run (e.g. IN_FRIDAY=1 some-command).
Common gotchas
- Shell rc vs. session env. Friday inherits the environment of the shell that launched it. A var you
exported only in the current session won't be there if you launch Friday from a new terminal. Put long-lived vars in~/.zshrc,~/.bashrc, or your shell's equivalent. - Project
.envfiles. Friday does not auto-load.env. Tools likedirenv,dotenv, or your test runner load it. Inside a worktree thread, the.envfile isn't checked into git, so it isn't in the worktree. Add it to Worktree file sync with thecopystrategy if workers need it. - API keys are not env vars. Don't try to set
ANTHROPIC_API_KEYorOPENAI_API_KEYto configure Friday. Friday's proxy usesgh auth token, so the credential path isgh auth login. See Installation.
Read next
- Installation for first-run auth and
ghsetup. - Settings reference for everything that lives in
.user_preferences.yamlinstead of env vars. - Worktree file sync for getting
.envand other untracked files into worker worktrees.