Skip to content

Configuration reference

Every key .claudebox/settings.toml accepts, with its type, its default and what it does. For how the files compose and which one wins, see the configuration guide.

Settings are TOML. Claudebox walks up from the working directory, then reads your home directory, and deep-merges what it finds - nearest wins. A file declaring root = true stops the walk there.

Top level

KeyTypeDefaultMeaning
rootbooleanfalseStop searching parent directories for further settings files
profilepath~/.claudebox/profile when that directory existsProfile directory supplying prompts, hooks, skills, commands and agents
agentstring"claude"Which runtime to launch: claude or langgraph
backendstring"podman"Container runtime: podman or docker

Paths accept ~ and relative forms; both are resolved when the settings are loaded.

Container

KeyTypeDefaultMeaning
[mounts]table of path = pathnoneExtra host-path to container-path mounts. The workspace itself is always mounted at the same path inside and out
[ports]table of int = intnoneHost port to container port. A host port of 0 takes a random free one
[network] modestringunsetContainer network mode. Unset gives the session its own private network namespace
[containers] nestedbooleanfalseLet the agent build images and run containers inside its session. See nested containers
[env]table of name = valuenoneEnvironment variables passed into the container

Interface

KeyTypeDefaultMeaning
[editor] url_templatestringunsetURI opened by the "open in IDE" controls. {path} and {line} are substituted. Unset hides the controls
[links] allowlist of patternsnonePatterns a shared link's carried message must match in full before it may auto-submit. Omitted allows none

LangGraph runtime

Read when agent = "langgraph".

KeyTypeDefaultMeaning
[langgraph] modelstringunsetModel in LangChain's provider:model-id form
[langgraph] max_tokens_overrideintegerunsetContext window for a model the built-in table does not carry
[langgraph.<provider>]tablenoneForwarded verbatim to that provider's chat constructor - base_url, reasoning, thinking, reasoning_effort and anything else it accepts
[langgraph.cost]table of model = { input, output }nonePrice per million tokens for a model the built-in price table does not carry
[langgraph.hooks]table of event = pathconventional pathsProfile hook scripts by lifecycle event; relative paths resolve against the profile
[langgraph.web_search] providerstring"duckduckgo"Backend for the web search tool
[langgraph.web_search] api_key_envstringunsetEnvironment variable holding the search provider's key
[langgraph.mcp.<name>]tablenoneOne MCP server connection. transport plus command and args for stdio, or url for SSE

A provider's credentials come from the environment, not from these files.

A worked file

root = true
agent = "claude"
backend = "podman"
profile = "~/.claudebox/profile"
[mounts]
"/data/models" = "/models"
[ports]
8080 = 80
[containers]
nested = true
[editor]
url_template = "jetbrains://idea/navigate/reference?project=demo&path={path}:{line}"
[env]
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC = 1

Details