Renaming a variable doesn't need two minutes of thinking. Finding the race condition that only shows up in production does. Verboo Code's /effort controls exactly that: it sets how much the model reasons before answering, using the levels the active model actually offers. This guide covers the commands, where the level is saved and why it sometimes seems not to stick.
What does /effort do in Verboo Code?
It picks the reasoning level (effort) the CLI requests from the model on every call. With no argument, it opens a picker with the levels available for the current model:
/effort
The list is not fixed. Verboo Code reads the levels the router advertises for each model in /models, so one model may offer low and high while another offers low, medium and high. In the picker, Enter confirms and Esc cancels. The first option is always Auto, described as "Use the default effort level for your model".
Which commands does /effort accept?
Five forms, all read straight from src/commands/effort/effort.tsx:
| Command | What it does |
|---|---|
/effort | Opens the picker with the active model's levels |
/effort high | Pins the level and saves it for future sessions |
/effort current or /effort status | Shows the level that applies right now |
/effort auto or /effort unset | Clears the saved level and lets the model decide |
/effort help | Shows usage: /effort [level|auto] |
Level names are case-insensitive: /effort HIGH and /effort high do the same thing. When you pin a level, the CLI replies Set effort level to high: followed by the level description.
Which level should I use for each task?
Start on automatic and raise it only when answers come back shallow. The descriptions below are the ones the CLI itself shows in the picker:
| Level | CLI description | Good for |
|---|---|---|
low | Quick, straightforward implementation with minimal overhead | Renames, formatting, one-line fixes, quick questions about the code |
medium | Balanced approach with standard implementation and testing | Small features, new tests, local refactors |
high | Comprehensive implementation with extensive testing and documentation | Hard bugs, changes across many files, architecture design |
max | Maximum reasoning for the most complex tasks | The problem that already beat high, when the model offers this level |
More reasoning makes each answer slower. So it pays to lower the level in sessions full of small edits and raise it only for the hard part, instead of leaving everything at the top.
Where is the level saved?
In ~/.verboo/settings.json, under the effortLevel key. It's the user settings file, so it applies to every project:
{
"effortLevel": "high"
}
If you use VERBOO_CONFIG_DIR to point to another config folder, the file lives there. /effort auto removes the key and replies Effort level set to auto.
Why does /effort seem not to stick?
Almost always it's the CLAUDE_CODE_EFFORT_LEVEL environment variable. It beats any choice made in the session. When it's set to a different value, /effort still saves your choice, but warns that the variable keeps control of this session. The full order, strongest first:
| Order | Source | Scope |
|---|---|---|
| 1 | CLAUDE_CODE_EFFORT_LEVEL | Every process started with it. auto or unset forces automatic |
| 2 | /effort <level> inside the session | The current session, and saved for the next ones |
| 3 | --effort <level> flag | Only the session opened with it, not saved |
| 4 | effortLevel in settings.json | Loaded at the start of each session |
| 5 | Auto | The default the router reports for the model |
To check and clear the variable in your shell:
echo $CLAUDE_CODE_EFFORT_LEVEL
unset CLAUDE_CODE_EFFORT_LEVEL
Then reopen the CLI and run /effort current. On automatic, the reply is Effort level: auto (currently high), with the model's default level in parentheses. With a pinned level, it's Current effort level: high followed by the description.
What if I switch models?
The saved level is checked against the active model before each call. If the new model doesn't have that level, its default applies. So after a /model, run /effort current to see what's in effect. If you ask for a level the model doesn't have, the CLI refuses and lists the available ones:
Invalid reasoning level: max. Available for <model>: low, high, auto
On a model without reasoning control, the reply is Reasoning is not supported for <model>. The level names in the example are illustrative; the real ones show up in the message.
How do I set effort in a script or CI?
Use the flag per run, or the variable for the whole process:
verboo --effort low -p "update the CHANGELOG with the commits since the last tag"
CLAUDE_CODE_EFFORT_LEVEL=high verboo -p "find out why the integration test fails intermittently"
The --effort flag accepts low, medium, high and max and rejects anything else up front. It applies only to that run and doesn't touch settings.json, which is the right behavior for a pipeline: each job declares what it needs.
How does this fit with the other commands?
- /plan pairs well with
high: high reasoning while planning, a lower level while executing. - /context shows what's filling the window, another common cause of weak answers.
- /compact summarizes the conversation when it gets too long.
On Verboo Code tokens are unlimited, so raising /effort costs response time, not money: create your account at verboo.ai, open the CLI in your repo and run /effort high on the next bug that fights back.



