Environment variables
Environment variables tune Syntic Code for one shell, one CI job or one machine. Set them before starting syntic (SYNTIC_MODEL="Syntic Code Fast" syntic), or put them in the env block of a settings file.
How values are read. On/off switches accept 1, true, yes, on and 0, false, no, off, in any case. An empty value counts as unset. Times and sizes are whole numbers in the unit shown; an invalid number falls back to the default. Rows that accept fewer spellings say so.
A project’s settings file cannot set variables that change credentials, endpoints, folders, proxies, certificates or updates. Those are dropped with a warning, so a repository cannot redirect your account.
Sign-in and connection
| Variable | Effect | Default |
|---|---|---|
SYNTIC_API_KEY | A credential that wins over every other source. Never passed to child processes. | |
SYNTIC_OAUTH_REFRESH_TOKEN | Sign in without a browser (CI). Swapped for an access token at start. | |
SYNTIC_NO_BROWSER | Do not open a browser for sign-in; show the address and a paste flow instead. | off |
SYNTIC_ACCOUNT_EMAIL | The email shown in the header and /status. | your saved email |
SYNTIC_API_TIMEOUT_MS | How long to wait for a response. | 300 s |
SYNTIC_MAX_RETRIES | Retries for failed or rate-limited requests (up to 50; 0 turns retries off). | 3 |
SYNTIC_RETRY_BUDGET | Most retries of any kind in one request. | 10 |
SYNTIC_RETRY_WAIT_LIMIT_SECS | Unattended runs only: most total time spent waiting between retries. | 600 |
SYNTIC_STREAM_IDLE_TIMEOUT_SECS | Seconds without data before a streamed reply counts as stalled and is retried (0 off). | 90 |
SYNTIC_HTTPS_PROXY, SYNTIC_NO_PROXY | Proxy for API traffic, and hosts that skip it. HTTPS_PROXY and HTTP_PROXY are honored too. | |
SYNTIC_EXTRA_CA_CERTS | Extra CA certificates (a PEM bundle). | |
SYNTIC_CLIENT_CERT, SYNTIC_CLIENT_KEY | A client certificate and key for mutual TLS. |
Models and reasoning
| Variable | Effect | Default |
|---|---|---|
SYNTIC_MODEL | Main model (the --model flag still wins). | settings or platform default |
SYNTIC_SMALL_MODEL | Model for background helper tasks. | platform default |
SYNTIC_ALIAS_<ALIAS>_MODEL | Point a model alias (default, mini, long) at another model, for example SYNTIC_ALIAS_MINI_MODEL. | |
SYNTIC_SUBAGENT_MODEL | Default model for subagents. | |
SYNTIC_SUBAGENT_MODEL_FORCE | Make every subagent use SYNTIC_SUBAGENT_MODEL. | off |
SYNTIC_MAX_THINKING_TOKENS (or MAX_THINKING_TOKENS) | Reasoning budget. | 16384 |
SYNTIC_MAX_TURNS | Most agent turns in one run (0 = no limit). | 0 |
SYNTIC_IMMEDIATE_COMMAND | /model, /fast and /effort apply at once, even mid-reply. | off |
SYNTIC_ENABLE_ADVISOR, SYNTIC_ADVISOR_MODEL | Offer the Advisor tool, and the model it asks. | off, main model |
SYNTIC_DISABLE_INTERLEAVED_THINKING | Reason only at the start of a turn, not after every tool result. | off |
Permissions and safety
| Variable | Effect | Default |
|---|---|---|
SYNTIC_PERMISSION_MODE | Starting mode: default, acceptEdits, auto, plan, bypassPermissions, dontAsk. | default |
SYNTIC_DISABLE_BYPASS_PERMISSIONS | Refuse bypass mode. | off |
SYNTIC_AUTO_MODE_REVIEW | 0 turns off auto mode’s model review. | on |
SYNTIC_UNTRUSTED_WORKSPACE | Treat the folder as untrusted: no project hooks, no project allow rules. | off |
SYNTIC_RESTRICTED | Locked-down session (same as --restricted). | off |
SYNTIC_SAFE_MODE | Troubleshooting start (same as --safe-mode). | off |
SYNTIC_BARE | Bare session (same as --bare). | off |
SYNTIC_SIMPLE | Core tools only, no MCP, hooks or memory files. | off |
Interface
| Variable | Effect | Default |
|---|---|---|
SYNTIC_THEME, SYNTIC_SYNTAX_THEME | Interface and code-block themes. | dark |
SYNTIC_OUTPUT_STYLE | Output style. | default |
SYNTIC_RENDERER | inline or fullscreen (flags win). | inline |
SYNTIC_NO_ALT_SCREEN (or NO_FLICKER) | Always draw inline. | off |
SYNTIC_SCREEN_READER (or SYNTIC_ACCESSIBILITY, SYNTIC_CODE_ACCESSIBILITY) | Screen reader mode. | off |
SYNTIC_VIM_MODE | Vim keys in the prompt. | off |
SYNTIC_TMUX_CONTROL_MODE | Tell Syntic Code it runs inside tmux control mode (iTerm2 integration) when it cannot detect it. | detected |
SYNTIC_VERBOSE | Verbose output. | off |
SYNTIC_KEY_PROTOCOL | Keyboard protocol: kitty, or legacy. | detected |
SYNTIC_CLIENT_PLATFORM | Which keyboard hints to show: mac, linux, windows. | detected |
SYNTIC_DISABLE_MOUSE | Leave the mouse to your terminal (any value other than empty, 0 or false). Inline: native selection and scrollback come back, with no copy notice and no wheel-opens-transcript. Full screen: no mouse. | mouse on |
SYNTIC_SCROLL_SPEED, SYNTIC_SCROLL_ACCELERATION | Mouse-wheel speed and acceleration. | 1, on |
SYNTIC_HYPERLINKS | Exactly 0, false or off turns clickable links off. | on |
SYNTIC_SYNTAX_HIGHLIGHT | Syntax colors in code blocks. | on |
SYNTIC_SYNC_OUTPUT | Draw each frame as one update (turn off if your terminal flickers). | on |
SYNTIC_DISABLE_TERMINAL_TITLE | Do not set the terminal tab title. | off |
SYNTIC_NOTIF_CHANNEL | Notifications: auto, iterm2, iterm2_with_bell, terminal_bell, kitty, ghostty, notifications_disabled. | auto |
SYNTIC_HIDE_CWD | Leave the folder out of the welcome header. | off |
SYNTIC_DEMO_MODE | Hide your email, organization and name (for screen sharing). | off |
SYNTIC_SHOW_TURN_DURATION | 0 hides how long each reply took. | on |
SYNTIC_SPINNER_VERBS, SYNTIC_SPINNER_VERBS_MODE | Extra spinner words; replace to replace the built-in ones. | |
SYNTIC_AWAY_RECAP | Recap card when you come back after 5+ minutes. | on |
SYNTIC_MODEL_SUGGESTIONS | Let the small model suggest your next prompt. | on |
SYNTIC_AUTO_TITLE | Automatic session titles. | on |
SYNTIC_DISABLE_FEEDBACK_SURVEY | No in-session rating question. | off |
SYNTIC_SETTING_<KEY> | Set any settings key, for example SYNTIC_SETTING_AUTO_COMPACT_THRESHOLD=0.7. | |
NO_COLOR | Any value turns color off. | |
VISUAL, EDITOR | Editor for Ctrl+G (arguments allowed, such as code --wait). | vi |
Memory and context
| Variable | Effect | Default |
|---|---|---|
SYNTIC_DISABLE_MEMORY | Load no memory files at all. | off |
SYNTIC_DISABLE_AUTO_MEMORY | Turn auto memory off. | off |
SYNTIC_AUTO_MEMORY_DIR | Where auto memory is kept (absolute path). | project data folder |
SYNTIC_EXTRACT_MEMORIES | Background memory upkeep. | on |
SYNTIC_MAX_MEMORY_CHARS | Most characters of memory sent. | 40000 |
SYNTIC_MEMORY_EXCLUDES | Memory files to skip (patterns separated by :, ; on Windows). | |
SYNTIC_CONTEXT_DIRS | Extra working folders (--add-dir adds to these). | |
SYNTIC_AUTO_COMPACT, SYNTIC_DISABLE_AUTO_COMPACT (or DISABLE_AUTOCOMPACT) | Automatic compaction on or off. | on |
SYNTIC_AUTO_COMPACT_THRESHOLD | How full before compaction (0.8 or 80, kept between 0.3 and 0.98). | 0.8 |
SYNTIC_CONTEXT_WINDOW | Window size for models Syntic Code does not know. | 200000 |
SYNTIC_DISABLE_GIT_INSTRUCTIONS | Leave the built-in git guidance out of the system prompt. | off |
SYNTIC_ENABLE_PROMPT_CACHING_1H, SYNTIC_FORCE_PROMPT_CACHING_5M | One-hour cache, or force the five-minute cache. | off |
Tools and shell
| Variable | Effect | Default |
|---|---|---|
SYNTIC_SHELL | The shell for commands (same as the shell setting). | your login shell |
SYNTIC_SHELL_PREFIX (or SHELL_PREFIX) | A command put in front of every shell command, such as firejail --net=none. | |
SYNTIC_TMPDIR | Temporary folder for Syntic Code and the commands it runs. | system temp |
SYNTIC_BASH_MAINTAIN_PROJECT_WORKING_DIR | Start every command in the project folder instead of where the last cd left it. | off |
SYNTIC_SHELL_SNAPSHOT | 0 stops capturing your shell’s aliases and functions. | on |
SYNTIC_BASH_NO_LOGIN | 1 captures the shell snapshot without starting a login shell (faster when your login files are slow). | off |
SYNTIC_KILL_GRACE_MS | How long a stopped background command gets to exit before it is killed (up to 30000). | 1000 |
SYNTIC_BG_UNATTENDED_TIMEOUT_SECS | -p runs: longest a background command may run when nobody is watching. | 1800 |
SYNTIC_BASH_MEMORY_LIMIT_MB | Linux: memory cap for each command (uses systemd-run). | none |
SYNTIC_GIT_BASH_PATH | Windows: the Git Bash bash.exe to use. | found automatically |
SYNTIC_BASH_SANDBOX, SYNTIC_BASH_SANDBOX_NET, SYNTIC_BASH_SANDBOX_EXCLUDED, SYNTIC_BASH_ALLOW_UNSANDBOXED | Shell sandbox controls. | off |
BASH_DEFAULT_TIMEOUT_MS, BASH_MAX_TIMEOUT_MS | Default and longest timeout for a command. | 120000, 600000 |
BASH_MAX_OUTPUT_LENGTH | Characters of command output the model sees (up to 150000). | 30000 |
SYNTIC_DISABLE_BACKGROUND_TASKS | No background commands; Ctrl+B is ignored. | off |
SYNTIC_BG_OUTPUT_CAP_MB | Stop a background command once its output passes this size. | 64 |
SYNTIC_BG_STALL_SECS | Tell the agent a background command looks stuck waiting for input. | 45 |
SYNTIC_FILE_READ_MAX_OUTPUT_TOKENS | Most tokens one file read returns. | 25000 |
SYNTIC_DISABLE_WEBFETCH, SYNTIC_WEBFETCH_BLOCKED_HOSTS | Remove the web fetch tool, or block hosts. | |
SYNTIC_WEBFETCH_DEADLINE_MS, SYNTIC_WEBFETCH_CACHE_TTL_MS | Time limit and cache lifetime for fetches. | 30 s, 15 min |
SYNTIC_MAX_WEB_SEARCHES_PER_SESSION | Web search limit per session (8 per turn is fixed). | 200 |
BRAVE_SEARCH_API_KEY | Use Brave Search for web search (otherwise DuckDuckGo). | |
ENABLE_TOOL_SEARCH | Load tool descriptions on demand: always, never, auto, auto:N%. | auto:10% |
SYNTIC_TOOLSEARCH_DENY_MODELS (older name: SYNTIC_TOOL_SEARCH_MODEL_DENYLIST) | Models (names or * patterns, comma-separated) that get every tool up front instead of loading on demand. | |
SYNTIC_STREAMING_TOOLS | 0 stops read-only tools from starting while a reply is still streaming; every call then waits for the reply to finish. | on |
SYNTIC_AGENT_STAGGER_MS | Delay between subagents of the same type started together, so they do not all hit the service at once (0 off, at most 10000). | 1500 |
SYNTIC_TURN_VERIFIER | 0 turns off the end-of-turn check for this process. | on |
SYNTIC_DISABLE_AGENTS | Remove the agent, task, schedule and worktree tools. | off |
SYNTIC_DISABLE_REPL, SYNTIC_DISABLE_STRUCTURED_OUTPUT | Remove those tools. | off |
SYNTIC_MAX_SUBAGENT_DEPTH, SYNTIC_MAX_CONCURRENT_SUBAGENTS, SYNTIC_SUBAGENT_STALL_SECS | Subagent limits. | 3, 20, 600 |
SYNTIC_WORKFLOW_MAX_CONCURRENT_AGENTS | Raises the cap on workflow steps running at once (1 to 256). A workflow runs 4 steps at a time unless it asks for more, up to this cap. | 16 |
SYNTIC_CRON_FILE, SYNTIC_PLANS_DIR | Where schedules and plans are saved. | ~/.syntic/… |
SYNTIC_TODO_FILE | A JSON to-do file the agent is reminded about. | |
SYNTIC_FEEDBACK_DRAFTS | 0 stops the agent from preparing feedback drafts for /feedback. | on |
SYNTIC_SETTINGS_FILE | The settings file the Config tool reads and writes. | ~/.syntic/settings.json |
Hooks, skills, plugins, MCP and editors
| Variable | Effect | Default |
|---|---|---|
SYNTIC_DISABLE_HOOKS | No hooks at all. | off |
SYNTIC_STOP_HOOK_BLOCK_CAP | How many times in a row Stop hooks may send the agent back. | 8 |
SYNTIC_SKILLS_BARE, SYNTIC_SKILLS_PLUGIN_ONLY | No skills at all, or plugin skills only. | off |
SYNTIC_SKILLS_DISABLE_PROJECT, SYNTIC_SKILLS_DISABLE_USER, SYNTIC_DISABLE_POLICY_SKILLS | Skip project, user or organization skills. | off |
SYNTIC_MANAGED_SKILLS_DIR | An extra folder of organization skills. | |
SYNTIC_SKILL_LISTING_CHAR_BUDGET | Characters the skill list may use (0 = names only). | about 4% of the window |
SYNTIC_SKILL_WATCH | 0 stops watching skill files for changes. | on |
SYNTIC_PLUGIN_DIRS, SYNTIC_PLUGIN_SEED_DIR | Load plugins from folders for a session, or on every session. | |
SYNTIC_PLUGIN_AUTO_UPDATE | Marketplace refresh: off, on/force (every start), unset (daily). | daily |
SYNTIC_PLUGIN_GIT_PROTOCOL | ssh clones GitHub sources over SSH. | https |
SYNTIC_PLUGIN_LOCKDOWN, SYNTIC_TRUSTED_PLUGINS | Only trusted plugins load; add names to the trusted list. | off |
SYNTIC_DISABLE_MCP | Start no MCP servers. | off |
SYNTIC_MCP_TIMEOUT | Time each server gets to start. | 30 s |
MCP_TIMEOUT | Milliseconds an MCP server gets to answer its handshake and quick requests. | 30000 |
MCP_CONNECTION_NONBLOCKING | -p runs: do not wait for slow MCP servers. Servers ready within the short window bring their tools; the rest sit out this run. Interactive sessions always work this way. | off |
MCP_CONNECT_TIMEOUT_MS | That short window, in milliseconds. | 5000 |
SYNTIC_MCP_BACKGROUND_AFTER_SECS | When a long MCP call moves to the background (0 never). | 120 |
SYNTIC_MCP_TOOL_CACHE | Remember servers’ tool lists between starts. | on |
SYNTIC_MCP_LEGACY_PROTOCOL | Offer the older MCP protocol version to servers that need it. | off |
SYNTIC_MCP_TOOL_IDLE_TIMEOUT, MCP_TOOL_TIMEOUT | Limits for remote and all MCP tool calls. | 300 s, none |
SYNTIC_MCP_MAX_DESCRIPTION_CHARS | Longest MCP tool description kept. | 2048 |
SYNTIC_MCP_OAUTH_CALLBACK_PORT | Port for MCP sign-in. | random |
SYNTIC_WINDOWS_HOME | WSL: the Windows profile folder (as a WSL path) where editors leave their connection files. | found automatically |
SYNTIC_IDE_AUTOCONNECT, SYNTIC_IDE_AUTORECONNECT | Connect to your editor at start, and reconnect after drops. | on in an editor terminal |
SYNTIC_DISABLE_MODS | Keep every mod off. | off |
Sessions and background runs
| Variable | Effect | Default |
|---|---|---|
SYNTIC_CONFIG_DIR | Your user folder. | ~/.syntic |
SYNTIC_DATA_DIR | Where transcripts, background-run records and usage are kept. | system data folder |
SYNTIC_SKIP_SESSION_PERSISTENCE (or SYNTIC_DISABLE_SESSION_PERSISTENCE) | Save no transcripts, prompt history or edit backups. | off |
SYNTIC_SKIP_PROMPT_HISTORY | Keep prompts out of ↑ history. | off |
SYNTIC_PROJECT_DIR_NAME | Folder name for this project’s transcripts. | from the path |
SYNTIC_RESUME_INTERRUPTED_TURN | When resuming, rerun a turn that never finished. | off |
SYNTIC_EDIT_BACKUPS_PER_FILE, SYNTIC_EDIT_BACKUPS_MAX_MB | Rewind backup limits. | 10, 200 |
SYNTIC_BG_AGENT_WAIT_SECS | In -p runs, how long to wait for background agents before stopping them. | 600 |
SYNTIC_FORWARD_SUBAGENT_TEXT | stream-json: include subagents’ text. | off |
SYNTIC_EXIT_AFTER_STOP_DELAY | stream-json sessions exit after this long idle (ms). | never |
SYNTIC_SYSTEM_PROMPT_SNAPSHOT | off rebuilds the system prompt every turn (same as --system-prompt-snapshot off). | on |
SYNTIC_EXCLUDE_DYNAMIC_PROMPT_SECTIONS | Keep machine-specific details out of the system prompt (same as --exclude-dynamic-system-prompt-sections). | off |
SYNTIC_SDK_MANAGED_SETTINGS | A JSON object of managed settings from a program that embeds Syntic Code. Applies only when the machine has no administrator policy, unless the policy sets parentSettingsBehavior to merge. | |
SYNTIC_TIMING_LOG | Write start-up timing marks to this file, to find out what makes a start slow. | |
SYNTIC_GATEWAY_HINT_HEADERS | Add request-class headers (no content) for proxies. | off |
Updates
| Variable | Effect | Default |
|---|---|---|
SYNTIC_DISABLE_UPDATES | Turn off every update path, including syntic update. | off |
SYNTIC_DISABLE_AUTOUPDATER (or DISABLE_AUTOUPDATER, SYNTIC_DISABLE_UPDATE_CHECK) | Turn off the background check only. | off |
SYNTIC_UPDATE_CHANNEL | stable or latest. | stable |
SYNTIC_RELEASE_BASE_URL, SYNTIC_UPDATE_MANIFEST_URL | Use a release mirror. | |
SYNTIC_UPDATE_PUBLIC_KEY, SYNTIC_UPDATE_METADATA_KEY | Signing keys to check a release mirror’s downloads against. | built in |
SYNTIC_SKIP_VERSION_GATE | Start even below the minimum supported version, for one run. | off |
Privacy and telemetry
| Variable | Effect | Default |
|---|---|---|
SYNTIC_PRIVACY | standard, essential or disabled. | standard |
SYNTIC_OFFLINE | Same as SYNTIC_PRIVACY=disabled. | off |
SYNTIC_DISABLE_NONESSENTIAL_TRAFFIC | Same as SYNTIC_PRIVACY=essential. | off |
SYNTIC_TELEMETRY (or DO_NOT_TRACK) | Opt out of telemetry. | |
SYNTIC_OTEL_MAX_CONTENT_CHARS | Longest prompt or tool text included in exported logs, when content logging is on. | 2048 |
SYNTIC_PROMETHEUS_FILE | Also write metrics in Prometheus text format to this file. | |
SYNTIC_PROMETHEUS_ALLOW_REMOTE | Allow the Prometheus endpoint to listen on an address other machines can reach. | off |
SYNTIC_ENABLE_TELEMETRY and OTEL_* | OpenTelemetry export; see Privacy & network. | off |
Variables Syntic Code sets
Commands, hooks and MCP servers started by Syntic Code can read these:
| Variable | Set for | Value |
|---|---|---|
SYNTIC_CODE | Shell commands, local MCP servers | 1 |
AI_AGENT | Shell commands | syntic-code |
SYNTIC_SESSION_ID | Hooks, shell commands, local MCP servers | The session id. |
SYNTIC_PROJECT_DIR | Hooks, local MCP servers | The project folder. |
SYNTIC_EFFORT | Hooks, shell commands | The effort level, when set. |
SYNTIC_PLUGIN_ROOT, SYNTIC_PLUGIN_DATA, SYNTIC_USER_CONFIG_<KEY> | Plugin hooks and servers | The plugin’s folder, data folder and options. |
SYNTIC_MOD_NAME, SYNTIC_MOD_DIR, SYNTIC_MOD_DATA, SYNTIC_MOD_PROTOCOL | Mods | The mod’s details. |
SYNTIC_BACKGROUND_ID | A background session’s process | Its run id. |
SYNTIC_MCP_SERVER_NAME, SYNTIC_MCP_SERVER_URL | An MCP server’s headersHelper command | Which server the headers are for, so one script can serve several servers. |
SYNTIC_WORKTREE_TMUX | A --worktree --tmux session inside tmux | 1, so the session does not start tmux again. |
Starting an interactive syntic where SYNTIC_CODE=1 is set is refused, so sessions do not nest by accident; -p runs are allowed. Credentials such as SYNTIC_API_KEY are removed from every child process’s environment.