Skip to main content
We support --dangerously-set-permissions (see Permissions at bottom of page)
Slate can be configured using a slate.json (or slate.jsonc) file placed in your project root or global config directory.
{
  "$schema": "https://randomlabs.ai/config.json",
  "permission": {
    "*": "allow",
    "bash": "ask"
  }
}

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

General

FieldTypeDescription
privacybooleanDisables telemetry and logging when true.
Control which actions require your approval before Slate proceeds.
{
  "$schema": "https://randomlabs.ai/config.json",
  "permission": {
    "*": "allow",
    "bash": "ask",
    "read": {
      "*.env": "ask",
      "*": "allow"
    }
  }
}
Each permission key maps to an action ("allow", "ask", or "deny"), or a pattern object for fine-grained control.
PermissionDescription
*Wildcard — sets the default for all tools
readReading files
editWriting / editing files
bashRunning shell commands
grepSearching file contents
webfetchFetching web pages
websearchWeb searches
Set preferred default models for each slot.
{
  "$schema": "https://randomlabs.ai/config.json",
  "default_agent": "build",
  "models": {
    "main": { "default": "claude-sonnet-4-5" },
    "subagent": { "default": "claude-haiku-4-5" }
  }
}
FieldDescription
default_agentDefault agent. Must be a primary agent ("build" or "plan").
models.mainMain model for complex tasks.
models.subagentModel for subagent tasks.
models.searchModel for search tasks.
models.reasoningModel for reasoning tasks.
Connect Model Context Protocol servers for additional tools.
{
  "$schema": "https://randomlabs.ai/config.json",
  "mcp": {
    "my-tool": {
      "type": "local",
      "command": ["npx", "-y", "@my-org/mcp-server"],
      "environment": { "API_KEY": "{env:MY_API_KEY}" },
      "enabled": true
    }
  }
}
Define custom /commands for repetitive tasks.
{
  "$schema": "https://randomlabs.ai/config.json",
  "command": {
    "commit": {
      "description": "Write a commit message for staged changes",
      "template": "Write a concise git commit message for these changes: $ARGUMENTS",
      "agent": "build"
    },
    "review": {
      "description": "Review the code in a file",
      "template": "Review @$ARGUMENTS for correctness, clarity, and edge cases."
    }
  }
}
Invoke with /commit or /review in the TUI. $ARGUMENTS captures text typed after the command name.

Environment variables

VariableDescription
SLATE_API_KEYSkip the authentication dialog on launch
SLATE_CONFIGPath to a custom config file
SLATE_CONFIG_DIRPath to a custom config directory
SLATE_CONFIG_CONTENTInline JSON config (highest precedence)
SLATE_PERMISSIONJSON permission config override
SLATE_DISABLE_PROJECT_CONFIGDisable project-level slate.json discovery
SLATE_DANGEROUS_SKIP_PERMISSIONSSet to 1 to bypass all permission checks. Set automatically by --dangerously-set-permissions. Intended for CI/automation. ⚠️ Skips all safeguards including destructive operations.

CLI flags

Run slate --help to see all available flags.

Sessions

FlagAliasDescription
--continue-cResume the most recent session instead of starting a new one. Useful for picking up where you left off.
--resume <id>Resume a specific session by its session ID.
--recent-rOpen the session picker on launch so you can choose which past session to load.
FlagAliasDescription
<question>Pass a prompt directly as a positional argument. Slate runs the prompt and exits unless --prompt-interactive is also set.
--question <text>-qEquivalent to passing a positional prompt.
--prompt-interactive-iWhen combined with --question, sends the prompt but keeps the TUI open for follow-up rather than exiting.
FlagAliasDescription
--workspace <path>-wAdd a directory to Slate’s workspace. Can be specified multiple times to add several directories at once.
Headless mode lets you use Slate non-interactively — pipe in prompts, pipe out structured results — useful for CI or scripting.
FlagDescription
--stream-jsonRun Slate headlessly with JSONL (newline-delimited JSON) output. Compatible with the Anthropic Claude Code SDK. Each agent event is emitted as a JSON object on stdout.
--output-format <fmt>Set the output format. text prints plain text, stream-json is equivalent to --stream-json.
--input-format <fmt>Set how stdin is interpreted. stream-json treats stdin as JSONL messages; text treats it as a plain text prompt.
# Run a one-shot prompt and get JSONL output
slate --stream-json "Summarize the changes in the last commit"

# Pipe a prompt in as plain text
echo "What does this codebase do?" | slate --stream-json --input-format text
Server mode starts Slate as a standalone HTTP server without the TUI. The TUI (or another client) can then connect to it separately.
FlagDefaultDescription
--serverStart Slate as an HTTP API server instead of launching the TUI.
--port <number>7777Port to listen on in server mode.
--host <string>0.0.0.0Host to bind to in server mode.
--url <url>Connect the TUI to an already-running Slate server (e.g. http://localhost:7777). Useful for running the server and TUI on separate machines or in a container.
--directory <path>local cwdWhen using --url, sets the working directory on the remote server for the session.
# Terminal 1 — start the server
slate --server --port 7777

# Terminal 2 — connect the TUI to it
slate --url http://localhost:7777
FlagDefaultDescription
--dangerously-set-permissionsfalseBypass all permission checks including config plan rules. Sets SLATE_DANGEROUS_SKIP_PERMISSIONS=1 internally. Intended for CI pipelines and automation where interactive prompts are not possible. ⚠️ Auto-allows all tool calls including destructive shell commands and file writes.
# Run non-interactively with all permissions bypassed
slate --dangerously-set-permissions --stream-json "Run the test suite and fix any failures"