OmO
Oh My OpenAgentv4.7.5

Configuration

Agent and category option surfaces, runtime fallback, experimental flags, and provider-specific notes that don't fit on the quick-reference page.

The quick-reference page covers the basics. This page is the option surface: every field you'd reach for when customizing an agent, a category, fallback behavior, or a provider quirk.

JSONC is supported in every plugin config file, with // line, /* block */ comments, and trailing commas.

Agent options

Override built-in agent settings under agents.{name}. Available agents: sisyphus, hephaestus, prometheus, oracle, librarian, explore, multimodal-looker, metis, momus, atlas, sisyphus-junior.

{
  "agents": {
    "explore": { "model": "anthropic/claude-haiku-4-5", "temperature": 0.5 },
    "multimodal-looker": { "disable": true }
  }
}
OptionTypeDescription
modelstringModel override (provider/model).
fallback_modelsstring | arrayFallback chain. Strings, or mixed strings + per-model objects.
temperaturenumberSampling temperature.
top_pnumberTop-p sampling.
promptstringReplace system prompt. Supports file:// URIs.
prompt_appendstringAppend to system prompt. Supports file:// URIs.
toolsarrayAllowed tool list.
disablebooleanDisable this agent.
modestringAgent mode.
colorstringUI color.
permissionobjectPer-tool permissions (see below).
categorystringInherit model from category.
variantstringVariant: max / high / medium / low / xhigh. Normalized to supported values.
maxTokensnumberMax response tokens.
thinkingobjectAnthropic extended thinking.
reasoningEffortstringOpenAI reasoning: none / minimal / low / medium / high / xhigh. Normalized.
textVerbositystringlow / medium / high.
providerOptionsobjectProvider-specific options.

Disable agents wholesale with { "disabled_agents": ["oracle", "multimodal-looker"] }.

Override Tab cycling order with agent_order (e.g. ["hephaestus", "sisyphus", "prometheus", "atlas"]); omitted core agents keep their default relative order.

Anthropic extended thinking

{ "agents": { "oracle": { "thinking": { "type": "enabled", "budgetTokens": 200000 } } } }

Per-tool permissions

{
  "agents": {
    "explore": {
      "permission": {
        "edit": "deny",
        "bash": "ask",
        "webfetch": "allow"
      }
    }
  }
}
PermissionValues
editask / allow / deny
bashask / allow / deny or per-command ({ "git": "allow", "rm": "deny" })
webfetchask / allow / deny
doom_loopask / allow / deny
external_directoryask / allow / deny

File URIs for prompts

prompt and prompt_append accept file:// URIs for both agents and categories. Paths can be absolute (file:///abs/path), project-relative (file://./rel/path), or home-relative (file://~/path). Unreadable URIs insert a warning placeholder instead of failing hard.

Category options

{ "categories": { "deep": { "model": "openai/gpt-5.5", "variant": "medium" } } }
OptionTypeDescription
modelstringModel override.
fallback_modelsstring | arrayFallback chain (same shape as agent option).
temperaturenumberSampling temperature.
top_pnumberTop-p sampling.
maxTokensnumberMax response tokens.
thinkingobjectAnthropic extended thinking.
reasoningEffortstringOpenAI reasoning effort.
textVerbositystringText verbosity.
toolsarrayAllowed tools.
prompt_appendstringAppend to system prompt.
variantstringModel variant. Normalized.
descriptionstringShown in task() tool prompt.
is_unstable_agentbooleanForce background mode + monitoring. Auto-enabled for Gemini models.

Disable categories: { "disabled_categories": ["ultrabrain"] }. Built-in defaults apply only if the category is present in your config; otherwise the system default model is used.

fallback_models with per-model settings

fallback_models accepts a single string or an array. Array entries can be plain strings or objects with per-fallback settings:

{
  "agents": {
    "sisyphus": {
      "model": "anthropic/claude-opus-4-7",
      "fallback_models": [
        "openai/gpt-5.5",
        { "model": "google/gemini-3.1-pro", "variant": "high", "temperature": 0.2 },
        { "model": "anthropic/claude-sonnet-4-6", "thinking": { "type": "enabled", "budgetTokens": 64000 } }
      ]
    }
  }
}

Object entries support: model, variant, reasoningEffort, temperature, top_p, maxTokens, thinking. Per-model settings are fallback-only — they apply only when that specific fallback model is selected. If you omit the provider prefix, OmO infers it from the current/default provider.

Runtime fallback

Auto-switches to backup models on API errors.

{ "runtime_fallback": true }

Or full control:

{
  "runtime_fallback": {
    "enabled": true,
    "retry_on_errors": [400, 429, 503, 529],
    "max_fallback_attempts": 3,
    "cooldown_seconds": 60,
    "timeout_seconds": 30,
    "notify_on_fallback": true
  }
}
OptionDefaultDescription
enabledfalseEnable runtime fallback.
retry_on_errors[400, 429, 503, 529]HTTP codes that trigger fallback. Provider key errors are also classified.
max_fallback_attempts3Max attempts per session (1–20).
cooldown_seconds60Seconds before retrying a failed model.
timeout_seconds30Seconds before forcing next fallback. Set to 0 to disable timeout-based escalation.
notify_on_fallbacktrueToast notification on model switch.

Speeding up proxy-API fallback

Proxy APIs sometimes return non-standard codes (401, 403, 404) for quota exhaustion. Widen retry_on_errors and shrink the timers:

{
  "runtime_fallback": {
    "enabled": true,
    "retry_on_errors": [400, 401, 403, 404, 429, 500, 502, 503, 504],
    "max_fallback_attempts": 3,
    "cooldown_seconds": 15,
    "timeout_seconds": 10
  }
}

Sisyphus task system

Task system is controlled by experimental.task_system (defaults to true since v3.14). When enabled, TodoWrite / TodoRead are replaced by task_create, task_get, task_list, task_update.

{
  "sisyphus": {
    "tasks": {
      "storage_path": ".sisyphus/tasks",
      "claude_code_compat": false
    }
  }
}
OptionDefaultDescription
storage_path.sisyphus/tasksStorage path (relative to project root).
task_list_idForce task list ID (alternative to env ULTRAWORK_TASK_LIST_ID).
claude_code_compatfalseEnable Claude Code path compatibility mode.

Disable the system entirely: { "experimental": { "task_system": false } }.

Experimental flags

{
  "experimental": {
    "task_system": true,
    "aggressive_truncation": false,
    "auto_resume": false,
    "disable_omo_env": false,
    "dynamic_context_pruning": {
      "enabled": false,
      "turn_protection": { "enabled": true, "turns": 3 },
      "strategies": {
        "deduplication": { "enabled": true },
        "supersede_writes": { "enabled": true, "aggressive": false },
        "purge_errors": { "enabled": true, "turns": 5 }
      }
    }
  }
}
OptionDefaultDescription
truncate_all_tool_outputsfalseTruncate all tool outputs, not just whitelisted ones.
aggressive_truncationfalseAggressively truncate when the token limit is exceeded.
auto_resumefalseAuto-resume after thinking-block recovery.
disable_omo_envfalseDisable the auto-injected <omo-env> block. Improves cache hit rate.
task_systemtrueEnable the Sisyphus task system.
dynamic_context_pruning.enabledfalseAuto-prune old tool outputs to manage context window.
dynamic_context_pruning.turn_protection.turns3Recent turns protected from pruning (1–10).
strategies.deduplicationtrueRemove duplicate tool calls.
strategies.supersede_writestruePrune write inputs when the file is later read.
strategies.supersede_writes.aggressivefalsePrune any write if any subsequent read exists.
strategies.purge_errors.turns5Turns before pruning errored tool inputs.

Provider-specific

Ollama

Streaming must be disabled or tool-calling agents will hit JSON Parse error: Unexpected EOF. Configure stream: false in your OpenCode provider settings (not under agents.{name} in oh-my-openagent.jsonc). See Ollama Troubleshooting for details.

Common models: ollama/qwen3-coder, ollama/ministral-3:14b, ollama/lfm2.5-thinking.

Google (Antigravity OAuth)

Install opencode-antigravity-auth for Google Gemini. Provides multi-account load balancing (up to 10 accounts), dual quota (Antigravity + Gemini CLI), and variant-based thinking. Override agent models in the plugin config because Antigravity uses different model names than the built-in Google auth.

Source Notes

Mirrors upstream docs/reference/configuration.md. The quick-lookup surface lives in Reference; the agent fallback chains and "when do I swap models" cheat sheet live in Agent-Model Matching.

On this page