Skip to content

Operating Packs

Operating packs let you activate a named bundle of behavior for one BMO session without rewriting the project config. A pack can bring together skills, hooks, policy rules, choreography, and an optional prompt preamble into a repeatable operating mode.

Use packs when a task has a recognizable posture: review this PR cautiously, run an SRE investigation, apply a team policy bundle, or turn on a workspace-sensing stack for one session.

Maturity: Advanced operator surface. Packs are useful once you have repeatable task postures; they are session overlays, not persistent project configuration.

  • You only need to change a durable project default; edit config instead.
  • You need multiple behavior bundles active at once; one pack is active per session.
  • You cannot review the pack preview safely before activation.

An active pack overlays the base configuration for the current session. Clearing the pack restores base behavior.

SurfaceWhat the pack can affect
SkillsSession-active skills by name
HooksRunloop and lifecycle hooks
RulesPolicy, task, and skill rules
ChoreographyThe preset used to shape run behavior
Prompt preambleOptional instructions prepended for that session

One pack is active at a time. Activating a second pack replaces the first. The active pack reference is persisted with the session so it can be restored after restart when the pack file still resolves.

options.operating_packs = true

Put pack manifests under packs/ in the working directory. A pack can be a pack.toml inside a subdirectory or another TOML manifest discovered by the pack picker.

Open /pack or the Commands modal, choose an operating pack, inspect the preview, then confirm activation. The preview is the safety step: it shows the skills, hooks, rules, choreography, and preamble before BMO changes the session overlay.

Use the clear action in the same picker to return to the base config.

For a read-only CLI posture check, run bmo config show-operating-mode. It shows the effective feature gate, inactive/disabled posture, configured preset IDs, and local discovery counts without printing hook commands, preamble text, raw policies, or secrets.

The agent can inspect and mutate the active pack with:

ToolPurpose
get_operating_modeRead the active operating pack posture snapshot
session_set_packActivate a pack for a session
session_clear_packClear the active pack

For one-shot runs, pass --operating-pack <pack> to bmo run or bmo eval run so the session uses the requested pack from creation. Eval JSON reports include the operating_pack value so A/B runs can be compared without inferring the posture only from process arguments.

Packs are session-scoped. They do not edit bmo.toml, and a failed activation leaves the current session state unchanged.

Before activation, BMO validates the pack. Error-level diagnostics block activation. Warnings are shown but do not block.