Skip to content

Configuration Reference: Complete Configuration File Schema

This page provides the complete field definitions and documentation for the oh-my-opencode configuration file.

Configuration File Locations

  • Project-level: .opencode/oh-my-opencode.json
  • User-level (macOS/Linux): ~/.config/opencode/oh-my-opencode.json
  • User-level (Windows): %APPDATA%\opencode\oh-my-opencode.json

Project-level configuration takes precedence over user-level configuration.

Enable Autocompletion

Add a $schema field at the top of your configuration file to get IDE autocompletion:

json
{
  "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json"
}

Root-Level Fields

FieldTypeRequiredDefaultDescription
$schemastringNo-JSON Schema link for autocompletion
disabled_mcpsstring[]No[]List of disabled MCPs
disabled_agentsstring[]No[]List of disabled agents
disabled_skillsstring[]No[]List of disabled skills
disabled_hooksstring[]No[]List of disabled hooks
disabled_commandsstring[]No[]List of disabled commands
agentsobjectNo-Agent override configuration
categoriesobjectNo-Category custom configuration
claude_codeobjectNo-Claude Code compatibility configuration
sisyphus_agentobjectNo-Sisyphus agent configuration
comment_checkerobjectNo-Comment checker configuration
experimentalobjectNo-Experimental features configuration
auto_updatebooleanNotrueAuto-update check
skillsobject|arrayNo-Skills configuration
ralph_loopobjectNo-Ralph Loop configuration
background_taskobjectNo-Background task concurrency configuration
notificationobjectNo-Notification configuration
git_masterobjectNo-Git Master skill configuration
browser_automation_engineobjectNo-Browser automation engine configuration
tmuxobjectNo-Tmux session management configuration

agents - Agent Configuration

Override built-in agent settings. Each agent supports the following fields:

Common Agent Fields

FieldTypeRequiredDescription
modelstringNoOverride the model used by the agent (deprecated, recommend using category)
variantstringNoModel variant
categorystringNoInherit model and configuration from Category
skillsstring[]NoList of skills injected into the agent prompt
temperaturenumberNo0-2, controls randomness
top_pnumberNo0-1, nucleus sampling parameter
promptstringNoCompletely override default system prompt
prompt_appendstringNoAppend to the end of the default prompt
toolsobjectNoTool permission override ({toolName: boolean})
disablebooleanNoDisable this agent
descriptionstringNoAgent description
modeenumNosubagent / primary / all
colorstringNoHex color (e.g., #FF0000)
permissionobjectNoAgent permission restrictions

permission - Agent Permissions

FieldTypeRequiredValuesDescription
editstringNoask/allow/denyFile edit permission
bashstring/objectNoask/allow/deny or per-commandBash execution permission
webfetchstringNoask/allow/denyWeb request permission
doom_loopstringNoask/allow/denyInfinite loop detection override permission
external_directorystringNoask/allow/denyExternal directory access permission

Configurable Agents List

Agent NameDescription
sisyphusMain orchestrator agent
prometheusStrategic planner agent
oracleStrategic advisor agent
librarianMulti-repository research expert agent
exploreFast codebase exploration expert agent
multimodal-lookerMedia analysis expert agent
metisPre-planning analysis agent
momusPlanning reviewer agent
atlasMain orchestrator agent
------

Configuration Example

jsonc
{
  "agents": {
    "sisyphus": {
      "model": "anthropic/claude-opus-4-5",
      "temperature": 0.1,
      "skills": ["git-master"]
    },
    "oracle": {
      "model": "openai/gpt-5.2",
      "permission": {
        "edit": "deny",
        "bash": "ask"
      }
    },
    "multimodal-looker": {
      "disable": true
    }
  }
}

categories - Category Configuration

Define Categories (model abstractions) for dynamic agent composition.

Category Fields

FieldTypeRequiredDescription
descriptionstringNoPurpose description of the Category (shown in delegate_task prompt)
modelstringNoOverride the model used by the Category
variantstringNoModel variant
temperaturenumberNo0-2, temperature
top_pnumberNo0-1, nucleus sampling
maxTokensnumberNoMaximum token count
thinkingobjectNoThinking configuration {type, budgetTokens}
reasoningEffortenumNolow / medium / high / xhigh
textVerbosityenumNolow / medium / high
toolsobjectNoTool permissions
prompt_appendstringNoAppend prompt
is_unstable_agentbooleanNoMark as unstable agent (force background mode)

thinking Configuration

FieldTypeRequiredValuesDescription
typestringYesenabled/disabledWhether Thinking is enabled
budgetTokensnumberNo-Thinking budget token count

Built-in Categories

CategoryDefault ModelTemperatureDescription
visual-engineeringgoogle/gemini-3-pro0.7Frontend, UI/UX, design tasks
ultrabrainopenai/gpt-5.2-codex0.1High-IQ reasoning tasks
artistrygoogle/gemini-3-pro0.7Creative and artistic tasks
quickanthropic/claude-haiku-4-50.1Fast, low-cost tasks
unspecified-lowanthropic/claude-sonnet-4-50.1Medium tasks with unspecified type
unspecified-highanthropic/claude-opus-4-50.1High-quality tasks with unspecified type
writinggoogle/gemini-3-flash0.1Documentation and writing tasks

Configuration Example

jsonc
{
  "categories": {
    "visual-engineering": {
      "model": "google/gemini-3-pro",
      "temperature": 0.7,
      "prompt_append": "Use shadcn/ui components and Tailwind CSS."
    },
    "data-science": {
      "model": "anthropic/claude-sonnet-4-5",
      "temperature": 0.2,
      "description": "Data analysis and ML tasks"
    }
  }
}

claude_code - Claude Code Compatibility Configuration

Control various features of the Claude Code compatibility layer.

Fields

FieldTypeRequiredDefaultDescription
mcpbooleanNo-Whether to load .mcp.json file
commandsbooleanNo-Whether to load Commands
skillsbooleanNo-Whether to load Skills
agentsbooleanNo-Whether to load Agents (reserved)
hooksbooleanNo-Whether to load settings.json hooks
pluginsbooleanNo-Whether to load Marketplace plugins
plugins_overrideobjectNo-Disable specific plugins ({pluginName: boolean})

Configuration Example

jsonc
{
  "claude_code": {
    "mcp": true,
    "commands": true,
    "skills": true,
    "hooks": false,
    "plugins": true,
    "plugins_override": {
      "some-plugin": false
    }
  }
}

sisyphus_agent - Sisyphus Agent Configuration

Control the behavior of the Sisyphus orchestration system.

Fields

FieldTypeRequiredDefaultDescription
disabledbooleanNofalseDisable Sisyphus orchestration system
default_builder_enabledbooleanNofalseEnable OpenCode-Builder agent
planner_enabledbooleanNotrueEnable Prometheus (Planner) agent
replace_planbooleanNotrueDemote default plan agent to subagent

Configuration Example

jsonc
{
  "sisyphus_agent": {
    "disabled": false,
    "default_builder_enabled": false,
    "planner_enabled": true,
    "replace_plan": true
  }
}

background_task - Background Task Configuration

Control the concurrency behavior of the background agent management system.

Fields

FieldTypeRequiredDefaultDescription
defaultConcurrencynumberNo-Default maximum concurrency
providerConcurrencyobjectNo-Provider-level concurrency limit ({providerName: number})
modelConcurrencyobjectNo-Model-level concurrency limit ({modelName: number})
staleTimeoutMsnumberNo180000Timeout in milliseconds, minimum 60000

Priority Order

modelConcurrency > providerConcurrency > defaultConcurrency

Configuration Example

jsonc
{
  "background_task": {
    "defaultConcurrency": 5,
    "providerConcurrency": {
      "anthropic": 3,
      "openai": 5,
      "google": 10
    },
    "modelConcurrency": {
      "anthropic/claude-opus-4-5": 2,
      "google/gemini-3-flash": 10
    },
    "staleTimeoutMs": 180000
  }
}

git_master - Git Master Skill Configuration

Control the behavior of the Git Master skill.

Fields

FieldTypeRequiredDefaultDescription
commit_footerbooleanNotrueAdd "Ultraworked with Sisyphus" footer to commit messages
include_co_authored_bybooleanNotrueAdd "Co-authored-by: Sisyphus" trailer to commit messages

Configuration Example

jsonc
{
  "git_master": {
    "commit_footer": true,
    "include_co_authored_by": true
  }
}

browser_automation_engine - Browser Automation Configuration

Select the browser automation provider.

Fields

FieldTypeRequiredDefaultDescription
providerenumNoplaywrightBrowser automation provider

provider Available Values

ValueDescriptionInstallation Requirements
playwrightUse Playwright MCP serverAuto-installed
---------

Configuration Example

jsonc
{
  "browser_automation_engine": {
    "provider": "playwright"
  }
}

tmux - Tmux Session Configuration

Control Tmux session management behavior.

Fields

FieldTypeRequiredDefaultDescription
enabledbooleanNofalseWhether to enable Tmux session management
layoutenumNomain-verticalTmux layout
main_pane_sizenumberNo60Main pane size (20-80)
main_pane_min_widthnumberNo120Minimum width of main pane
agent_pane_min_widthnumberNo40Minimum width of agent pane

layout Available Values

ValueDescription
main-horizontalMain pane at top, agent panes stacked at bottom
main-verticalMain pane on left, agent panes stacked on right (default)
tiledAll panes in equal-sized grid
even-horizontalAll panes arranged horizontally
even-verticalAll panes stacked vertically

Configuration Example

jsonc
{
  "tmux": {
    "enabled": false,
    "layout": "main-vertical",
    "main_pane_size": 60,
    "main_pane_min_width": 120,
    "agent_pane_min_width": 40
  }
}

ralph_loop - Ralph Loop Configuration

Control the behavior of the Ralph Loop workflow.

Fields

FieldTypeRequiredDefaultDescription
enabledbooleanNofalseWhether to enable Ralph Loop feature
default_max_iterationsnumberNo100Default maximum iterations (1-1000)
state_dirstringNo-Custom state file directory (relative to project root)

Configuration Example

jsonc
{
  "ralph_loop": {
    "enabled": false,
    "default_max_iterations": 100,
    "state_dir": ".opencode/"
  }
}

notification - Notification Configuration

Control system notification behavior.

Fields

FieldTypeRequiredDefaultDescription
force_enablebooleanNofalseForce enable session-notification even if external notification plugin detected

Configuration Example

jsonc
{
  "notification": {
    "force_enable": false
  }
}

comment_checker - Comment Checker Configuration

Control comment checker behavior.

Fields

FieldTypeRequiredDefaultDescription
custom_promptstringNo-Custom prompt to replace default warning message. Use placeholder for detected comment XML

Configuration Example

jsonc
{
  "comment_checker": {
    "custom_prompt": "Please review these redundant comments: {{comments}}"
  }
}

experimental - Experimental Features Configuration

Control the enablement of experimental features.

Fields

FieldTypeRequiredDefaultDescription
aggressive_truncationbooleanNo-Enable more aggressive truncation behavior
auto_resumebooleanNo-Enable auto-resume (recover from thinking block errors or thinking disable violations)
truncate_all_tool_outputsbooleanNofalseTruncate all tool outputs, not just whitelisted tools
dynamic_context_pruningobjectNo-Dynamic context pruning configuration

dynamic_context_pruning Configuration

FieldTypeRequiredDefaultDescription
enabledbooleanNofalseEnable dynamic context pruning
notificationenumNodetailedNotification level: off / minimal / detailed
turn_protectionobjectNo-Turn protection configuration
protected_toolsstring[]No-List of tools never to prune
strategiesobjectNo-Pruning strategy configuration

turn_protection Configuration

FieldTypeRequiredDefaultDescription
enabledbooleanNotrueEnable turn protection
turnsnumberNo3Protect last N turns of tool outputs (1-10)

strategies Configuration

FieldTypeRequiredDefaultDescription
deduplicationobjectNo-Deduplication strategy configuration
supersede_writesobjectNo-Write supersede strategy configuration
purge_errorsobjectNo-Error purge strategy configuration

deduplication Configuration

FieldTypeRequiredDefaultDescription
enabledbooleanNotrueRemove duplicate tool calls (same tool + same parameters)

supersede_writes Configuration

FieldTypeRequiredDefaultDescription
enabledbooleanNotruePrune write inputs on subsequent reads
aggressivebooleanNofalseAggressive mode: prune ANY write on ANY subsequent read

purge_errors Configuration

FieldTypeRequiredDefaultDescription
enabledbooleanNotruePrune error tool inputs after N turns
turnsnumberNo5Number of turns to prune error tool inputs (1-20)

Configuration Example

jsonc
{
  "experimental": {
    "aggressive_truncation": true,
    "auto_resume": true,
    "truncate_all_tool_outputs": false,
    "dynamic_context_pruning": {
      "enabled": false,
      "notification": "detailed",
      "turn_protection": {
        "enabled": true,
        "turns": 3
      },
      "protected_tools": [
        "task",
        "todowrite",
        "todoread",
        "lsp_rename",
        "session_read",
        "session_write",
        "session_search"
      ],
      "strategies": {
        "deduplication": {
          "enabled": true
        },
        "supersede_writes": {
          "enabled": true,
          "aggressive": false
        },
        "purge_errors": {
          "enabled": true,
          "turns": 5
        }
      }
    }
  }
}

skills - Skills Configuration

Configure the loading and behavior of Skills (specialized skills).

Configuration Format

Skills support two formats:

Format 1: Simple Array

jsonc
{
  "skills": ["skill1", "skill2", "skill3"]
}

Format 2: Object Configuration

jsonc
{
  "skills": {
    "sources": [
      "path/to/skills",
      {
        "path": "another/path",
        "recursive": true,
        "glob": "*.md"
      }
    ],
    "enable": ["skill1", "skill2"],
    "disable": ["skill3"]
  }
}

Skill Definition Fields

FieldTypeRequiredDescription
descriptionstringNoSkill description
templatestringNoSkill template
fromstringNoSource
modelstringNoModel used
agentstringNoAgent used
subtaskbooleanNoWhether it's a subtask
argument-hintstringNoArgument hint
licensestringNoLicense
compatibilitystringNoCompatibility
metadataobjectNoMetadata
allowed-toolsstring[]NoAllowed tools list
disablebooleanNoDisable this Skill

Built-in Skills

SkillDescription
playwrightBrowser automation (default)
agent-browserBrowser automation (Vercel CLI)
frontend-ui-uxFrontend UI/UX design
git-masterGit expert

Disable Lists

The following fields are used to disable specific feature modules.

disabled_mcps - Disabled MCPs List

jsonc
{
  "disabled_mcps": ["websearch", "context7", "grep_app"]
}

disabled_agents - Disabled Agents List

jsonc
{
  "disabled_agents": ["oracle", "multimodal-looker"]
}

disabled_skills - Disabled Skills List

jsonc
{
  "disabled_skills": ["playwright"]
}

disabled_hooks - Disabled Hooks List

jsonc
{
  "disabled_hooks": ["comment-checker", "agent-usage-reminder"]
}

disabled_commands - Disabled Commands List

jsonc
{
  "disabled_commands": ["init-deep", "start-work"]
}

Appendix: Source Code Reference

Click to expand source code locations

Last updated: 2026-01-26

FeatureFile PathLines
Configuration Schema Definitionsrc/config/schema.ts1-378
JSON Schemaassets/oh-my-opencode.schema.json1-51200
Configuration Documentationdocs/configurations.md1-595

Key Types:

  • OhMyOpenCodeConfig: Main configuration type
  • AgentOverrideConfig: Agent override configuration type
  • CategoryConfig: Category configuration type
  • BackgroundTaskConfig: Background task configuration type
  • PermissionValue: Permission value type (ask/allow/deny)

Key Enums:

  • BuiltinAgentNameSchema: Built-in agent name enum
  • BuiltinSkillNameSchema: Built-in skill name enum
  • BuiltinCategoryNameSchema: Built-in Category name enum
  • HookNameSchema: Hook name enum
  • BrowserAutomationProviderSchema: Browser automation provider enum

Next Lesson Preview

In the next lesson, we'll learn about Built-in MCP Servers.

You will learn:

  • Features and usage of 3 built-in MCP servers
  • Configuration and best practices for Exa Websearch, Context7, and grep.app
  • How to use MCPs to search documentation and code