On this page
Reasoning and ultracode
Reasoning effort is how long the model thinks before it answers. More thinking helps with hard problems and costs more tokens and time. Ultracode turns thinking up to the maximum and lets the agent split big work across child agents.
Change the reasoning effort
- Press Alt+R, or run
/reasoning. - Pick a level. The list shows only the levels the current model supports.
Or name it directly: /reasoning high.
| Choice | Means |
|---|---|
| provider default | Let the model decide, or use your configured default |
none … max |
That level, if the model offers it |
The level applies to every message you send until you quit the TUI. If you switch to a model that does not offer it, Haarness goes back to the default.
To set a default for every chat, in your configuration,
haarness.json:
{
"defaults": {
"reasoning_effort": "medium" // none, minimal, low, medium, high, xhigh or max
}
}Show or hide the model's thinking
Ctrl+T switches how the model's thinking appears in the transcript, and the TUI remembers it:
- Compact (the default): one row shows the latest line while the model thinks, then becomes Thought for 12s, which you can open.
- Show: the thinking in full.
- Hide: none of it.
The same switch is at the bottom of the /reasoning list.
Ultracode
Ultracode is for difficult work and work you want checked independently: a large migration, an audit, a hard bug. When it is on:
- the model uses the strongest reasoning level it offers (
xhighfor Claude models); - the agent is guided to split big work into child agents or one workflow when that helps, and to work directly when it does not;
- child agents it starts use ultracode too.
It uses noticeably more tokens. Leave it off for everyday edits.
| To | Do |
|---|---|
| Turn it on or off for this chat | /ultracode |
| Use it for one message only | Write the word ultracode in the message |
| Turn it off and go back to the default | /reasoning off |
| Use it in a script | haarness run --ultracode "Audit every API boundary" |
The chat remembers the setting. To have new chats start with it on, in your configuration:
{
"defaults": {
"ultracode": true
}
}Watch the child agents
When the agent hands work to child agents, each one shows as a row under the tool call, with its own status. The sidebar lists the running ones.
| To | Do |
|---|---|
| Watch a child's live transcript | Ctrl+O or /tasks, then pick one |
| Move between children | ← and → while watching. ↑ returns to your chat |
| Stop waiting for a child | /background. It finishes on its own and reports back |
| Stop them all | Esc twice. Stopping a turn stops its children |
A child agent uses your chat's model unless its agent definition names another. It asks for approval the same way your chat does, and follows the chat's Review, Auto or Yolo mode. How many run at once is set in Execution budgets.
Related
- Run a prompt from a script or CI:
--ultracodeand--wait-backgroundfrom scripts - Slash commands: every command in one list