Agent stack build plans · oh-my-pi · 5 of 5

The traps

Everything below is a way this specific switch bites people — not generic agent hygiene. Most are five-minute fixes if you know they’re coming.

The default approval mode is YOLO.

Claude Code trained you to expect a permission prompt before anything scary. omp’s out-of-the-box mode runs tool calls — shell included — without asking. It’s a deliberate design choice, not a bug, but it means the muscle memory you bring is wrong on day one. Set tools.approvalMode: write before your first real session (setup, step 4).

Arrays replace; they don’t append.

The settings docs call this “the most common surprise”: a project-level enabledModels or disabledProviders doesn’t extend your global list — it becomes the entire list for that project. Add one allowed model in a repo config and you’ve silently disallowed everything else. Always write the complete desired array at whichever layer you touch.

A typo’d model id costs real money quietly — unless you read the startup warnings.

Unknown models and malformed fallback chains are reported as config warnings when omp starts. If you scroll past them, the entry is skipped and work lands on whatever resolves — often the expensive default you were trying to route around. After every config edit: restart, read the first ten lines.

Routing a subscription is not the same as owning an API key.

Logging omp into your Claude, Copilot or Cursor plan via OAuth is a supported omp feature — but whether your plan’s terms welcome third-party harness traffic is between you and the provider, and terms change. If the account matters to you professionally, skim the provider’s usage policy before making it your daily driver, and keep an API-key fallback in the chain.

Over-cheaping the smol lane.

The simulator’s savings assume the cheap model actually completes the fan-out work. Route smol to something too small and subagents return garbage the frontier model then re-does — you pay twice and blame routing. Downgrade one step at a time and check subagent output for a day before going lower. Same logic, doubled, for advisor: a second model reviewing every turn is a second bill on every turn.

It moves fast — pin the version your workflow depends on.

Five releases shipped in the five days before this page was written (v17.0.5 → v17.0.9). That pace is why the tool is good and why your CI or scripted omp -p jobs shouldn’t track latest blindly. mise use -g github:can1357/oh-my-pi pins; upgrade on your schedule, read release notes for the config-shape changes.

Local models feel free until the context window isn’t.

A local model behind models.yml declares its own contextWindow — get it wrong (or route long-context work at a 32k model) and you’ll see truncation-shaped weirdness, not a clean error. Declare honest limits and keep long-context roles (slow, plan) on models that can actually hold the repo in their head.

Disagree? Pin a note on it →