Configuration

Settings File

User settings are persisted to ~/.cast/settings.json. This file is loaded on startup and saved after changes (model switch, reasoning change, persona change, etc.).

Settings Schema

FieldTypeDescription
modelstringLast used model
subagentModelstringModel for sub-agents (falls back to model)
planModelstringModel used while plan mode is active (falls back to model)
reasoningLevelstringLast used reasoning level
personastringLast used persona name
providerUrlstringActive provider endpoint URL
apiKeystringActive provider API key
providersProvider[]Saved providers (name, url, apiKey) — use /provider to manage
cwdstringLast working directory
permissionMode"default" | "bypass"Bash confirmation mode
projectTrustRecord<string, boolean>Per-project trust decisions
themestringActive color theme id
webToolsbooleanWhether web tools are enabled (default: false — use /web to enable)
searchProvider"ddg" | "tavily" | "brave"web_search backend (default: "ddg") — use /web-search-provider to change
tavilyApiKeystringAPI key for the Tavily backend, from https://app.tavily.com
braveApiKeystringAPI key for the Brave Search backend, from https://api-dashboard.search.brave.com
disabledMcpServersstring[]MCP server names disabled via /mcp toggle
disabledSkillsstring[]Skill names disabled via /skills toggle
enabledPluginsRecord<string, boolean>Marketplace plugins keyed by name@marketplace
statusBarobjectStatus bar segment config (visible, order, sides) — use /statusbar to configure
updatedAtstringAuto-updated timestamp

Settings are written atomically (temp file + rename) to prevent corruption from crashes mid-write.

Environment Variables

VariableDescription
CAST_CWDOverride working directory
CAST_BASHPath to the bash executable the bash tool spawns (overrides auto-detection; useful for msys2 or non-standard Git Bash installs on Windows)
CAST_VERSIONPin install version (installer only)

Provider URL and API key are configured only via ~/.cast/settings.json (first-run prompt, or /provider in-session). cast does not read PROVIDER_BASE_URL / PROVIDER_API_KEY environment variables or a project .env — editing those changes nothing.

.cast/ Directory Structure

~/.cast/
  settings.json         # User settings
  AGENTS.md             # Global context file (optional)
  mcp.json              # Global MCP server config
  sessions/             # Saved sessions (per-project subdirs)
  plans/                # Plan files (per-session subdirs)
  skills/               # Global skills
  plugins/              # Marketplace catalogs + installed plugins (see plugins.md)
  rules/                # Global rules
  personas/             # Global personas

~/.config/agents/skills/   # skills.sh universal global (also ~/.agents/skills/)

<project>/.cast/
  skills/               # Project-local skills
  rules/                # Project-local rules
  personas/             # Project-local personas
  mcp.json              # Project-local MCP config

<project>/.agents/skills/  # skills.sh universal project (npx skills add -a universal)

Project Trust

A single trust decision gates all project-local resources: skills (.cast/skills/ and .agents/skills/), MCP servers, context files, and personas in .cast/. cast asks once per project; the decision is saved in settings.json under projectTrust.

Global resources (~/.cast/, ~/.config/agents/skills/) always load without a trust check — you put them there yourself.

Permission Modes

ModeBehavior
defaultDangerous bash commands require confirmation
bypassAll bash commands run without confirmation

Change with:

See Tools for the list of dangerous patterns.

Provider Configuration

On first run, cast asks for your provider URL and API key. Both are saved to ~/.cast/settings.json.

You can save multiple providers and switch between them:

CommandAction
/providerOpen picker — switch between saved providers
/provider addAdd a new provider (name → URL → key wizard)
/provider deleteRemove a saved provider
/provider <name>Switch to a named provider directly

Providers are stored in the providers array in settings.json. The active provider's URL and key are also saved in the top-level providerUrl / apiKey fields for startup.

Supported providers: anything that speaks the OpenAI API. Common URLs:

ProviderURL
OpenRouterhttps://openrouter.ai/api/v1
OpenAIhttps://api.openai.com/v1
Ollamahttp://localhost:11434/v1