Harnesses file
harnesses.yaml declares the harness profiles that agent tasks select.
A harness profile is a configured instance of an agent-runtime provider: the
executable to run and the runtime options to start from. A profile selects
only from what its provider supports. Kraft refuses, when it reads the file, a
defaults key the provider does not declare or a value it does not accept.
Every agent task's harness: names a profile here, never a provider directly.
Kraft reads the file again at each agent launch, so an edit reaches the next
launch without a restart. A task whose profile is missing or disabled, or
whose harnesses.yaml cannot be read, stops for a human with the reason in
its session log. Kraft never falls back to another profile unless the task
declares a fallback: list.
harnesses:
codex:
provider: codex
enabled: true
executable: codex
defaults:
effort: medium
claude:
provider: claude
enabled: true
executable: claude
defaults:
model: sonnet
| Key | Type | Effect |
|---|---|---|
<profile id> | string | The name a task's harness: selects; lowercase letters, digits, _ and -. |
provider | string | The harness this profile configures: claude, codex, cursor, opencode, gemini, antigravity or amp (see Agent harnesses). |
enabled | boolean | false takes the profile out of service, and a task selecting it stops for a human; defaults to true. |
executable | string | The command to launch when it differs from the provider's default; the provider's own subcommand (codex exec) is kept after it. |
defaults | mapping | The lowest-precedence runtime options (model, effort, permission_mode); any other key stops the task for a human. |
The optional profiles: section holds agent profiles,
the model tiers a task selects with profile:.
profiles:
strong:
effort: high
model: { claude: sonnet, codex: gpt-5.6-terra }
| Key | Type | Effect |
|---|---|---|
<profile id> | string | The name a task's profile: selects; lowercase letters, digits, _ and -. |
model | mapping | Required; maps a provider ID to a model ID, and a provider left out cannot run this profile. |
effort | string | Optional; one effort for every provider, and at least one named provider must accept it. |
fallback | list | Optional; the tier's default fallback list for a task that sets none. |
kraft admin harnesses lists every profile with its provider and the library
tasks that select it, then each agent profile. kraft admin harnesses ID shows
one profile. Settings, Harnesses shows the same beside each provider's
capabilities, and edits one profile at a time. Kraft refuses a save, with the
reason and nothing written, if it would stop an agent task of a chain that
resolves now from launching. Agent profiles are read-only in Settings; edit
them in the file. A save rewrites the file, so it drops your comments.