Configuration
Configure stepper with camelCase JSON: user-level base merged with project settings, featuring providers, layers, permissions, and MCP servers.
The .stepper/setting.json file configures stepper's behavior and defaults. Settings use camelCase and are forward-compatible (unknown keys are ignored). A user-level ~/.stepper/setting.json serves as the base configuration; a project's configuration is deep-merged on top, where objects merge and arrays replace.
Configuration Schema
jsonc
{
"mode": "auto", // auto | plan | accept-edits (CLI --mode wins)
"defaultModel": "anthropic/claude-sonnet-4",
"step": ["plan", "implement"], // the layer pipeline, in order
"providers": {
"anthropic": { "kind": "anthropic" },
"ollama-cloud": { "kind": "openai-compat", "baseUrl": "https://ollama.com/v1" },
"omlx": {
"kind": "openai-compat",
"baseUrl": "http://localhost:8000/v1",
"contextWindow": 128000 // override ctx% gauge for unlisted models
},
"codex": { "kind": "openai-responses", "auth": "codex-oauth" }
},
"orchestrator": { "model": "anthropic/claude-sonnet-4", "temperature": 0.2 },
"permissions": { // global rules (deny > ask > allow > mode)
"allow": ["Read(**)", "Bash(cargo *)"],
"ask": ["Write(**)"],
"deny": ["Bash(rm -rf *)", "Read(//etc/**)"]
},
"approvals": [{ "rule": "Bash(npm run build)" }], // persisted "always allow"
"mcpServers": {
"context7": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@upstash/context7-mcp", "--api-key", "{env:CONTEXT7_KEY}"],
"alwaysLoad": true // visible to every layer regardless of mcp.allow
},
"my-http": {
"type": "http",
"url": "https://example/mcp",
"headers": { "Authorization": "Bearer {env:MY_TOKEN}" }
}
},
"hooks": {
"PreToolUse": [{ "matcher": "write_file", "command": "echo blocked >&2; exit 2" }]
},
"compaction": { "provider": "anthropic/claude-haiku-4" }, // model-summarize folded history
"dispatch": { "enabled": true } // expose the model-callable `dispatch` tool
}Schema Validation
Run stepper config --schema to print the full JSON Schema for setting.json. Use stepper config --validate to validate your project's configuration against the schema.
Key Configuration Fields
mode— Permission mode:auto(in-project actions run; out-of-project writes prompt),plan(read-only; edits blocked), oraccept-edits(in-project edits auto-accepted; outside reads prompt). CLI--modetakes precedence.defaultModel— The default model provider and ID (e.g.,anthropic/claude-sonnet-4).step— Array of layer names forming the pipeline, executed in order.providers— Provider definitions withkind(anthropic, openai-compat, openai-responses) and connection details. OptionalcontextWindowoverrides the context gauge for unlisted models.orchestrator— Configuration for the orchestrator layer, includingmodelandtemperature.permissions— Global permission rules withallow,ask, anddenylists. Rules use specifiers likeBash(npm run *),Read(/path),Write(**), andMcp(server, tool).approvals— Array of persisted approval rules ("always allow" decisions).mcpServers— MCP server configurations. Each server specifiestype(stdio or http), connection details, and optionalalwaysLoadto bypass layer-scoped filtering.hooks— Event hooks such asPreToolUsethat intercept tool execution.compaction— Configuration for history folding; specifies a (cheap)providermodel to summarize the folded portion.dispatch— Enable the model-callabledispatchtool for parallel sub-agents.