Nineteen omp behaviours that cost real time, each with the reason and the fix.
Config
| Trap | Why | Fix |
|---|---|---|
| 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 layer | Config arrays (bash.patterns, compaction.methodOrder, …) never merge across layers; a project bash.patterns deletes every global guard for that project | Load 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 nothing | A higher layer (project file, overlay, CLI flag) shadows it | omp config get <key> prints the merged effective value |
allow rules inert under yolo | Default approval mode auto-approves everything; only deny and prompt entries in bash.patterns act | Allow-lists matter only once you switch to write or always-ask |
eval is not gated by bash.patterns | Python/JS cells spawn shells at the exec tier; a bash deny does not cover it | Set tools.approval.eval |
Autonomy
| Trap | Why | Fix |
|---|---|---|
yolo is the default | Fresh install, zero prompts: reads, writes, shell all auto-approve | Choose posture deliberately — see Settings |
| Provider 429-storms | providers.maxInFlightRequests defaults to unlimited, task.maxConcurrency to 32; one fan-out can burn a rate-limit window in minutes | Cap 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 command | Finite cap 600–900s plus auto-backgrounding |
Modes
| Trap | Why | Fix |
|---|---|---|
--plan is not plan mode | The flag only sets which model the plan role uses | Plan mode is /plan or Alt+Shift+P; the launch flag that starts a planning session is --plan-yolo |
isolated: true silently absent | The task-spawn field appears only once task.isolation.mode is set (ships as none); also needs a git repo and plan mode off | Set task.isolation.mode before fanning out writers, else siblings clobber each other |
/vibe, /goal, /loop are modes, not commands | They stay on until toggled off; vibe is exclusive with plan and goal, even paused ones | Toggle off explicitly; leaving vibe kills every worker |
Expectations
| Trap | Why | Fix |
|---|---|---|
| ”It’ll remember” — no | memory.backend ships off; nothing persists between sessions | Enable memory.backend |
alwaysApply: true on every rule eats the window | It injects the rule’s full body into every system prompt | Reserve 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 syntax | v17.2.2 (2026-07) replaced SWAP/INS/DEL with PUT/CUT; old op names no longer parse | Use PUT/CUT |
includeWorkspaceTree breaks prompt caching | The tree changes on every file modification, busting the provider prefix cache across sessions | Keep it off; the agent has glob and grep |
| Sampling knobs are not free tuning | temperature, topP and friends default to -1 (provider default); global changes make quality regressions unattributable | Leave at -1 absent a controlled eval |
Cost
| Trap | Why | Fix |
|---|---|---|
| The advisor is a second bill | Own model, own transcript, own compactions — roughly one extra review stream per turn | Enable deliberately; read omp stats -s |
| Compaction strategies bill differently | shake 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.