agent-harness v0.12.0
Find out which of your agent rules actually fire.
A user-owned agent harness with a measurement loop. Every rule names a deterministic detector over the transcript or says in one line why nothing in a transcript can decide it, and lint fails the commit otherwise. harness usage --rules then reports which rules fired, grouped by repository and by the preference variant you had selected.
Preferences you can switch: autonomy, delegation, cost, testing, voice, commits, planning, licensing and build versus buy. Three of those bind to enforcement today: autonomy sets which shell-command grade stops and asks, delegation changes spawn routing, and cost resolves a model and budget table per role. The rest are prose that swaps cleanly. The usage report groups rule hits by the variant that was selected, so a switch can be checked rather than assumed.
Compatibility
- claude-code-cli-macos: unqualified
- claude-code-vscode-macos: unqualified
- claude-code-cli-linux: unqualified
- claude-code-plugin-marketplace: unqualified
- codex-cli-macos: unqualified
- codex-vscode-macos: unqualified
- codex-desktop-macos: unqualified
- codex-cli-linux: unqualified
- cursor: planned
- grok: planned
Native restrictions remain authoritative. See the versioned compatibility catalog for evidence and gaps.
Compatibility policy
Stable interfaces, preview boundaries, deprecation, migration and failed-release recovery are defined in the versioned compatibility policy.
Migration
Upgrade from v0.11.1 by reviewing the generated v0.12.0 projection before applying it: a minor release that adds the /land and /close-out workflows, a local decision log, an optional OTLP export of the usage ledger with an optional per-runtime pass-through to each client's own telemetry, and harness remote-control. harness sync now installs the Claude Code output style named by your voice stance instead of a fixed one, so a selection you never made explicitly can change; nothing is exported and no supervisor is installed until you turn each on. The architecture-viewer preview is inert until an external adapter is registered and selected. This release carries no native qualification: no client holds acceptance evidence for this source, no client is required for release, and v0.11.1 remains the last release qualified on the Claude Code and Codex CLIs for macOS and Linux.
- Run
harness sync --dry-runfrom the v0.12.0 checkout and inspect every proposed write, ownership change and conflict. Expect two new commands,close-outandland, and expect the installed Claude Code output style to follow yourvoicestance: if you had selected a style by hand, select the matchingvoicevariant before syncing or the sync changes it. - Run
harness synconly after resolving unmanaged-file and adoption conflicts. - Telemetry stays off unless you ask for it. To export the ledger, add a
telemetryblock to your configuration:exportturns on OTLP/HTTP, andnativetakestrue,falseor a list of runtime names, so a collector only one runtime can authenticate against is written only for that runtime. Read headers from an environment variable or a mode-600 file outside every git work tree, never inline. See docs/telemetry.md. - Expect new owner-only local state:
~/.local/state/agent-harness/decisions.jsonl, an append-only record of what a hook decided and what settled it. It is pruned with the rest of the local state, read only byharness usage, and removed byharness uninstall. harness remote-control installregisters a launchd agent that supervises a Claude Code Remote Control host. It is opt-in, installs nothing on its own, andharness remote-control uninstallremoves both the agent and the healer.
Recovery
- Preserve reported conflicts, adopted backups, external viewer adapter descriptors and external viewer installations.
- To return to v0.11.1, run
harness remote-control uninstallif you installed it, remove thetelemetryblock from your configuration and runharness synconce from the v0.11.1 checkout; v0.11.1 ignoresdecisions.jsonland restores the fixed output style from its own settings template. - Use
harness uninstall --dry-runbefore uninstalling, and follow docs/runtime-installation.md for rollback and ownership recovery; use docs/bmad.md for task continuation.