---
title: ThinkingLevel
description: "How hard the model thinks before it answers: `\"off\"`, `\"minimal\"`, `\"low\"`, `\"medium\"`, `\"high\"` or `\"xhigh\"`."
---

# `ThinkingLevel`

Type, in `@jr2/orchestrator/src/agent.ts`. It is an export of `@jr2/orchestrator`, on the [Authoring surface](../authoring-surface.md) page, in Agents.

```ts
type ThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
```

How hard the model thinks before it answers: `"off"`, `"minimal"`, `"low"`, `"medium"`,
`"high"` or `"xhigh"`. Set it on an Agent's definition (`thinkingLevel`), or for one Turn in the
invoke's `input`.

A model can lack a level. Claude Sonnet 5.5 has no `"off"`, and at `"off"` the Harness's request
then sends effort `"high"`. The Harness does not refuse such a level: it runs the Turn, and the
printed conversation names the level that the model ran at.

**Example**

```ts
import { agent, type ThinkingLevel } from "@jr2/orchestrator";

const effort: ThinkingLevel = "high";

export const reviewer = agent({
  model: "anthropic/claude-haiku-5-5",
  instructions: "You review diffs for correctness.",
  thinkingLevel: effort,
});
```

**See also**

- [Set an Agent's access and Dials](../../guides/set-an-agents-access-and-dials.md)
- [ADR-0018: The instance authors Agent definitions; jr2 assembles the Harness](../decisions/0018-instance-agents-are-definitions-jr2-assembles-the-harness.md)
