agent-harness v0.13.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: qualified
- claude-code-vscode-macos: unqualified
- claude-code-cli-linux: qualified
- 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.12.0 by reviewing the generated v0.13.0 projection before applying it: a minor release that adds declared framework integrations under policy/integrations/ with a generic harness integration check|apply, spawn-hook confinement that classifies a framework's review layers however the client names them, an opt-in jev decision provider, a sampled record of allowed Bash commands in the decision log, and an optional completion-claim field on the stop-gate row. /plan now enters the runtime's plan mode and hands the approved plan to /build, the output style and the skill and role descriptions are shorter, and the settings template no longer carries a hooks block. No network call is made and no assistant text is recorded until you turn each on. The architecture-viewer preview is inert until an external adapter is registered and selected.
- Run
harness sync --dry-runfrom the v0.13.0 checkout and inspect every proposed write, ownership change and conflict. Expect no new commands, skills or roles: expect changed text in theplanandbuildcommands, thescannableoutput style, every skill and role description, thedelegationandcoststances and the delegation rule. The installed hook registration does not change, because sync already wrote the single-coordinator registration. - Run
harness synconly after resolving unmanaged-file and adoption conflicts. harness bmad check|applyremains an alias ofharness integration check|apply bmad. If you route BMad code review through the harness, runharness integration check bmad <framework-root>and thenapply; installed override files are unaffected either way.- The
jevdecision provider stays off unless you ask for it.governance.jev.modeandgovernance.jev.modes.<point>takeoff,shadow,adviseoract, every point defaults tooff, andgovernance.jev.state_fieldsis empty by default. While~/.local/state/agent-harness/jev-disabledexists every call is disabled. Read the credential from an environment variable, never inline. - Expect
grade-bashrows markedsampled: truein~/.local/state/agent-harness/decisions.jsonl: one allowed Bash command in twenty, redacted before it is capped.telemetry.allow_sample_rate: 0ortelemetry.decisions: falseturns them off.telemetry.completion_claimis off by default and is the only field that records assistant prose.
Recovery
- Preserve reported conflicts, adopted backups, external viewer adapter descriptors and external viewer installations.
- To return to v0.12.0, remove any
governance.jevblock and thetelemetry.allow_sample_rateandtelemetry.completion_claimkeys from your configuration and runharness synconce from the v0.12.0 checkout; useharness bmad check|applythere, since v0.12.0 has noharness integrationcommand. - Use
harness uninstall --dry-runbefore uninstalling, and follow docs/runtime-installation.md for rollback and ownership recovery; use docs/task-continuation.md for task continuation.