Skip to main content
We support --dangerously-skip-permissions (alias: --yolo) to bypass permission prompts. See Permissions at the bottom of this page.
Slate can be configured using a slate.json (or slate.jsonc) file placed in your project root or global config directory.

File locations

Configuration files are merged together, not replaced. Settings from all sources are combined — later sources override only conflicting keys.
1

Global config

User-wide preferences at ~/.config/slate/slate.json. Applies to all projects.
2

Project config

slate.json in your project root (or any parent up to the git root). Safe to check into git.
3

Inline override

SLATE_CONFIG_CONTENT env var as a JSON string. Highest precedence.
Project config applies only to that project. Global config applies everywhere.

Options

Keybind syntax supports ctrl, alt (also meta/option), shift, and super, plus <leader> combos. Use commas for alternatives (for example, ctrl+n,down), none to disable a binding, and note leader mode times out after 2s.
Theme config supports built-in dark and light, with /theme as the in-app picker. Advanced theme JSON can define defs and theme with $ref values and per-token dark/light variants.

General

Control which actions require your approval before Slate proceeds.
Each permission key maps to an action ("allow", "ask", or "deny"), or a pattern object for fine-grained control.
Set preferred default models for each slot with the /models dialog or slate.json under models. Model IDs shown here are examples only and are not stability promises.

Model presets (modelSets)

modelSets define named presets that can configure the same model slots used by models. Configure presets in slate.json and select them from /models.
Use /providers to choose a provider and connect using that provider’s auth method. Then return to /models to pick models backed by the connected provider.In slate.json, models.{slot}.default is still a model ID string. Provider identity is handled by the UI and runtime selections, not by embedding provider credentials in the model slot.Bedrock BYOK: API-key auth requires region. IAM auth requires region, accessKeyId, secretAccessKey, and optional sessionToken. Enter credentials in /providers, not slate.json.
Connect Model Context Protocol servers for additional tools.
Define custom /commands for repetitive tasks.
Invoke with /commit or /review in the TUI. $ARGUMENTS captures text typed after the command name.
Additional configuration keys supported in slate.json. Some are partially wired and may evolve.

Environment variables


CLI flags

Run slate --help to see all available flags.
Program slots (program_search, program_execute) do not have dedicated CLI flags. Configure them with /models or slate.json under models or modelSets.

Sessions

Headless mode lets you use Slate non-interactively — pipe in prompts, pipe out structured results — useful for CI or scripting.Note: use --output-format stream-json for JSONL output in this CLI. The standalone --stream-json flag is not supported on run.
Server mode is command-based. Start the server with serve, then connect with attach.Upgrade command: slate upgrade [target] (optional target version). Use --method / -m to choose install method: curl, npm, pnpm, bun, brew, choco, or scoop.
Restart without --yolo and set SLATE_DANGEROUSLY_SKIP_PERMISSIONS to 0 (or unset it) to restore normal permission prompts.