The agent loop
Turn limits, tool selection, and what runs when.
Agent loop
{
"agent": {
"max_tool_iterations": 200,
"remember_model": true,
"communication": "plain"
}
}
communication picks the register the agent writes in. See How Luxe talks to
you — it takes effect on the next turn, no relaunch.
remember_model (on by default) makes the model and thinking level you pick in a
session the next launch’s starting point, so a choice you already made is not one you
re-make every morning. Precedence, highest first: --model / --thinking flags →
LUXE_MODEL / LUXE_PROVIDER → what you last picked → default_model in
models.json → a built-in workhorse. Flags stay one-offs: they never overwrite the
memory. The record is machine-written and lives in
$XDG_STATE_HOME/luxe/state.json (~/.local/state/luxe/state.json by default) — never
in models.json, which is yours and holds secrets. Delete it any time; the only
consequence is forgetting. Set remember_model to false to always start from the
configured default.
max_tool_iterations bounds the tool-call round-trips inside a single turn. It is
unset by default — a turn runs until the model stops calling tools or you cancel it.
A blind counter is a poor runaway guard; the real ones react to actual failure signals
(the repeated-identical-call doom-loop check, Esc/cancel, context-aware termination).
Set a number when you want a cost ceiling. Reaching it doesn’t cut the turn off
mid-flight: the final round-trip runs with the tools withheld and an instruction to wrap
up, so you get a summary of what happened and what’s left instead of a dangling error.
LUXE_MAX_TOOL_ITERATIONS overrides the config for one run — a positive integer to set
a cap, or 0/off/none/unlimited to lift a configured one.
Tool selection
luxe init writes a tools block that turns individual optional tools off. It’s a deny-list
— every built-in stays enabled unless named, so a new release’s tools are on by default — and the
essential read/write/edit/bash are never disabled even if listed:
{
"tools": {
"disabled": ["screenshot", "web_search", "debug"]
}
}
Run luxe init for an interactive checklist (Y/n per optional tool), or edit this block by hand.
Project .luxe/config.json can disable more tools on top of the global list (the two deny-lists
union). Disabling mcp drops the MCP gateway; disabling web_search/web_fetch removes web
access, and so on — keep only what you use.