πomp guide
# Settings, demystified This page answers four first questions: where a value comes from, which approval mode to choose, what to put in a first config, and what to add later. *Verified against the release in [`data/version.txt`](https://github.com/HugoLopes45/omp-guide/blob/main/data/version.txt).*
480+
settings
5
resolution layers
3
first decisions

1. Where does a value come from?

Values resolve from lowest to highest priority:

  1. Schema default
  2. Global config, ~/.omp/agent/config.yml
  3. Project config, <cwd>/.omp/config.yml
  4. Ordered --config overlays, including PI_CONFIG_FILES
  5. CLI and runtime overrides

Three facts people learn the hard way:

  1. Project settings do not walk up ancestors. Context files (AGENTS.md, RULES.md, and standalone CLAUDE.md) do. A .omp/config.yml in a parent directory of where you launched is silently ignored.
  2. Arrays replace wholesale, per layer. They do not merge. If a project .omp/config.yml defines bash.patterns, it deletes every global pattern for that project. If you keep global guardrails in an array, either never define that array at project level, or load the global version as a --config overlay (via PI_CONFIG_FILES in your shell profile) so it resolves after project config. Caveat: GUI-spawned omp (ACP, launchd) never sources your shell profile, so an env-based overlay does not reach it.
  3. omp config get <key> shows the merged, effective value from wherever your shell runs it, overlays included. When a change seems to have no effect, ask which layer you edited and which layer wins.

Useful commands:

omp config list --json   # every key with its effective value
omp config get <key>
omp config set <key> <value>
omp config path          # which directory the global config lives in
/settings                # same thing with a UI

2. Which approval mode should I choose?

Fresh installs default to yolo. Start with write: read and workspace-write tools stay automatic, while exec-tier actions still require approval.

always-ask

Approve each tool action yourself.

write recommended

Keep reads and workspace writes automatic. Approve exec-tier actions.

yolo

Auto-approve reads, writes, and shell commands.

The mode is the baseline. tools.approval overrides it per tool, and the first matching bash.patterns rule overrides the bash policy:

tools:
  approvalMode: write
  approval:
    bash: prompt
bash:
  patterns:
    - { match: "git status*", approval: allow }
    - { match: "rm -r*", approval: deny }

Under yolo, only deny and prompt rules change bash behavior. deny blocks, prompt asks, and allow rules must match the full command while deny and prompt inspect compound-command segments. eval needs its own approval policy: Python and JavaScript cells can spawn exec-tier shells, so use tools.approval.eval when that boundary matters.

3. What belongs in my first config?

Key Shipped default Start here because
tools.approvalMode yolo write keeps routine reads and workspace writes fast while asking before exec-tier actions.
defaultThinkingLevel high auto chooses a level per turn instead of fixing every task at high.
secrets.enabled false true redacts credential-shaped tokens before they reach providers.
defaultThinkingLevel: auto
secrets:
  enabled: true
tools:
  approvalMode: write

4. What should I add later?

Cross-session recall

memory.backend ships off. Enable it when you want recall across sessions. Read memory tips first.

Parallel writers

task.isolation.enabled ships false. Set it to true before parallel agents edit. isolation.backend ships auto and selects the available backend. Read isolation guidance.

Rate-limit control

task.maxConcurrency ships 32; providers.maxInFlightRequests is unlimited. Cap both before broad fan-out. Read autonomy traps.

Provider fallback

retry.fallbackChains ships empty. Add it after choosing a real backup provider.

Full reference

The full key catalog stays sourced from data/settings.json. Search the list below for your install’s shipped defaults, or run omp config list --json for your effective values.

Browse all 557 settings
KeyShipped defaultDescription
advisor.continueSeverity concern Minimum severity of an advisor note that wakes the agent after it finished with a final answer. Lower-severity notes stay as a card at the end of the transcript and reach the agent with your next message.
advisor.enabled false Pair a second model (assigned to the 'advisor' role) that passively reviews each turn and injects notes.
advisor.evictStaleResults true Before each review, replace the advisor's read/grep/glob output from older reviews with a short placeholder. The latest review is kept.
advisor.immuneTurns 3 After an advisor concern or blocker interrupts, route further concerns as non-interrupting asides for this many primary turns. Blockers are exempt from the cooldown.
advisor.maxNotesPerUpdate 4 Maximum non-blocker advice notes accepted per advisor prompt update (1–32; UI offers 1–5 quick picks). Blockers are exempt.
advisor.reviewInterval 1 Default advisor cadence when no WATCHDOG.yml roster is present: review every Nth eligible primary update. 1 = every update. Skipped updates are sent with the next scheduled review.
advisor.reviewMode turn Default advisor cadence when no WATCHDOG.yml roster is present. turn reviews every primary turn; agent-end reviews only final yields.
advisor.syncBacklog off Pause main agent until advisor backlog falls below threshold. Numeric values cap wait at 30 seconds; strict waits for all scheduled reviews without a wall-clock cap. Off disables catch-up delays. Abort, failure, and disposal release waits.
archive.enabled true Enable the read-only archive eval prelude: prompt history, recent projects, past sessions and recaps
ask.enabled true Enable the ask tool for interactive user questions
ask.notify on Notify when the ask tool is waiting for input
ask.timeout 0 Auto-select the recommended ask option after this many seconds (0 disables). Also bounds cfg:// approval prompts; an unanswered approval denies the write instead of auto-selecting
astEdit.enabled true Enable the ast_edit tool for structural AST rewrites
astGrep.enabled false Enable the ast_grep tool for structural AST search
async.enabled true Enable async bash commands and background task execution
async.maxJobs 100 No description provided.
auth.accountPolicies [] No description provided.
auth.broker.token No shipped default No description provided.
auth.broker.url No shipped default No description provided.
autoResume false Automatically resume the most recent session in the current directory
autocompleteMaxVisible 10 Max visible items in autocomplete dropdown (3-20)
autolearn.autoContinue false When on, auto-run one private capture turn at stop (uses extra tokens). When off, only standing auto-learn guidance remains.
autolearn.enabled false After the agent stops, nudge it to capture lessons to memory and create/enhance isolated managed skills
autolearn.minToolCalls 5 No description provided.
bash.allowCompoundCommands false Evaluate literal && chains per command; unmatched commands use normal bash approval policy and mode
bash.autoBackground.enabled true Automatically background long-running bash commands and deliver the result later
bash.autoBackground.thresholdMs 60000 No description provided.
bash.direnv auto Auto-load a repo's direnv/devenv `.envrc` into the bash session so devenv tools and env vars are present without manual `direnv exec`. Honors direnv's allow list: an `.envrc` you haven't `direnv allow`ed is never executed
bash.direnvLoadTimeoutMs 30000 Max wait for the first `direnv export` (a cold devenv shell can be slow); on timeout the session runs without the direnv env
bash.enabled true Enable the bash tool for shell command execution
bash.gitGuard false Refuse git commands that discard or move shared work in the bash tool: stash, reset --hard or to another commit, and checkout/switch/restore outside a merge or rebase conflict
bash.patterns [] Ordered bash command approval rules. Each item has match and approval fields; only '*' wildcards are supported.
bashInterceptor.enabled false Block shell commands that have dedicated tools
bashInterceptor.patterns [{"message":"Use the `read` tool instead of cat/head/tail. It provides better context and handles binary files.","pattern":"^\\s*(cat|head|tail|less|more)\\s+","tool":"read"},{"message":"Use the `grep` tool instead of grep/rg. It respects .gitignore and provides structured output.","pattern":"^\\s*(grep|rg|ripgrep|ag|ack)\\s+","tool":"grep"},{"message":"Use the `glob` tool instead of find/fd. It respects .gitignore and is faster for glob patterns.","pattern":"^\\s*(find|fd|locate)\\s+.*(-name|-iname|-type|--type|-glob)","tool":"glob"},{"message":"Use the `edit` tool instead of sed -i. It provides diff preview and fuzzy matching.","pattern":"^\\s*sed\\s+(-i|--in-place)","tool":"edit"},{"message":"Use the `edit` tool instead of perl -i. It provides diff preview and fuzzy matching.","pattern":"^\\s*perl\\s+.*-[pn]?i","tool":"edit"},{"message":"Use the `edit` tool instead of awk -i inplace. It provides diff preview and fuzzy matching.","pattern":"^\\s*awk\\s+.*-i\\s+inplace","tool":"edit"},{"message":"Use the `write` tool instead of echo/cat redirection. It handles encoding and provides confirmation.","pattern":"^\\s*(echo|printf|cat\\s*<<)\\s+(?:(?:[^\"'>]|\"[^\"]*\"|'[^']*')|(?<!\\|)>{1,2}\\|?\\s*(?:\"/dev/(?:null|tty|stdout|stderr)\"|'/dev/(?:null|tty|stdout|stderr)'|/dev/(?:null|tty|stdout|stderr))(?:[\\s;&|]|$))*(?<!\\|)>{1,2}\\|?\\s*(?!(?:\"/dev/(?:null|tty|stdout|stderr)\"|'/dev/(?:null|tty|stdout|stderr)'|/dev/(?:null|tty|stdout|stderr))(?:[\\s;&|]|$))[$\\w./~\"'-]","tool":"write"},{"message":"Use `bash` with `name` instead of nohup or background shell syntax so the service stays observable and managed.","pattern":"^\\s*nohup\\s+|(?<!&)\\&\\s*$","tool":"bash"},{"message":"Use `bash` with `name` for services, watchers, and debuggers; inspect with `read proc://<name>`.","pattern":"^\\s*(?:(?:bun|npm|pnpm|yarn)\\s+(?:run\\s+)?(?:dev|start)(?:\\s|$)|(?:vite|next\\s+dev|nuxt\\s+dev|nodemon|lldb|gdb|tail\\s+-f)(?:\\s|$)|docker\\s+compose\\s+up(?!.*(?:\\s-d(?:\\s|$)|--detach))(?:\\s|$))","tool":"bash"},{"message":"Use `bash` with `name` for watch mode so its output, input, and lifecycle stay managed.","pattern":"^\\s*(?:(?:bun|npm|pnpm|yarn)\\s+(?:run\\s+)?\\S+|cargo\\s+watch|watchexec|pytest|vitest|jest|tsc)(?:.|\\n)*(?:--watch|-w)(?:\\s|$)","tool":"bash"}] No description provided.
branchSummary.enabled false Prompt to summarize when leaving a branch
branchSummary.reserveTokens 16384 No description provided.
browser.cdpUrl No shipped default Default HTTP CDP discovery endpoint (for example http://127.0.0.1:9222) to attach to instead of launching a browser. Explicit app.cdp_url or app.path on the tool call take precedence.
browser.cmux true Use cmux WKWebView surfaces for browser automation when a cmux socket is available. Set PI_BROWSER_CMUX=0 or PI_BROWSER_CMUX=1 to override.
browser.enabled true Enable the browser eval prelude for scripted Chromium automation (Puppeteer)
browser.freezeOnTurnEnd true Freeze OMP-owned headless browser tabs when a turn settles so animated pages stop burning CPU/GPU while idle. Tabs unfreeze automatically on next use; pass persist:true on open to opt a tab out.
browser.headless true Launch browser in headless mode (disable to show browser UI)
browser.idleCloseSec 1800 Close OMP-owned headless browser tabs and Tern browser picture-in-pictures idle longer than this many seconds (0 = never; session dispose still reaps). Never touches relay/CDP/spawned browsers or other sessions' tabs.
browser.relay false Drive your own Chrome tabs through the omp browser relay. Install the extension once (`omp browser-relay install`); the relay server auto-starts when the browser prelude needs it. Takes precedence over Browser CDP URL; set PI_BROWSER_RELAY=0 or PI_BROWSER_RELAY=1 to override.
browser.relayUrl No shipped default omp browser relay endpoint (default http://127.0.0.1:9224).
browser.screenshotDir No shipped default Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)
browser.tern true Inside a Tern pane, open browser tabs as picture-in-pictures over omp's pane (native web view) instead of headless Chromium; falls back to Chromium when no Tern window can host them. Explicit app options, the relay and Browser CDP URL take precedence; app.tern:false opts one open out. Set PI_BROWSER_TERN=0 or PI_BROWSER_TERN=1 to override.
checkpoint.enabled false Enable the checkpoint and rewind tools for context checkpointing
claudeResets.autoRedeem unset Spend eligible Claude Cedar or Juniper resets automatically. Cedar is spent only for covered limits; Juniper can only recover a sole 5-hour block. unset asks before the first spend (with no prompt UI, it spends only a reset expiring within 5 minutes), yes spends without prompting, and no disables blocked recovery and expiry salvage.
claudeResets.keepCredits 0 Keep at least this many Claude resets banked (0 allows the last eligible reset to be spent automatically). The reserve applies to early salvage, but not to eligible resets expiring within 5 minutes.
claudeResets.minBlockedMinutes 60 Only auto-redeem when the natural unblock — the latest reset among the exhausted covered windows — is at least this many minutes away. A 5-hour-only reset is never used for a weekly or model-scoped block.
claudeResets.salvageHorizonHours 12 With auto-redeem enabled, use a server-selected Cedar reset within this many hours of expiry when its covered windows have meaningful usage. 0 disables early salvage; eligible Cedar or Juniper resets expiring within 5 minutes are still attempted regardless of usage or reserve. Provider limit requirements still apply.
codexResets.autoRedeem unset Spend saved Codex rate-limit resets automatically: restore an account blocked by an exhausted 5h or weekly window when a turn is stuck and no other account can take over, and salvage credits that are about to expire. unset asks before the first spend (with no prompt UI, it spends only a reset expiring within 5 minutes), yes spends without prompting, and no disables both checks.
codexResets.keepCredits 0 Never auto-spend below this many saved resets (0 = the last credit may be spent automatically). Credits about to expire are exempt — a reserved credit that expires preserves nothing.
codexResets.minBlockedMinutes 60 Only auto-redeem when the natural unblock — the latest reset among the exhausted 5h/weekly windows — is at least this many minutes away (don't spend a scarce credit to save a short wait). Raise it (e.g. 360) to ignore 5h-only blocks.
codexResets.salvageHorizonHours 12 With auto-redeem enabled, spend a saved Codex reset within this many hours of expiry when either chat window has meaningful usage. 0 disables early salvage; credits expiring within 5 minutes are still attempted regardless of usage.
collab.autoStart off Host every interactive session via collab.relayUrl as it starts and publish it to the local registry (omp collab list); rooms rotate on session switch
collab.displayName Name shown to other collab participants (default: OS username)
collab.relayUrl wss://my.omp.sh Relay used by /collab (wss://host[:port])
collab.webUrl Browser UI used by /collab links; empty derives from collab.relayUrl; explicit http:// is localhost-only
colorBlindMode false Use blue instead of green for diff additions
commands.enableClaudeProject true Load commands from .claude/commands/
commands.enableClaudeUser false Load commands from ~/.claude/commands/
commands.enableOpencodeProject true Load commands from .opencode/commands/
commands.enableOpencodeUser false Load commands from ~/.config/opencode/commands/
commit.cacheEnabled true No description provided.
commit.cacheTtlDays 14 No description provided.
commit.changelogMaxDiffChars 120000 No description provided.
commit.mapBatchTokenBudget 16000 No description provided.
commit.mapReduceEnabled true No description provided.
commit.mapReduceThreshold 5000 No description provided.
compaction.asyncEnabled true Speculatively summarize in the background as context nears the compaction threshold, then splice the ready result in when the threshold is crossed
compaction.autoContinue true No description provided.
compaction.dropUseless true Prune tool results flagged contextually useless (no matches, timed-out waits) once consumed (cache-aware)
compaction.enabled true Automatically compact context when it gets too large
compaction.experimentalContextManagement false Keep persistent notes and searchable raw history across context windows.
compaction.handoffSaveToDisk false Save generated handoff documents to markdown files for the auto-handoff flow
compaction.idleEnabled false Compact context while idle when token count exceeds threshold
compaction.idleThresholdTokens 200000 Token count above which idle compaction triggers
compaction.idleTimeoutSeconds 300 Seconds to wait while idle before compacting; with a 1-hour prompt cache, compaction instead runs just before the cache expires
compaction.keepRecentTokens 20000 No description provided.
compaction.methodOrder ["remote","snapcompact","handoff","shake","soft"] Preferred fallback order for automatic context maintenance; unavailable or failed methods advance to the next choice
compaction.midTurnEnabled true Check thresholds at safe mid-turn tool-loop boundaries before the next provider request; subagents always check, since their whole assignment is one turn
compaction.modelThresholds {} No description provided.
compaction.modelThresholdsEnabled true No description provided.
compaction.remoteEndpoint No shipped default No description provided.
compaction.remoteStreamingV2Enabled true Use Responses streaming compaction for compatible remote compaction models
compaction.reserveTokens No shipped default No description provided.
compaction.supersedeReads true Prune older read results when the same file is read again (cache-aware, runs every turn)
compaction.thresholdPercent -1 Percent threshold for context maintenance; set to Default to use legacy reserve-based behavior
compaction.thresholdTokens -1 Fixed token limit for context maintenance; overrides percentage if set
compaction.v2RetainedMessageBudget 64000 No description provided.
completion.notify on Notify when the agent finishes a turn
composer.predictions false After a completed turn, ask the active model to predict your next message and show it as ghost text in the empty composer; ⇥ or → inserts it without sending. Extra usage: every completed turn sends one more billed request over the whole conversation (counted in /stats)
composer.recallClearedDrafts true Keep drafts cleared with Ctrl+C in local ↑/↓ history until exit; disabling affects future clears
composer.shape band Visual layout of the input editor and status line
composer.tokenRate false Show a live generation tok/s readout: on the working row next to the session title, or in the native composer bar right after the thinking level, where the last reading stays between turns. Estimated from streamed deltas and corrected by the provider's billed output count as each message completes.
computer.backgroundFallback takeover What window input does when its background route is unavailable: rerun it in takeover and return focus to your app (macOS; elsewhere plain takeover), or refuse, which also keeps the agent from taking the foreground or opening macOS menus itself
computer.display active Active window's display (active), all displays (all), or a native display id
computer.enabled false Enable the scriptable host-desktop eval prelude (screenshots, input, accessibility)
computer.maxHeight 2400 Maximum screenshot height in pixels
computer.maxWidth 3840 Maximum screenshot width in pixels
contextFiles.extra [] Extra instruction filenames loaded beside AGENTS.md. Use a JSON list of names, not paths, e.g. ["AGENTS.local.md"]; [] disables extras. Start a new session to load them.
contextPromotion.enabled false Promote to the model's contextPromotionTarget on context overflow instead of compacting. Retry fallback switches are controlled by Retry Model Fallback
cycleOrder ["smol","default","slow"] No description provided.
debug.enabled true Enable the debug tool for DAP-based debugging
defaultThinkingLevel high Reasoning depth for thinking-capable models
dev.autoqa true Automated tool issue reporting (xd://report_issue). On by default; the first report asks for consent, and denying it disables reporting until re-enabled explicitly
dev.autoqaConsent unset No description provided.
dev.autoqaPush.endpoint https://qa.omp.sh/v1/grievances Full URL receiving Auto QA JSON reports (default https://qa.omp.sh/v1/grievances)
dev.autoqaPush.token No shipped default No description provided.
disabledExtensions [] No description provided.
disabledProviders [] No description provided.
display.cacheMissMarker false Show a divider after an assistant turn whose request lost (missed) the prompt cache
display.collapseCompacted true Collapse pre-compaction history behind the summary divider on the live transcript; disable to keep the full transcript inline with dividers at each compaction point
display.hideToolActivity false Hide model-initiated tool calls and results from the transcript
display.pinnedAgents collapsed Pinned live-agent jump list above the editor (off hides it; collapsed shows a few rows with an expander; full lists all)
display.shimmer classic Animation style for working/loading messages
display.showTokenUsage false Show per-turn token usage on assistant messages
display.showTurnTime false Show the total prompt-to-yield time (including tool calls) on assistant message usage rows
display.smoothStreaming true Reveal assistant text and streamed tool input smoothly while chunks arrive
display.subagentLivePreview false Show each pinned subagent's current (or most recent) tool call beneath its row
doubleEscapeAction rewind What pressing ⎋ twice with an empty editor does: open the transcript rewind selector, open the session tree, or nothing
edit.autoRepair.enabled false When an edit breaks a file's AST parse, ask the smol model to fix the broken region (validated by re-parse; falls back to a warning)
edit.blackbox.enabled false Append full before/after source when an edit introduces an AST parse failure
edit.blockAutoGenerated true Prevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.)
edit.enforceSeenLines true Reject edits anchored on lines a prior read/search never displayed in full
edit.fuzzyMatch true Accept high-confidence fuzzy matches for whitespace differences
edit.fuzzyThreshold 0.95 Similarity threshold (0-1) for accepting fuzzy matches
edit.mode hashline Select the edit tool variant (replace, patch, hashline, or apply_patch)
edit.modelVariants {} No description provided.
edit.recoverInlineEdits true Execute edit payloads the model emits as plain text by converting them into edit tool calls
edit.streamingAbort false Abort streaming edit tool calls when patch preview fails
emojiAutocomplete true Suggest emojis from `:name:` shortcodes and expand text emoticons like `:D` or `:-)`
enabledModels [] No description provided.
enabledProviders [] No description provided.
error.notify off Notify when the agent stops with an error
eval.autoBackground.enabled false Automatically background long-running eval cells and deliver the result later
eval.autoBackground.thresholdMs 60000 No description provided.
eval.autoProvision true Automatically create the managed JavaScript eval package environment on first install
eval.js true Allow the eval tool to dispatch JavaScript cells to the in-process runtime
eval.py true Allow the eval tool to dispatch Python cells to the IPython kernel
eval.tools.enabled true Let eval cells define tools (@tool in Python, tool(fn) in JS) that task, agent(), and workpool() subagents can call
eval.workpool.freshAgents false Spawn a new subagent for every workpool item instead of reusing workers or batching queued items
exa.enabled true Enable the Exa web search provider
exa.searchDelayMs 1000 Minimum delay between Exa web search requests in milliseconds; set 0 to disable pacing
expandThinkingBlocks false Keep finished thinking blocks expanded instead of collapsing them when the turn ends
extendedContext false Use larger context windows where supported; may incur premium pricing. Off keeps default or standard-pricing windows
extensionHandlers.toolCallTimeoutMs 30000 Positive finite active-work timeout for extension tool_call handlers; invalid values use 30000ms, and time awaiting OMP-owned dialogs does not count
extensions [] No description provided.
externalThinking false Private scratchpad; not shown to user. Disables supported GPT, Claude, and Gemini reasoning
features.unexpectedStopDetection mechanical Automatically recover when the assistant stops without a visible message. Smart also classifies text-only stops with a small model.
fetch.enabled true Allow the read tool to fetch and process URLs
find.enabled auto Enable the find tool: natural-language search for files and line ranges, judged by the judge model role. Auto enables it only when the judge role resolves to a native TypeSafe jev model
followUpMode one-at-a-time How to drain follow-up messages after a turn completes
gc.archive true No description provided.
gc.blobs true No description provided.
gc.coldArchiveAfterDays 30 No description provided.
gc.compress false No description provided.
gc.compressAfterDays 7 No description provided.
gc.retainNewestGlobal 20 No description provided.
gc.retainNewestPerCwd 10 No description provided.
gc.stale false No description provided.
gc.staleRetainDays 30 No description provided.
gc.staleRetainNewest 20 No description provided.
gc.wal true No description provided.
generate_image.enabled false Enable the generate_image tool (text-to-image generation and editing). Exposed as an xd:// device when tools.xdev is on.
git.enabled true Show git branch, status, and PR information in the TUI and watch repository metadata.
github.cache.enabled true Cache rendered issue/PR view output in ~/.omp/cache/github-cache.db so repeated reads are free
github.cache.hardTtlSec 604800 Past the soft TTL the cached row is returned and refreshed in the background; past the hard TTL it is dropped (seconds; default 7 days)
github.cache.softTtlSec 300 Within this window, cached issue/PR view rows are returned directly (seconds; default 5 minutes)
github.enabled false Enable the github tool (op-based dispatch for repository, issue, pull request, diff, search, checkout, push, and Actions watch workflows)
glob.enabled true Enable the glob tool for glob-based file lookup
goal.continuationModes ["interactive"] Run modes where active goals may auto-continue between turns ("interactive", "rpc")
goal.enabled true Enable per-session goal mode and the hidden goal tool
goal.statusInFooter true Show token budget alongside the goal indicator in the status line
grep.contextAfter 3 Lines of context after each grep match
grep.contextBefore 1 Lines of context before each grep match
grep.enabled true Enable the grep tool for regex content search
hideThinkingBlock false Hide thinking blocks in assistant responses
hindsight.apiToken No shipped default Bearer token for authenticated Hindsight servers
hindsight.apiUrl http://localhost:8888 Hindsight server URL (Cloud or self-hosted)
hindsight.autoRecall true Recall memories on the first turn of each session
hindsight.autoRetain true Retain transcript every N turns and at session boundaries
hindsight.bankId No shipped default Memory bank identifier (default: project name)
hindsight.bankIdPrefix No shipped default No description provided.
hindsight.bankMission No shipped default No description provided.
hindsight.debug false No description provided.
hindsight.mentalModelAutoSeed true At session start, create any built-in mental models (project-conventions, project-decisions, user-preferences) that do not yet exist on the bank.
hindsight.mentalModelMaxRenderChars 16000 No description provided.
hindsight.mentalModelsEnabled true Read curated reflect summaries (mental models) into developer instructions at boot. Loads existing models on the bank — does not write. Pair with hindsight.mentalModelAutoSeed to also auto-create the built-in seed set.
hindsight.recallBudget mid No description provided.
hindsight.recallContextTurns 1 No description provided.
hindsight.recallMaxQueryChars 800 No description provided.
hindsight.recallMaxTokens 1024 No description provided.
hindsight.recallTimeoutMs 30000 No description provided.
hindsight.recallTypes ["world","experience"] No description provided.
hindsight.reflectTimeoutMs 120000 No description provided.
hindsight.requestTimeoutMs 30000 No description provided.
hindsight.retainContext omp No description provided.
hindsight.retainEveryNTurns 3 No description provided.
hindsight.retainMission No shipped default No description provided.
hindsight.retainMode full-session full-session = upsert one document per session, last-turn = chunked
hindsight.retainOverlapTurns 2 No description provided.
hindsight.retainTimeoutMs 60000 No description provided.
hindsight.scoping per-project-tagged global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = shared bank with project tags so global + project memories merge on recall
ida.enabled true Open executables read with `read` in IDA Pro (idalib) and enable the `ida` tool; inert when no IDA install is found
ida.idleCloseSec 900 Save and close IDA databases idle longer than this many seconds (0 = never); the exec namespace resets on reopen
ida.installDir Directory containing libidalib, exported as IDADIR; empty auto-detects ($IDADIR, ida-config.json, standard install paths)
ida.maxOpen 4 Most IDA databases (omp.ida.* daemons in omp ps) open at once per project; opening another saves and closes the least recently used idle one
ida.python Python interpreter that can import ida_domain and idapro; empty auto-detects
images.autoResize true Resize large images to 2000x2000 max for better model compatibility
images.blockImages false Prevent images from being sent to LLM providers
images.describeForTextModels true When an image is attached to a model without vision support, save it under local:// and inject a description from a vision-capable model instead of dropping it
images.questionTimeoutMs 300000 Per-request timeout for the vision-model call behind read's ?q= image questions, in milliseconds. A stalled provider fails fast with a timeout error instead of blocking until manual abort. Set to 0 to disable the timeout.
images.urls.backends ["provider-files","tailscale","cloudflared","litterbox"] Ordered destinations tried when publishing images for provider access
images.urls.bindHost 127.0.0.1 Host the blob server binds to; loopback for tunnels, 0.0.0.0 for direct serving
images.urls.command No shipped default Argv template for the command backend; {file} is the image path, {mime}/{ext} optional. The last URL printed on stdout is used (e.g. pasta -b -f {file})
images.urls.credentials No shipped default No description provided.
images.urls.enabled false Publish outgoing images through the configured backend chain and send URL-fetching providers short URLs instead of inline base64. Falls back to inline automatically when every backend or a provider fetch fails
images.urls.options {} No description provided.
images.urls.publicBaseUrl No shipped default Externally reachable base URL fronting the blob server (required for ssh, optional for direct)
images.urls.sshRemotePort 8787 Remote listen port of the ssh reverse forward that your web server proxies to
images.urls.sshTarget No shipped default user@host destination for the ssh reverse forward
images.urls.ttlHours 72 Serving window for locally hosted image URLs, measured from the last time a conversation sent them; resuming a conversation re-arms the window at the same link. 0 keeps links alive while the broker runs
includeModelInPrompt true Surface the active model identifier in the system prompt so the agent knows which model it is
includeWorkspaceTree false Render the workspace directory tree in the system prompt. WARNING: This can bust prompt caching across sessions when files are modified.
inlineToolDescriptors auto Render full tool descriptors in the system prompt and strip top-level/nested descriptions from provider tool schemas so descriptor text is sent once. Auto enables this for Gemini models and disables it otherwise
input.bareExitOnEmptySession true Submitting exactly `exit`, `quit`, or `q` (any case) before the first message quits instead of prompting the model
input.bareSlashCommands false Submitting exactly a command name without the leading `/` (e.g. `model`, `compact`) runs that slash command; once the session has messages, press Enter twice to confirm
interruptMode immediate When steering messages interrupt tool execution
isolation.backend auto Backend used for subagent isolation and worktree cloning
launch.enabled true Enable named bash services and proc:// supervision for shared long-running project processes
live.voice sol Voice used by Codex-backed realtime voice sessions
loop.conditionTimeoutMs 30000 Max wait for a `/loop --while` / `--until` condition command before treating it as broken and stopping the loop. Set to 0 to wait indefinitely
loop.mode prompt What happens between /loop iterations before re-submitting the prompt
lsp.diagnosticsDeduplicate true Suppress post-edit LSP diagnostics already shown for a file; only surface new or changed ones
lsp.diagnosticsOnEdit false Return LSP diagnostics after editing code files
lsp.diagnosticsOnWrite true Return LSP diagnostics after writing code files
lsp.enabled true Enable the lsp tool for code intelligence (definitions, references, diagnostics, rename)
lsp.formatOnWrite false Automatically format code files using LSP after writing
lsp.lazy true Start language servers on first use (lsp tool or editing a matching file type) instead of at session startup
lsp.requestTimeout 10 Seconds to wait for a language server's diagnostics, hover and other answers when the agent sets no timeout; late post-edit diagnostics wait at least this long. Raise it for servers that are slow on a cold start. The lsp tool's timeout argument can still raise or lower it per call
lsp.shared true Start language servers through the per-project daemon broker. Each connection gets its own server. While another omp instance in the project is running, a released server stays warm and the next connection reuses it instead of cold-starting (falls back to private servers when unavailable)
magicKeywords.enabled true Enable hidden notices for standalone ultrathink, orchestrate, workflowz, jevify keywords
magicKeywords.jevify true Let standalone jevify append its hidden bulk-judge classification notice
magicKeywords.orchestrate true Let standalone orchestrate append its hidden multi-agent orchestration notice
magicKeywords.ultrathink true Let standalone ultrathink request maximum automatic thinking and append its hidden notice
magicKeywords.workflow true Let standalone workflowz append its hidden eval workflow notice
marketplace.autoUpdate notify Check for plugin updates on startup
mcp.enableProjectConfig true Load .mcp.json/mcp.json from project root
mcp.notificationDebounceMs 500 Debounce window in milliseconds for MCP resource updates before injecting them into the conversation
mcp.notifications false Inject MCP resource updates into the agent conversation
mcp.renderMarkdownResults true Render non-JSON MCP text results as Markdown in the transcript
mcp.startupTimeoutMs 250 Wait this many milliseconds for initial MCP tool discovery; 0 waits until connections settle
memories.enabled false No description provided.
memories.fallbackTokenLimit 16000 No description provided.
memories.maxRawMemoriesForGlobal 200 No description provided.
memories.maxRolloutAgeDays 30 No description provided.
memories.maxRolloutsPerStartup 64 No description provided.
memories.minRolloutIdleHours 12 No description provided.
memories.phase1InputTokenLimit 4000 No description provided.
memories.phase2HeartbeatSeconds 30 No description provided.
memories.phase2LeaseSeconds 180 No description provided.
memories.phase2RetryDelaySeconds 180 No description provided.
memories.rolloutPayloadPercent 0.7 No description provided.
memories.stage1Concurrency 8 No description provided.
memories.stage1LeaseSeconds 120 No description provided.
memories.stage1RetryDelaySeconds 120 No description provided.
memories.summaryInjectionTokenLimit 5000 No description provided.
memories.threadScanLimit 300 No description provided.
memory.backend off Off, local summary pipeline, Mnemopi SQLite, Hindsight remote memory, or Sharpshooter
minP -1 Minimum probability threshold (0-1, -1 = provider default)
mnemopi.autoRecall true Recall local memories into the first turn of each session
mnemopi.autoRetain true Retain completed conversation turns into local Mnemopi memory
mnemopi.bank No shipped default Optional shared bank base name. Per-project modes derive project-local banks from it.
mnemopi.dbPath No shipped default Optional SQLite DB path. Defaults to the agent memories directory.
mnemopi.debug false No description provided.
mnemopi.embeddingApiKey No shipped default Optional embedding API key passed to Mnemopi
mnemopi.embeddingApiUrl No shipped default Optional OpenAI-compatible embedding endpoint passed to Mnemopi
mnemopi.embeddingModel No shipped default Advanced: explicit embedding model id that overrides the variant. Leave empty to use mnemopi.embeddingVariant.
mnemopi.embeddingVariant en Local embedding model family. en = stronger English model; multilingual = cross-language model. Changing this rebuilds existing memory embeddings on next start.
mnemopi.enhancedRecall false Cache recall results for repeated and similar queries with identical options; any memory write clears it
mnemopi.injectionTokenLimit 5000 No description provided.
mnemopi.llmApiKey No shipped default Optional LLM API key for Mnemopi remote mode
mnemopi.llmBaseUrl No shipped default Optional OpenAI-compatible LLM endpoint for Mnemopi remote mode
mnemopi.llmMode smol Use no LLM, the online tiny model (the TINY role from /models, else @smol), or a remote OpenAI-compatible endpoint
mnemopi.llmModel No shipped default Optional LLM model name for Mnemopi remote mode
mnemopi.noEmbeddings false Force deterministic FTS-only recall instead of vector embeddings
mnemopi.polyphonicRecall false Fuse recall with graph, fact, vector and temporal voices so linked memories surface without a keyword match
mnemopi.proactiveLinking false Ingest new memories into the episodic graph as they are stored, linking them to related entities and memories
mnemopi.recallContextTurns 3 No description provided.
mnemopi.recallLimit 8 No description provided.
mnemopi.recallMaxQueryChars 4000 No description provided.
mnemopi.retainEveryNTurns 4 No description provided.
mnemopi.scoping per-project global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = project-local writes plus global recall visibility
model.loopGuard.checkAssistantContent true Apply loop guard to assistant prose messages in addition to thinking logs
model.loopGuard.enabled true Enable automatic stream loop detection for model reasoning and prose
model.loopGuard.toolCallReminder true When a Gemini reasoning stream emits many consecutive planning headers without calling a tool, interrupt it and inject a reminder to issue a tool call (requires Loop Guard)
model.toolCallLoopGuard.enabled true Detect consecutive identical tool calls across turns and inject a corrective steer
model.toolCallLoopGuard.exemptTools ["wait"] Tool names that may repeat consecutively without triggering the cross-turn loop guard
model.toolCallLoopGuard.threshold 5 Consecutive identical tool calls required before the corrective steer is injected
modelPresets {} No description provided.
modelProviderOrder [] No description provided.
modelRoleStorage global Where model selector role assignments are saved
modelRoles {} No description provided.
modelTags {} No description provided.
omitThinking false Instruct upstream providers to completely omit thinking summaries from responses (where supported)
paste.largeMenuThreshold 100 When a paste reaches this many lines, offer a menu to wrap it in a code block, wrap it in XML tags, or save it to a file. 0 disables the menu (large pastes still collapse to a [Paste] marker).
personality default Communication style rendered into the system prompt's personality block
plan.autosave false Automatically save approved plans to disk when plan mode completes
plan.autosaveDir No shipped default Directory for autosaved plans. Supports ~, absolute, and cwd-relative paths. Empty uses <project>/.omp/plans/.
plan.defaultOnStartup false Automatically enter plan mode at the start of every new session
plan.enabled true Enable plan mode for read-only exploration and planning before execution
power.sleepPrevention idle Prevent the system sleeping during active sessions. Each level is cumulative — it adds the flags of all lower levels.
presencePenalty -1 Penalty for introducing already-present tokens (-1 = provider default)
prewalk.auto off Ask the native judge resolved through the 'judge' role whether each new top-level user task front-loads its hard reasoning. Needs a native judge; without one nothing is classified. Independent of Enable Prewalk.
prewalk.autoTarget @smol Model or role (default '@smol') auto-prewalk hands off to at the first edit/write.
prewalk.enabled false Start on the active model, then switch to a fast/cheap model (default the 'smol' role) at the first edit/write after the plan nudge's todo list exists — the strong model plans, commits the todos, and starts the implementation before handing off. Overridable per session with --prewalk / --no-prewalk.
proseOnlyThinking true Omit code blocks from thinking summaries and replace them with an ellipsis
provider.appendOnlyContext auto Cache system prompt + tool specs and keep an append-only message log so provider prefix caches (DeepSeek, Xiaomi/SGLang, Anthropic) hit at maximum rate. Auto enables for known prefix-cache providers.
providers.anthropic.serverSideFallback false When a Claude Fable 5 / Mythos 5 request is blocked by Anthropic's safety classifier, retry it on Claude Opus 5 server-side (Anthropic `server-side-fallback-2026-06-01` beta). Opt-in — leaving this off preserves the pre-fallback behavior for every request.
providers.anthropic.slowMode off No description provided.
providers.antigravityEndpoint auto Endpoint routing strategy for google-antigravity providers (chat, search, image, discovery)
providers.autoThinkingMaxEffort xhigh Highest effort the `auto` classifier may resolve. `xhigh` keeps the classifier one tier below the top, so only an explicit `ultrathink` reaches `max`; `max` lets a turn the classifier judges exceptional bill the top tier on models that expose it.
providers.cacheRetention auto Prompt-cache retention forwarded to providers that support it (Anthropic, Bedrock, OpenRouter, OpenAI)
providers.cacheWarming idle Re-send the last request with a one-token output budget shortly before its prompt-cache entry expires
providers.fetch auto Reader backend priority for the fetch/read URL tool
providers.fireworksTier standard Serving path for Fireworks requests. Priority sends `service_tier: "priority"` for higher reliability during peak traffic at a higher price; Standard omits it. Fast (`-fast`) models ignore this — Fast is its own serving path.
providers.kimiApiFormat auto API format for Kimi Code provider (auto follows live model metadata)
providers.maxInFlightRequests {} Maximum concurrent LLM requests per provider id (for example "openai" or "anthropic"), shared across local OMP processes with this config root. Omitted providers are unlimited.
providers.muse-code.storeResponses false Store Muse Code results on Meta's servers so a turn whose connection drops is recovered instead of re-run. Stored runs keep prompts and outputs on Meta's side.
providers.ollama-cloud.maxConcurrency 3 Maximum concurrent Ollama Cloud subagent runs per process; 0 disables the provider-specific limit
providers.openaiLiveSteering true Deliver messages typed while a GPT-6 response streams into that response over the Codex WebSocket, instead of waiting for the next tool boundary
providers.openaiWebsockets auto Websocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables)
providers.openrouterVariant default Default routing-variant suffix appended to OpenRouter model IDs (overridden when the selector already names a variant)
providers.streamFirstEventTimeoutSeconds -1 Seconds to wait for the first model stream event; -1 uses provider/env defaults, 0 disables the watchdog
providers.streamIdleTimeoutSeconds -1 Seconds a model stream may stay silent between events; -1 uses provider/env defaults, 0 disables the watchdog
providers.tinyModelDevice default Inference backend for local tiny models (titles + memory): an ONNX execution provider, or `mlx` to download MLX weights and run them through mlx-lm on Apple silicon. Default uses CPU-only ONNX. The PI_TINY_DEVICE env var overrides this.
providers.tinyModelDtype default ONNX quantization/precision for local tiny models. Default uses each model's shipped dtype (q4); lower precision is faster, higher is more faithful. Ignored by the MLX backend (its repos are pre-quantized 4-bit). The PI_TINY_DTYPE env var overrides this.
providers.webSearchTimeoutSeconds 60 Hard timeout for each provider's search transport before web_search advances to the next fallback, in seconds (maximum 300)
python.interpreter Optional path to an exact Python executable. When set, automatic Python runtime discovery is skipped.
python.kernelMode session Keep the IPython kernel alive across eval calls or start fresh each time
ratchet.enabled false Enable the ratchet eval/hillclimb prelude; /ratchet turns it on for the current session
read.defaultLimit 300 Default number of lines returned when agent calls read without a limit
read.renderMarkdown false Render Markdown read results as formatted terminal Markdown previews instead of raw source
read.summarize.enabled true Return structural code summaries when read is called without an explicit selector
read.summarize.minBodyLines 4 Minimum multiline body or literal length before read summaries collapse it
read.summarize.minCommentLines 6 Minimum multiline block comment length before read summaries collapse it
read.summarize.minTotalLines 100 Files with fewer total lines are read verbatim instead of structurally summarized
read.summarize.prose false Return structural summaries for Markdown and plain text reads
read.summarize.unfoldLimit 100 Hard ceiling on summary size while BFS-unfolding. An unfold whose revealed lines would exceed this is skipped (that span stays folded) and unfolding continues with the remaining spans.
read.summarize.unfoldUntil 50 BFS-unfold elidable spans until the summary is at least this many visible lines. 0 keeps only the outermost elisions.
read.toolResultPreview false Render read tool results inline in the transcript instead of summary rows
readLineNumbers false Prepend line numbers to read tool output by default
recap.enabled true Generate a brief LLM recap of where things stand after the terminal has been idle
recap.idleSeconds 240 Seconds to wait while idle before showing the recap
repetitionPenalty -1 Penalty for repeated tokens (-1 = provider default)
retry.baseDelayMs 500 No description provided.
retry.enabled true No description provided.
retry.fallbackChains {} JSON object mapping model roles, model selectors ("provider/model-id"), or provider wildcards ("provider/*") to ordered fallback selectors, e.g. {"default":["openai/gpt-4o-mini"],"google-antigravity/*":["google/*","google-vertex/*"]}. Model-oriented keys apply whenever that model/provider is active, regardless of role; a "provider/*" entry keeps the failing model's id and swaps the provider. An id-prefixed wildcard ("openrouter/google/*") re-prefixes the failing model's bare id (google-antigravity/gemini-x -> openrouter/google/gemini-x) and, used as a key, matches only that provider's ids under the prefix. A fallback entry may carry an explicit thinking suffix ("provider/model:low", ":high", ":max", ":off"); a bare entry inherits the failing turn's effort, and "provider/*" entries always inherit.
retry.fallbackOn any Which failed requests may switch to a configured fallback model
retry.fallbackRevertPolicy cooldown-expiry When to return to the primary model after a fallback
retry.maxDelayMs 300000 Maximum wait between retries, in ms. When the provider asks us to wait longer than this and no credential or model fallback succeeds, the request fails fast instead of sleeping (e.g. 3-hour Anthropic rate-limit windows). 0 disables the ceiling — to let the session auto-resume through provider-stated quota resets.
retry.maxRetries 10 Maximum retry attempts on API errors
retry.modelFallback true Allow retry recovery to switch to models in retry.fallbackChains after provider errors. Independent of Auto-Promote Context
retry.usageAwareFallback false Use reliable coding-plan quota reports to prefer same-provider accounts, then configured fallback models, before a hard usage limit. Ordinary configured API keys are excluded.
retry.usageReservePct 10 Treat a coding-plan model as near its limit below this remaining percentage. Unknown or unmapped usage keeps the primary model.
retry.usageReservePolicy confirm What to do when every same-provider coding-plan account is inside the reserve margin.
retry.waitForUsageReset false When a provider reports usage-limit exhaustion with a reset time (5-hour or weekly quota windows on any provider), sleep until the reset instead of failing fast past retry.maxDelayMs. Waits are abortable (⎋) but also hold subagents, so leave off for unattended runs.
searxng.basicPassword No shipped default No description provided.
searxng.basicUsername No shipped default No description provided.
searxng.categories No shipped default No description provided.
searxng.endpoint No shipped default Base URL of a self-hosted SearXNG instance used for web search
searxng.engines No shipped default No description provided.
searxng.language No shipped default No description provided.
searxng.safesearch No shipped default No description provided.
searxng.token No shipped default No description provided.
secrets.enabled false Obfuscate configured secrets and redact credential-shaped tokens before sending to AI providers
security.enabled false Enable OMP-native security scan planning, execution, and the read-only security:// resource namespace
setupVersion 0 No description provided.
share.redactSecrets true Run the secret obfuscator over /share snapshots before upload (uses the secrets.* config)
share.serverUrl https://my.omp.sh/s Share viewer/upload base used by /share (encrypted blob upload + viewer; links are <base>/<id>#<key>)
share.store blob Where /share uploads the encrypted session blob
sharpshooter.injectionTokenLimit 15000 No description provided.
sharpshooter.intervalMinutes 5 No description provided.
sharpshooter.minPromptLength 16 No description provided.
sharpshooter.model No shipped default Model selector for extraction/consolidation, empty = smol role
shellMinimizer.enabled true Compress verbose shell output (git, npm, cargo, etc.) before returning it to the agent
shellMinimizer.except [] No description provided.
shellMinimizer.legacyFilters No shipped default No description provided.
shellMinimizer.maxCaptureBytes 4194304 No description provided.
shellMinimizer.only [] No description provided.
shellMinimizer.settingsPath No shipped default No description provided.
shellMinimizer.sourceOutlineLevel default Source outline mode for cat/read of source files: default or aggressive
shellPath No shipped default No description provided.
showHardwareCursor true Show terminal cursor for IME support
skillful true List available skills in the system prompt; disable to save context and toggle per-session with /skillful
skills.customDirectories [] No description provided.
skills.enableAgentsProject true No description provided.
skills.enableAgentsUser true No description provided.
skills.enableClaudeProject true No description provided.
skills.enableClaudeUser false No description provided.
skills.enableCodexUser false No description provided.
skills.enablePiProject true No description provided.
skills.enablePiUser true No description provided.
skills.enableSkillCommands true Register skills as /skill:name commands
skills.enabled true No description provided.
skills.ignoredSkills [] No description provided.
skills.includeSkills [] No description provided.
skills.registryUrl https://skills.omp.sh Skillshare registry used by `omp skill` to install, search, and publish skills (https://host[:port])
snapcompact.shape auto Frame shape snapcompact prints text with (compaction archive and inline imaging). Auto picks a shape tuned for the current model.
snapcompact.systemPrompt none Experimental: render selected system prompt text as dense PNG image(s) and attach to the first user message (vision models only). Saves tokens; loses prompt caching for imaged text.
snapcompact.toolResults false Experimental: render large tool results, the newest one included, as dense PNG image(s) instead of text (vision models only). Saves tokens on accumulated search and command output; read results stay text unless the model is known to edit exactly from images.
speech.enabled false Speak the assistant's output aloud through the speakers as it streams
speech.enhanced false Rewrite assistant output into natural spoken prose with the tiny/smol model before synthesis (describes code, drops links and markdown). Falls back to mechanical cleanup on failure
speech.mode assistant What to speak: all = assistant messages + thinking; assistant = messages only; yield = only the final message at turn end
speech.speed 1 Speaking rate when reading the assistant's output aloud. 1 = normal; clamped to 0.5–2.5
speech.voice af_heart Kokoro voice used when speaking the assistant's output aloud
speechgen.enabled false Enable the tts tool for on-device (Kokoro) or xAI Grok Voice speech-file synthesis
spelling.autocomplete auto Show predicted word completions as inline hints: ⇥ accepts with a space, → without
spelling.autocorrect false Apply confident macOS spelling corrections after completed words
spelling.typoDetection true Mark misspelled prompt words with the active macOS dictionaries
startup.changelogMode summary Choose whether update notes start as a summary, full details, or stay hidden
startup.checkUpdate true Check for omp updates on startup
startup.quiet false Skip welcome screen and startup status messages
startup.setupWizard true Show newly added onboarding steps once per setup version
startup.showSplash false Show the full animated setup splash on normal interactive startup without rerunning setup. Quiet Startup still suppresses it.
statusLine.compactThinkingLevel true Show the thinking level as a single icon on the model name instead of a separate ` · <level>` suffix; in Tern's composer, as the model chip's icon instead of a separate chip (click the icon to cycle it).
statusLine.contextLine embedded How the line between the left and right segments reflects context usage (box composer only)
statusLine.leftSegments ["vim","model","mode","path","git","pr"] No description provided.
statusLine.preset default Pre-built status line configurations
statusLine.rightSegments ["session_name","token_total","cost","context_pct"] No description provided.
statusLine.segmentOptions {} No description provided.
statusLine.separator powerline-thin Style of separators between segments
statusLine.sessionAccent true Use the session name color for the editor border and status line gap
statusLine.showHookStatus true Display hook status messages below the status line
statusLine.transparent false Use the terminal's default background for the status line instead of the theme's `statusLineBg`. Powerline end caps are dropped because they need a contrasting fill to bridge into the surrounding terminal.
steeringMode one-at-a-time How to process queued messages while agent is working
stream.redactPatterns [] Additional regular expressions redacted from every streamed row, on top of env/secrets.yml values and built-in credential shapes
stream.serverUrl https://live.omp.sh Live stream server used by `omp stream` (https://host[:port]); viewers watch at <base>/<your Stencil username>
stt.enabled false Enable speech-to-text input via microphone
stt.language en No description provided.
stt.submitTrigger never Choose when speech dictation automatically submits: Never, Release (2+ words), Release with complete sentence, or When I Say Submit.
symbolPreset unicode Glyph set for icons and symbols (Unicode, Nerd Font, or ASCII)
task.agentAccountPools {} No description provided.
task.agentAdvisor {} No description provided.
task.agentCompactionThresholdOverrides {} No description provided.
task.agentIdleTtlMs 420000 How long an idle subagent stays live in memory before being parked to disk (ms). Parked agents are revived automatically when messaged or resumed. 0 keeps idle agents live until exit.
task.agentModelOverrides {} No description provided.
task.agentPrewalk {} No description provided.
task.agentServiceTierOverrides {} No description provided.
task.agentSoftRequestBudget {} No description provided.
task.batch true Switch the task tool to its batch shape: one call carries { context, tasks[] } — one subagent per item, with an optional per-item agent (defaulting to the session spawn-policy agent), per-item isolation, and a required shared context prepended to every assignment. With async.enabled=true, each spawn runs as an independent background agent with the normal idle/parked lifecycle; otherwise the call blocks for merged results. Disable to restore the flat single-spawn schema.
task.completionProbe true Ask a working subagent, through a cached side request like /btw, to estimate how complete its task is: after 2, 5, 10 and 30 more minutes, then hourly. The estimate shows next to the subagent in wait and task views. Only subagents spawned by the main agent of an interactive session are asked; print, RPC, ACP and SDK runs never probe.
task.disabledAgents [] No description provided.
task.eager default How strongly to push delegating work to subagents
task.enableEffort false Expose the optional effort parameter on task spawns, allowing callers to override each subagent's thinking level
task.enableLsp false Allow subagents spawned via the task tool to use the lsp tool. Off by default to keep subagents cheap; enable when LSP-aware delegation is worth the extra tokens.
task.isolation.apply true Automatically apply successful isolated task changes to the parent checkout; disable to retain patch or branch artifacts
task.isolation.commits generic Commit message style for nested repo changes (generic or AI-generated)
task.isolation.enabled false Allow per-task isolation with `isolated: true`; tasks without it run in the shared checkout
task.isolation.merge patch How isolated task changes are integrated (patch apply or branch merge)
task.maxConcurrency 32 Maximum number of subagents running concurrently
task.maxEffort max Maximum reasoning effort allowed for the task tool's per-spawn effort hint. Lower values prevent callers from escalating subagents above this ceiling; the default preserves the model's full range.
task.maxRecursionDepth 2 How many levels deep subagents can spawn their own subagents
task.maxRuntimeMs 0 Hard wall-clock limit per subagent (ms). 0 disables it. Defense-in-depth against provider-side stream hangs that escape the inference-layer watchdog; triggers a normal subagent abort with a 'timed out' reason.
task.prewalk false Arm prewalk for the bundled generic `task` subagent: it starts on its resolved model, plans and begins the implementation, then hands off to the 'smol' role at its first edit/write. Per-agent overrides (task.agentPrewalk, configured from the /agents hub) and user agent `prewalk` frontmatter apply regardless of this toggle.
task.showResolvedModelBadge false Display the actual model ID used by each subagent in the task widget status line
task.softRequestBudget 200 Soft per-subagent request budget (assistant requests per run). Crossing it injects a wrap-up steering notice (see task.softRequestBudgetNotice); at 1.5x the budget the run is force-stopped and the agent must hand back its partial findings. 0 disables the guard. Bundled scout/sonic agents cap out at a lower built-in budget, so a value below that cap still applies to them. A task.agentSoftRequestBudget entry replaces this budget for the agent it names.
task.softRequestBudgetNotice true Inject one steering notice when a subagent crosses its soft request budget, asking it to wrap up before the 1.5x forced-yield stop.
task.speculativeLaunch true Start each batch subagent as soon as its tasks[] item finishes streaming instead of waiting for the whole task call. Launched agents are aborted if the finished call fails validation, is blocked, or its arguments change. Requires auto-allowed task approval and no extension tool lifecycle handlers.
task.structured false Expose outputSchema/schemaMode on the task tool and return subagent results through the yield tool, validated against caller or agent output schemas. Off: task subagents have no yield tool and return their final message as plain text, except agents whose definition sets structured: true. Eval agent()/workpool spawns always keep structured results.
tasks.todoClearDelay 60 Delay before completed or abandoned todos are removed from the todo widget
telemetry.otlpExportEnabled true Allow OMP to export traces, logs, and metrics using OTEL_* endpoints. Changes take effect on the next launch.
temperature -1 Sampling temperature (0 = deterministic, 1 = creative, -1 = provider default)
terminal.programStatus true Report whether the agent is working, waiting on you, done, or failed over OSC 7501, for terminal tab indicators and agent inboxes
terminal.showImages true Render images inline in the terminal
terminal.showProgress false Emit OSC 9;4 indeterminate progress while the agent or context maintenance is running (always on in Tern)
textVerbosity medium OpenAI Responses and Codex response verbosity (low, medium, or high)
theme.dark titanium Theme used when the terminal has a dark background
theme.light light Theme used when the terminal has a light background
thinkingBudgets.high 16384 No description provided.
thinkingBudgets.low 2048 No description provided.
thinkingBudgets.max 32768 No description provided.
thinkingBudgets.medium 8192 No description provided.
thinkingBudgets.minimal 1024 No description provided.
thinkingBudgets.xhigh 32768 No description provided.
tier.advisor none Service Tier for the advisor model. None = standard processing; Inherit = match the main agent's live per-family tiers; pick a value to apply it to the advisor model's family.
tier.anthropic none Processing tier for Claude requests. `priority` realizes fast mode (`speed: "fast"`) on supported direct Anthropic models; ignored on Bedrock/Vertex Claude and via OpenRouter.
tier.google none Processing tier for Gemini (Google AI Studio + Vertex) requests, and Google-family models routed via OpenRouter (none = omit). Sent as the top-level `serviceTier` field.
tier.openai none Processing tier for OpenAI / OpenAI-Codex requests, and OpenAI-family models routed via OpenRouter (none = omit). Sent as `service_tier`.
tier.subagent inherit Service Tier for spawned task/eval subagents. Inherit = match the main agent's live per-family tiers (tracks /fast); pick a value to apply it to whichever family the subagent's model belongs to.
title.generator fork What names an untitled session from the user's messages
title.icons nf+emoji Icon and short code that head new generated or /rename session titles
title.refreshOnReplan true Refresh generated session titles after todo init replans unless the title was set by the user
todo.eager default How strongly to push automatic todo-list creation after the first message
todo.enabled true Enable the todo tool for task tracking
todo.reminders true Remind the agent to complete todos before stopping
todo.remindersMax 3 Maximum number of todo reminders before giving up
tools.abortOnFabricatedResult true With in-band tool calls, stop the model immediately when it starts hallucinating a tool result mid-turn. Disable to let the model finish generating and discard the fabricated continuation instead.
tools.approval {} Per-tool approval policies. Set to 'allow' to auto-approve, 'prompt' to require confirmation, or 'deny' to block. Overrides are honored in every approval mode.
tools.approvalMode yolo Default approval behavior for tool calls. 'Always ask' auto-approves read-only tools only. 'Write' auto-approves read and workspace-write tools. 'Yolo' auto-approves all tiers; user policy may still prompt or block.
tools.artifactHeadBytes 20 Amount of head content kept inline alongside the tail when output spills to artifact (middle elision). 0 disables — keep tail only.
tools.artifactMaxBytes 16 Maximum size of the artifact file saved for streaming tool output (bash, python, js eval). Larger output keeps its beginning (up to 3 MB) and its most recent remainder, with a truncation notice between them. 0 = unlimited.
tools.artifactSpillThreshold 50 Tool output above this size is saved as an artifact; tail is kept inline
tools.artifactTailBytes 20 Amount of tail content kept inline when output spills to artifact
tools.artifactTailLines 500 Maximum lines of tail content kept inline when output spills to artifact
tools.format auto Controls how tools are exposed to the model. Auto uses provider-native tool calls unless the selected model is marked as not supporting them, then falls back to the GLM owned dialect. Native forces provider-native tools; the other values force the named owned dialect.
tools.intentTracing true Ask the agent to describe the intent of each tool call before executing it
tools.maxTimeout 0 Maximum timeout in seconds the agent can set for any tool (0 = no limit)
tools.outputMaxColumns 768 Per-line byte cap for streaming tool outputs (bash, python, js eval) and `read`. Lines wider than this are ellipsis-truncated; remaining bytes up to the next newline are dropped. 0 disables.
tools.speculativeExecution.enabled false Enable the discard-safe first slice: validated local reads through direct read calls and nested eval. Network requests, provider completions, and live filesystem writes are not part of this baseline.
tools.speculativeExecution.maxInFlight 2 Maximum number of validated local reads allowed to run before normal dispatch.
tools.xdev true Mount rarely-used (discoverable) tools under xd:// device URLs driven via read/write instead of shipping their schemas on every request. Sessions whose explicit tool list grants read but omits write mount devices through a device-only write transport (only local:// scratch stays writable besides devices). Disable to expose every enabled tool top-level.
tools.xdevDocs catalog Choose which mounted-device docs and schemas are inlined in the system prompt. Built-ins keeps core tools inline while MCP and extension tools stay on-demand.
tools.xdevInlineDevices [] When xd:// Prompt Docs is Built-ins Only, inline dynamic devices whose names match these glob patterns (for example mcp__context_mode_*). Catalog Only ignores this setting.
topK -1 Sample from top-K tokens (-1 = provider default)
topP -1 Nucleus sampling cutoff (0-1, -1 = provider default)
treeFilterMode default Default filter mode when opening the session tree
tts.localSpeed 1 Speaking rate of the local TTS backend (tts tool, omp say). 1 = normal; clamped to 0.5–2.5
tts.localVoice af_heart Kokoro voice used by the local TTS backend (American/British, female/male)
ttsr.builtinRules true Load the default rules shipped with the agent (override individually with ttsr.disabledRules)
ttsr.contextMode discard What to do with partial output when TTSR triggers
ttsr.disabledRules [] Rule names to ignore entirely (applies to bundled defaults and your own rules)
ttsr.enabled true Interrupt the agent mid-stream when output matches rule patterns (Time-Traveling Stream Rules)
ttsr.interruptMode always When to interrupt mid-stream vs inject warning after completion
ttsr.judge auto Ask the judge model role each `question` rule about completed replies, reasoning, and tool calls; a yes injects the rule as a warning
ttsr.repeatGap 10 Messages before a rule can trigger again
ttsr.repeatMode once How rules can repeat: once per session or after a message gap
tui.autoGraph always Draw a chart under numeric tables in the agent's answers, in your theme's colors, on terminals that show graphics
tui.codexResetFireworks false Celebrate unscheduled Codex weekly usage resets and newly banked saved resets with a top-third fireworks overlay that remains until ⎋
tui.completeScrollback false Send transcript rows pushed off screen by a growing HUD or dialog straight to scrollback; when it shrinks, blank rows sit between the transcript and the input until new output fills them
tui.hyperlinks auto Wrap paths and URLs in OSC 8 hyperlinks for terminal-native click-to-open (auto: detect support; off: never; always: unconditional)
tui.imeSafeCursor false Move the prompt's bottom border to a separate row so macOS IME preedit cannot displace it
tui.maxInlineImageColumns 100 No description provided.
tui.maxInlineImageRows 20 No description provided.
tui.maxInlineImages 8 No description provided.
tui.mouse false Capture mouse clicks in the main session so live subagent cards and HUD rows focus on click, with a hover highlight on the target. Native text selection becomes ⇧+drag and wheel scroll becomes ⇧+wheel while on
tui.reactions true Invite the agent to react to your message with an emoji badge on its bubble
tui.renderMermaid true Render Mermaid fenced code blocks as ASCII diagrams
tui.renderSvg true Invite the agent to draw diagrams and charts as SVG, rendered inline as images on terminals that show graphics
tui.resizeScrollback rebuild How a settled terminal resize refreshes transcript rows retained in terminal scrollback
tui.textSizing false Render Markdown H1 headings at 2x scale using Kitty's OSC 66 text-sizing protocol. Only takes effect on Kitty terminals; ignored everywhere else. Off by default.
tui.tight false Remove the 1-character horizontal padding from the left and right of the terminal output
tui.titleSpinner braille Glyph set for the working-state spinner in the terminal title — braille sweep, filling moon, single-dot cycle, or ASCII-safe line
tui.titleState true Show the agent run state in the terminal title's separator — an animated spinner while working (a static ':' under WSL), '>' when it's your turn, '!' when the agent is waiting on you
tui.vimMode false Modal prompt editing. ⎋ leaves Insert mode; Normal mode has hjkl, 0, $, ^, w, b, e, gg, G, counts, x/D/C, dd/yy, p and u; operators take motions or text objects (diw, ca(, dap); v/V start a Visual selection that y copies and d deletes
tui.vimModeDisplay text How the current Vim mode appears in the status line
update.channel stable Update channel used by omp update and the startup update check
vault.enabled false Enable the vault:// internal URL for reading and editing Obsidian vault content via the Obsidian CLI. When disabled, vault:// resolution is refused and the vault:// entry is omitted from the system prompt.
web_search.enabled true Enable the web_search tool for live web results
workspace.additionalDirectories [] Extra workspace directories added to every session as additional roots (multi-root workspace). Managed live via /add-dir and /remove-dir. Paths resolve relative to cwd; absolute paths recommended. The agent is told these roots exist and can read/grep/glob them.
worktree.base No shipped default Base directory for agent-managed worktrees — task-isolation copies, `github` PR checkouts, and `omp worktree` cleanup all live here. Unset uses ~/.omp/wt. Must be an absolute or ~-relative path; relative paths are ignored. The OMP_WORKTREE_DIR env var overrides this.
worktree.cleanSource false When creating a worktree with `/wt`, reset tracked changes and remove untracked files from the original checkout after carrying them over
worktree.clone true New worktrees from `github pr_checkout` and `git worktree add` in bash start as a copy-on-write clone of the current checkout so ignored build artifacts (node_modules, target) carry over; falls back to a plain checkout when the filesystem cannot clone
worktree.onExit keep What to do on exit with worktrees created since omp started (on start or with `/wt`)
worktree.onStart off Whether fresh interactive sessions start in a new linked worktree