Skip to Content
ReferenceSettings

Settings

proto is configured through JSON settings files combined with environment variables and command-line flags.

Configuration layers (precedence, lowest → highest)

LevelSourceScope
1Hardcoded defaultsBuilt-in
2System defaults fileAll users on the machine
3User settings file (~/.proto/settings.json)Current user, all projects
4Project settings file (.proto/settings.json)This project only
5System settings fileAll users (administrator override)
6Environment variables / .env filesSession
7Command-line argumentsThis invocation

Settings file locations

FileLocation
User settings~/.proto/settings.json
Project settings.proto/settings.json (project root)
System defaultsmacOS: /Library/Application Support/ProtoCode/system-defaults.json
System overridesmacOS: /Library/Application Support/ProtoCode/settings.json

Override system file paths with PROTO_SYSTEM_DEFAULTS_PATH and PROTO_SYSTEM_SETTINGS_PATH.

[!note] String values in settings.json support $VAR and ${VAR} environment variable interpolation.

Project directory (.proto/)

In addition to settings.json, the .proto/ directory can contain:

  • .proto/agents/ — custom sub-agent definitions
  • .proto/skills/ — project skills
  • .proto/memory/ — project memory files
  • .proto/settings.json — project settings
  • .proto/sandbox-macos-custom.sb — custom Seatbelt profile
  • .proto/sandbox.Dockerfile — custom container image
  • .proto/verify-scenarios.json — post-agent verification scenarios

Available settings

general

SettingTypeDefaultDescription
general.preferredEditorstringEditor for opening files
general.vimModebooleanfalseVim keybindings in input
general.enableAutoUpdatebooleantrueCheck for updates on startup
general.gitCoAuthorbooleantrueAdd Co-authored-by trailer to git commits
general.checkpointing.enabledbooleanfalseSession checkpointing for recovery
general.defaultFileEncodingstringutf-8Encoding for new files (utf-8 or utf-8-bom)
general.lspbooleanEnable LSP support globally
general.languagestringautoUI language code (e.g. en-US, zh-CN)

output

SettingTypeDefaultValues
output.formatstringtexttext, json

ui

SettingTypeDefaultDescription
ui.themestringTheme name or path to theme JSON file
ui.customThemesobject{}Custom theme definitions
ui.accessibility.enableLoadingPhrasesbooleantrueShow loading phrases

model

SettingTypeDefaultDescription
model.namestringDefault model ID to use on startup
model.generationConfig.enableCacheControlbooleantrueEnable token caching
model.generationConfig.timeoutnumberRequest timeout (ms)
model.generationConfig.maxRetriesnumberMax retries on failure
model.generationConfig.samplingParamsobjecttemperature, top_p, max_tokens, etc.

modelProviders

Declare available models per auth type. See Model Providers for the full schema.

security

SettingTypeDefaultDescription
security.auth.selectedTypestringActive auth type on startup (openai, anthropic, gemini)
security.folderTrust.enabledbooleanfalseEnable the Trusted Folders security feature

permissions

SettingTypeDefaultDescription
permissions.defaultModestringdefaultDefault approval mode (plan, default, auto-edit, yolo)
permissions.confirmShellCommandsbooleantrueRequire approval for shell commands
permissions.confirmFileEditsbooleantrueRequire approval for file edits

tools

SettingTypeDefaultDescription
tools.sandboxboolean/stringfalseEnable sandboxing (true, false, docker, podman, sandbox-exec)

mcpServers

Map of MCP server configurations. See Guides → Connect via MCP for the full schema.

mcp

SettingTypeDescription
mcp.allowedstring[]Allowlist of MCP server names
mcp.excludedstring[]Denylist of MCP server names

arena

SettingTypeDefaultDescription
arena.worktreeBaseDirstring~/.proto/arenaBase directory for Arena worktrees
arena.maxRoundsPerAgentnumber50Max reasoning rounds per agent
arena.timeoutSecondsnumber600Timeout per agent

experimental

SettingTypeDefaultDescription
experimental.cronbooleanfalseEnable scheduled tasks

env

Map of environment variable names to values. Lowest-priority API key fallback. Do not commit secrets.

hooks

Hook event configuration. See Guides → Use Hooks for the full schema.

disableAllHooks

SettingTypeDefaultDescription
disableAllHooksbooleanfalseDisable all hooks without deleting their config

Configuration migration

Legacy disable* settings are automatically migrated to enable* names. Old files are backed up before migration.

Last updated on