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.
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).
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.
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.
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.
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.
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.
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.