2025-12-09 17:51:05 +00:00
---
summary: "Directive syntax for /think levels and how they affect model reasoning"
read_when:
- Adjusting thinking level parsing or defaults
---
2025-12-03 08:45:30 +00:00
# Thinking Levels (/think directives)
## What it does
- Inline directive in any inbound body: `/t <level>` , `/think:<level>` , or `/thinking <level>` .
- Levels (aliases): `off | minimal | low | medium | high`
- minimal → “think”
- low → “think hard”
- medium → “think harder”
- high → “ultrathink” (max budget)
- `highest` , `max` map to `high` .
## Resolution order
1. Inline directive on the message (applies only to that message).
2. Session override (set by sending a directive-only message).
3. Global default (`inbound.reply.thinkingDefault` in config).
4. Fallback: off.
## Setting a session default
- Send a message that is **only** the directive (whitespace allowed), e.g. `/think:medium` or `/t high` .
- That sticks for the current session (per-sender by default); cleared by `/think:off` or session idle reset.
2025-12-03 08:54:38 +00:00
- Confirmation reply is sent (`Thinking level set to high.` / `Thinking disabled.` ). If the level is invalid (e.g. `/thinking big` ), the command is rejected with a hint and the session state is left unchanged.
2025-12-03 08:45:30 +00:00
## Application by agent
2025-12-13 13:25:49 +00:00
- **Pi**: injects `--thinking <level>` (skipped for `off` ). Other agent paths have been removed.
2025-12-03 08:45:30 +00:00
2025-12-03 09:04:37 +00:00
## Verbose directives (/verbose or /v)
- Levels: `on|full` or `off` (default).
- Directive-only message toggles session verbose and replies `Verbose logging enabled.` / `Verbose logging disabled.` ; invalid levels return a hint without changing state.
- Inline directive affects only that message; session/global defaults apply otherwise.
2025-12-13 13:25:49 +00:00
- When verbose is on, agents that emit structured tool results (Pi, other JSON agents) send each tool result back as its own metadata-only message, prefixed with `[🛠️ <tool-name> <arg>]` when available (path/command); the tool output itself is not forwarded.
2025-12-03 09:04:37 +00:00
2025-12-03 08:45:30 +00:00
## Heartbeats
- Heartbeat probe body is `HEARTBEAT /think:high` , so it always asks for max thinking on the probe. Inline directive wins; session/global defaults are used only when no directive is present.
2025-12-08 16:09:04 +00:00
## Web chat UI
- The web chat thinking selector mirrors the session's stored level from the inbound session store/config when the page loads.
- Picking another level applies only to the next message (`thinkingOnce` ); after sending, the selector snaps back to the stored session level.
- To change the session default, send a `/think:<level>` directive (as before); the selector will reflect it after the next reload.