← All features

Run the agentsAvailable in v0.3.0

Your pins, pools, caps and floors stay in force

New in v0.3.0: benchmark-based choice never overrides what you configured. Your pinned models, tier pools, effort caps and task floors stay in force throughout. oah does not edit your config: a pin always wins, effort_caps clamp to a supported level, and the old default quality_order simply counts as unset.

When you need it

An automatic chooser that ignores the models you have checked, or your budget limits, would make every update a risk.

How it works

  1. Pin a model for a tier with [engines.<engine>.tiers] <tier> = { model = "<model>" } in .oah/config.toml; a pin always wins.
  2. tier_pools, your own quality_order, allowed_models and effort_caps keep their meaning.
  3. effort_caps clamp to a supported level and record OAH_EFFORT_CAPPED; a cap below a model's floor skips that model.
  4. The old default quality_order = ["opus", "sonnet", "haiku"] counts as unset (OAH_MODEL_ORDER_IGNORED); remove the line, or list other models to rank them yourself.
  5. Codex's default flag and the model in your Codex configuration no longer choose; to keep one model, pin it.

Example

Pin a model for a tier in `.oah/config.toml` (from Concepts and Upgrade).

[engines.<engine>.tiers] <tier> = { model = "<model>" }

Requirements

  • Available in the v0.3.0 model chooser.

Limits and recovery

  • An unrunnable pin stops with OAH_CONFIG_INVALID.
  • A narrow allowed_models no longer lowers a floor; when no allowed model reaches it, a review stops with OAH_MODEL_BELOW_FLOOR and any other call with OAH_MODEL_UNRESOLVED.
  • Claude Code accepts names it does not print, so Claude pins are not checked against a list.

Original documents

Related