Nineteen omp behaviours that cost real time, each with the reason and the fix.

Config

TrapWhyFix
Project settings do not walk up<cwd>/.omp/config.yml is read only from the launch directory; a parent’s config is silently ignored (context files AGENTS.md, RULES.md do walk up)Launch from the directory holding .omp/config.yml, or pass --config
Arrays replace wholesale, per layerConfig arrays (bash.patterns, compaction.methodOrder, …) never merge across layers; a project bash.patterns deletes every global guard for that projectLoad global guardrail arrays as a --config overlay (resolves after project config). GUI-spawned omp never sources your shell profile, so env-driven overlays never reach it
Your edit did nothingA higher layer (project file, overlay, CLI flag) shadows itomp config get <key> prints the merged effective value
allow rules inert under yoloDefault approval mode auto-approves everything; only deny and prompt entries in bash.patterns actAllow-lists matter only once you switch to write or always-ask
eval is not gated by bash.patternsPython/JS cells spawn shells at the exec tier; a bash deny does not cover itSet tools.approval.eval

Autonomy

TrapWhyFix
yolo is the defaultFresh install, zero prompts: reads, writes, shell all auto-approveChoose posture deliberately — see Settings
Provider 429-stormsproviders.maxInFlightRequests defaults to unlimited, task.maxConcurrency to 32; one fan-out can burn a rate-limit window in minutesCap providers.maxInFlightRequests on every paid provider
tools.maxTimeout defaults to 0 (no limit)A subagent in a goal loop can request a two-hour wait on a hung commandFinite cap 600–900s plus auto-backgrounding

Modes

TrapWhyFix
--plan is not plan modeThe flag only sets which model the plan role usesPlan mode is /plan or Alt+Shift+P; the launch flag that starts a planning session is --plan-yolo
isolated: true silently absentThe task-spawn field appears only once task.isolation.mode is set (ships as none); also needs a git repo and plan mode offSet task.isolation.mode before fanning out writers, else siblings clobber each other
/vibe, /goal, /loop are modes, not commandsThey stay on until toggled off; vibe is exclusive with plan and goal, even paused onesToggle off explicitly; leaving vibe kills every worker

Expectations

TrapWhyFix
”It’ll remember” — nomemory.backend ships off; nothing persists between sessionsEnable memory.backend
alwaysApply: true on every rule eats the windowIt injects the rule’s full body into every system promptReserve it for two non-negotiable lines; give others a description (fetched on demand) or a condition (TTSR rule, free until it fires)
Old hashline tutorials teach dead syntaxv17.2.2 (2026-07) replaced SWAP/INS/DEL with PUT/CUT; old op names no longer parseUse PUT/CUT
includeWorkspaceTree breaks prompt cachingThe tree changes on every file modification, busting the provider prefix cache across sessionsKeep it off; the agent has glob and grep
Sampling knobs are not free tuningtemperature, topP and friends default to -1 (provider default); global changes make quality regressions unattributableLeave at -1 absent a controlled eval

Cost

TrapWhyFix
The advisor is a second billOwn model, own transcript, own compactions — roughly one extra review stream per turnEnable deliberately; read omp stats -s
Compaction strategies bill differentlyshake parks tool results as recoverable refs (free); snapcompact renders history to images (needs a vision model); a full LLM summary costs a model call every time/context shows what fills the window before you pick
A wedged stream does not need /clear/clear throws your context away/fresh re-keys the provider stream and keeps context

See also: Settings, Cheat sheet, Tips, Multi-agent, Guide.

Condensed from the omp guide by Hugo Lopes (MIT). Verify against your install: omp config list.