Configuration
Precedence
Section titled “Precedence”Kent resolves settings in this order (ascending priority):
- Built-in defaults
~/.kent/config.toml<workspace-root>/.kent/config.toml- Environment variables
kent runCLI flags
Interactive session flows resolve workspace-local config from the session workspace root.
Locations
Section titled “Locations”Persistence root
Section titled “Persistence root”- Workspace settings live at:
<workspace-root>/.kent/config.toml. Note that workspace root is not necessarily the same as where you might have started the TUI - it’s where the agent will actually do the work. - Global settings live at:
~/.kent/config.toml, and this location (along with all other data storage) is overridable via--persistence-root. The flag also relocates the root’s model-visible global context — globalAGENTS.md, the global system-prompt file, global skills, and generated assets.kent serviceis also root-aware. Each--persistence-rootinstall bakes the root into the registration. The OS still holds a single service, so install with the root you want managed.
Example
Section titled “Example”model = "gpt-5.6-sol"provider_identifier = "kent"thinking_level = "medium" # low, medium, high, xhigh, max, ultramodel_verbosity = "low" # or "medium" / "high"max_subagent_depth = 2 # 0 through 30; 0 blocks model-originated child creation# system_prompt_file = "SYSTEM.md" # relative to this config.toml directorytheme = "auto" # or light / darkweb_search = "native"compaction_mode = "local" # or "native" (if supported)cache_warning_mode = "default" # cache invalidation warning frequency; or "verbose" / "off"server_host = "127.0.0.1"server_port = 53082
[timeouts]model_request_seconds = 400
[tools]shell = true# Leave both patch/edit commented to use Kent's model-based default.# patch = true# edit = falseview_image = trueweb_search = truetrigger_handoff = true # proactive compaction by the model
[shell]postprocessing_mode = "all" # shell output token optimizations by Kent: none | builtin | user | all# postprocess_hook = "~/.kent/shell_postprocess_hook" # custom processor, see docs
[hooks.client]# lifecycle = ["python3", "/absolute/path/lifecycle_hook.py"]
[workflow]completion_mode = "auto"concurrency = 5 # Agent Node scheduling capacity; Script Nodes do not use itmax_invalid_completion_attempts = 5pre_compaction_tokens = 247380 # defaults to 70% of context_compaction_threshold_tokensuse_required_tool_calls = truesubagents = false # TOML-only; workflow agents cannot launch custom roles unless enabled
[skills]"skill name" = true
[reviewer] # aka supervisorfrequency = "edits"# model = "gpt-5.6-sol"# model_verbosity = "low"# provider_override = "openai"# openai_base_url = "http://127.0.0.1:11434/v1"# auth = "none" # or "inherit"# model_context_window = 64000timeout_seconds = 120verbose_output = false # show supervisor suggestions in ongoing transcript# system_prompt_file = "~/.kent/reviewer_system_prompt.md"
# custom subagent roles config, fast is the default one, always provided[subagents.fast]# agent_callable = true# description = ""# model = "gpt-5.6-terra"# thinking_level = "low"# priority_request_mode = trueWorkflow subagent delegation
Section titled “Workflow subagent delegation”[workflow] subagents defaults to false and has no environment override. Set it to true to let workflow agents delegate to eligible custom roles. This setting does not affect direct workflow-node assignment.
workflow_subagent is optional role metadata and defaults to true. A custom role is callable by a workflow agent only when agent_callable, [workflow] subagents, and its effective workflow_subagent value all permit it. The global workflow setting remains authoritative.
CLI Overrides
Section titled “CLI Overrides”| Flag | Overrides | Notes |
|---|---|---|
kent run --model |
model |
|
kent run --provider-override |
provider_override |
|
kent run --thinking-level |
thinking_level |
|
kent run --theme |
theme |
|
kent run --model-timeout-seconds |
timeouts.model_request_seconds |
|
kent run --tools |
entire tool set | CSV replacement, not a merge |
kent run --openai-base-url |
openai_base_url |
Also affects continuation behavior |
Reference
Section titled “Reference”Core Settings
Section titled “Core Settings”| Key | Type | Default | Env | CLI | Description |
|---|---|---|---|---|---|
model |
string | gpt-5.6-sol |
KENT_MODEL |
kent run --model |
Model name. If provider inference from the model name is not enough, set provider_override too. |
max_subagent_depth |
int | 2 |
Maximum depth for model-originated creation of new child agents. A root is depth 0; values must be from 0 through 30, and 0 blocks all model-originated child creation. Kent uses the active global-then-workspace value for every launch attempt. |
||
thinking_level |
string | medium |
KENT_THINKING_LEVEL |
kent run --thinking-level |
Provider-specific reasoning effort string. |
model_verbosity |
string | low |
Text verbosity hint for supported models. Allowed: "", low, medium, high. Unsupported models ignore it. |
||
system_prompt_file |
string | "" |
Main system prompt file. Relative paths resolve from the containing config.toml directory. Empty files are skipped. |
||
theme |
string | auto |
KENT_THEME |
kent run --theme |
TUI theme. Allowed: auto, light, dark. light and dark force Kent’s fixed palettes. auto or an omitted value falls back to terminal background detection. |
notification_method |
string | auto |
KENT_NOTIFICATION_METHOD |
Terminal notification backend. Allowed: auto, osc9, bel. auto chooses osc9 on supported terminals and falls back to bel. |
|
hooks.client.lifecycle |
string array | unset | Global-only command and fixed arguments for interactive TUI lifecycle hooks. Empty arrays and blank arguments are invalid. | ||
tool_preambles |
bool | true |
KENT_TOOL_PREAMBLES |
Includes tool-usage preambles in the main system prompt for interactive runs. Headless kent run still suppresses them. |
|
priority_request_mode |
bool | false |
Enables fast-mode requests where the provider supports them. | ||
debug |
bool | false |
KENT_DEBUG |
Enables global developer-oriented strictness and logging. Only use for development/debugging | |
server_host |
string | 127.0.0.1 |
KENT_SERVER_HOST |
Exact TCP app-server host Kent will dial or listen on. Kent does not use discovery files or silent port rebinding. Same-machine Unix socket optimization, when supported, is derived automatically and does not override an explicit TCP target. | |
server_port |
int | 53082 |
KENT_SERVER_PORT |
Exact TCP app-server port Kent will dial or listen on. Must match across clients attached to the same persistence root. Same-machine Unix socket optimization, when supported, is additive only and does not override an explicit TCP target. | |
web_search |
string | native |
KENT_WEB_SEARCH |
Web search backend. Allowed: off, native. custom (e.g. Brave Search) is not implemented yet, on the roadmap. |
|
provider_override |
string | "" |
KENT_PROVIDER_OVERRIDE |
kent run --provider-override |
Forces provider family for custom or alias model names. Allowed: openai, anthropic. Requires an explicit model override. |
provider_identifier |
string | kent |
KENT_PROVIDER_IDENTIFIER |
Sets the originator header and the <provider_identifier>/<Kent version> User-Agent on OpenAI, ChatGPT Codex, and OpenAI-compatible model-provider requests. The value must be a non-empty HTTP product token, such as kent, my-agent, or acme_codex. A restarted server applies the active value to resumed sessions. |
|
openai_base_url |
string | "" |
KENT_OPENAI_BASE_URL |
kent run --openai-base-url |
OpenAI-compatible base URL. Must be used with provider_override=openai or with no explicit provider override. Cannot be changed mid-session. |
store |
bool | false |
KENT_STORE |
Sets OpenAI Responses store=true for main model requests. |
|
allow_non_cwd_edits |
bool | false |
KENT_ALLOW_NON_CWD_EDITS |
Lets first-class file edit tools edit files outside the Session’s Execution Target Root and the bounded collection of up to 500 most recently attached Workspaces in its current Project. Older attached Workspaces still require ordinary approval. The native file tools already allow targets under operating-system temporary roots and their canonical platform aliases without approval; this setting does not override path-deny rules or the prohibition on directly editing another Kent-managed Worktree. This is not sandboxing - the model can still bypass this easily. | |
model_context_window |
int | 372000 |
KENT_MODEL_CONTEXT_WINDOW |
Explicit context-window size used for compaction and token accounting. Must be at least 40000. |
|
context_compaction_threshold_tokens |
int | 353400 |
KENT_CONTEXT_COMPACTION_THRESHOLD_TOKENS |
Auto-compaction threshold. Must be > 0, < model_context_window, and at least 50% of model_context_window. The default is derived from the default context window. |
|
pre_submit_compaction_lead_tokens |
int | 35000 |
KENT_PRE_SUBMIT_COMPACTION_LEAD_TOKENS |
Fixed pre-submit runway reserve before auto-compaction. Kent compacts before sending the next user prompt once (context_compaction_threshold_tokens - this threshold) is reached. |
|
minimum_exec_to_bg_seconds |
int | 15 |
KENT_MINIMUM_EXEC_TO_BG_SECONDS |
Default floor for exec_command yield time before it moves to background and lets Kent manage it asynchronously. Must be > 0. Use if model frequently expects your commands to complete fast, they background, and force model to poll for them. |
|
compaction_mode |
string | local |
KENT_COMPACTION_MODE |
Allowed: native, local, none. native prefers provider-native compaction and falls back to local compaction. local always uses local summary compaction. none disables auto-compaction and makes manual compaction fail. |
|
cache_warning_mode |
string | default |
KENT_CACHE_WARNING_MODE |
Prompt-cache warning policy. Allowed: off, default, verbose. default catches unwanted invalidations and keeps them in detail mode. verbose includes everything from default, surfaces cache warnings in ongoing mode too, and a broader range of warnings. |
|
shell_output_max_chars |
int | 16000 |
KENT_SHELL_OUTPUT_MAX_CHARS |
Output budget for shell tools and background-shell notices before they are truncated. | |
bg_shells_output |
string | default |
KENT_BG_SHELLS_OUTPUT |
Background-shell output mode (injection of shell outputs into model context). Allowed: default, verbose, concise. Verbose dumps all output into the main agent’s model. Concise forces it to read output files. Default outputs truncated previews + gives a file path. |
|
shell.postprocessing_mode |
string | builtin |
KENT_SHELL_POSTPROCESSING_MODE |
Semantic post-processing mode for exec_command. Allowed: none, builtin, user, all. builtin enables Kent processors only. all runs Kent processors first, then your hook. |
|
shell.postprocess_hook |
optional string | unset | KENT_SHELL_POSTPROCESS_HOOK |
Executable/script path for a single local command post-processing hook. Omit the TOML key or unset the environment variable when unused; empty and whitespace-only values are invalid. Kent sends JSON on stdin and expects JSON on stdout. | |
prevent_sleep |
string | active |
KENT_PREVENT_SLEEP |
Prevent system sleep while Kent is running. Allowed: always (while the server process is live), active (while any agent is working, plus up to one minute of idle-confirmation grace), never (disabled). Only system sleep is inhibited; screensaver and display sleep are unaffected. |
|
timeouts.model_request_seconds |
int | 400 |
KENT_TIMEOUTS_MODEL_REQUEST_SECONDS |
kent run --model-timeout-seconds |
Model request timeout. Must be > 0. For non-streaming requests it bounds the whole request. For streaming responses it is a per-event idle window: the request is only aborted when no streaming activity arrives within this duration (measured from dispatch, so it also bounds time-to-first-event), letting a healthy long generation stream past it while a dead stream fails fast. |
Workflow
Section titled “Workflow”| Key | Type | Default | Env | Description |
|---|---|---|---|---|
workflow.completion_mode |
string | auto |
KENT_WORKFLOW_COMPLETION_MODE |
Default completion mode for workflow agent nodes that inherit the global default. Allowed: auto, structured_output, tool, shell_command, unstructured_output. |
workflow.concurrency |
int | 5 |
KENT_WORKFLOW_CONCURRENCY |
Agent Node scheduling capacity. Explicit workflow actions may exceed it. Script Nodes do not use it. Must be > 0. |
workflow.max_invalid_completion_attempts |
int | 5 |
KENT_WORKFLOW_MAX_INVALID_COMPLETION_ATTEMPTS |
Number of invalid workflow completion attempts allowed before Kent interrupts the run. Must be > 0. |
workflow.pre_compaction_tokens |
int | 70% of context_compaction_threshold_tokens, rounded down |
Workflow Session pre-compaction threshold. Must be positive and no greater than context_compaction_threshold_tokens. File-only; not available in subagent role settings. |
|
workflow.use_required_tool_calls |
bool | true |
Uses provider-required tool selection for tool and shell_command workflow completion modes. Set to false to use automatic tool selection while preserving Kent’s workflow completion validation. |
|
workflow.subagents |
bool | false |
Allows workflow agents to launch eligible custom roles. |
Supervisor
Section titled “Supervisor”Configure the supervisor agent that oversees model changes (“reviewer” is the legacy name of the feature).
| Key | Type | Default | Env | Description |
|---|---|---|---|---|
reviewer.frequency |
string | edits |
KENT_REVIEWER_FREQUENCY |
Allowed: off, all, edits. all runs the reviewer after every completed assistant turn. edits runs it only after successful first-class file edits. |
reviewer.model |
string | inherits model |
KENT_REVIEWER_MODEL |
Separate model for the reviewer pass. If unset, Kent uses main model. |
reviewer.thinking_level |
string | inherits thinking_level |
KENT_REVIEWER_THINKING_LEVEL |
Allowed: low, medium, high, xhigh, max, ultra. |
reviewer.model_verbosity |
string | inherits model_verbosity |
KENT_REVIEWER_MODEL_VERBOSITY |
Text verbosity hint for supported reviewer models. Allowed: "", low, medium, high. |
reviewer.provider_override |
string | inherits provider_override |
KENT_REVIEWER_PROVIDER_OVERRIDE |
Forces provider family for the reviewer model. Allowed: openai, anthropic. |
reviewer.openai_base_url |
string | inherits openai_base_url for OpenAI-family reviewer providers |
KENT_REVIEWER_OPENAI_BASE_URL |
OpenAI-compatible base URL for the reviewer model. Non-OpenAI endpoints can run without Kent auth when the server accepts anonymous requests. |
reviewer.auth |
string | inherit |
KENT_REVIEWER_AUTH |
Reviewer auth policy. inherit uses Kent’s configured auth. none sends no Authorization header; providers that require auth return their normal runtime error. |
reviewer.model_context_window |
int | inherits model_context_window |
KENT_REVIEWER_MODEL_CONTEXT_WINDOW |
Explicit reviewer context-window size sent to the reviewer provider. The effective value must be at least 40000. |
reviewer.system_prompt_file |
string | "" |
Path to a custom supervisor system prompt file. Relative paths resolve from the config file directory. Workspace config overrides global config; | |
reviewer.timeout_seconds |
int | 120 |
KENT_REVIEWER_TIMEOUT_SECONDS |
Reviewer HTTP timeout. Must be > 0. |
reviewer.verbose_output |
bool | false |
KENT_REVIEWER_VERBOSE_OUTPUT |
Controls only whether the TUI initially expands Reviewer feedback. It never controls row existence or Desktop presentation. |
Supervisor Capability Overrides
Section titled “Supervisor Capability Overrides”Use these for custom supervisor models or supervisor providers when the built-in registry is not enough.
Key (inside reviewer.provider_capabilities.*) |
Type | Default | Env | Description |
|---|---|---|---|---|
supports_reasoning_effort |
bool | inherits model_capabilities.supports_reasoning_effort |
KENT_REVIEWER_MODEL_CAPABILITIES_SUPPORTS_REASONING_EFFORT |
Override-marks the reviewer model as supporting reasoning effort / thinking levels. |
supports_vision_inputs |
bool | inherits model_capabilities.supports_vision_inputs |
KENT_REVIEWER_MODEL_CAPABILITIES_SUPPORTS_VISION_INPUTS |
Marks the reviewer model as supporting multimodal image and PDF inputs. |
provider_id |
string | inherits provider_capabilities.provider_id |
KENT_REVIEWER_PROVIDER_CAPABILITIES_PROVIDER_ID |
Required whenever you set reviewer provider capability overrides. |
supports_responses_api |
bool | inherits provider_capabilities.supports_responses_api |
KENT_REVIEWER_PROVIDER_CAPABILITIES_SUPPORTS_RESPONSES_API |
Marks the reviewer provider as supporting the Responses API. |
supports_responses_compact |
bool | inherits provider_capabilities.supports_responses_compact |
KENT_REVIEWER_PROVIDER_CAPABILITIES_SUPPORTS_RESPONSES_COMPACT |
Marks the reviewer provider as supporting server-side compaction. |
supports_request_input_token_count |
bool | inherits provider_capabilities.supports_request_input_token_count |
KENT_REVIEWER_PROVIDER_CAPABILITIES_SUPPORTS_REQUEST_INPUT_TOKEN_COUNT |
Marks the reviewer provider as supporting exact request input-token counting. |
supports_prompt_cache_key |
bool | inherits provider_capabilities.supports_prompt_cache_key |
KENT_REVIEWER_PROVIDER_CAPABILITIES_SUPPORTS_PROMPT_CACHE_KEY |
Marks the reviewer provider as accepting prompt cache keys. |
supports_native_web_search |
bool | inherits provider_capabilities.supports_native_web_search |
KENT_REVIEWER_PROVIDER_CAPABILITIES_SUPPORTS_NATIVE_WEB_SEARCH |
Marks the reviewer provider as supporting native web search. |
supports_reasoning_encrypted |
bool | inherits provider_capabilities.supports_reasoning_encrypted |
KENT_REVIEWER_PROVIDER_CAPABILITIES_SUPPORTS_REASONING_ENCRYPTED |
Marks the reviewer provider as supporting encrypted reasoning items. |
supports_server_side_context_edit |
bool | inherits provider_capabilities.supports_server_side_context_edit |
KENT_REVIEWER_PROVIDER_CAPABILITIES_SUPPORTS_SERVER_SIDE_CONTEXT_EDIT |
Marks the reviewer provider as supporting server-side context editing. |
supports_provider_verbosity |
bool | inherits provider_capabilities.supports_provider_verbosity |
KENT_REVIEWER_PROVIDER_CAPABILITIES_SUPPORTS_PROVIDER_VERBOSITY |
Controls Responses text.verbosity for unknown reviewer models; known models use catalog facts. |
is_openai_first_party |
bool | inherits provider_capabilities.is_openai_first_party |
KENT_REVIEWER_PROVIDER_CAPABILITIES_IS_OPENAI_FIRST_PARTY |
Marks the reviewer provider as first-party OpenAI semantics. |
Model Capability Overrides
Section titled “Model Capability Overrides”Use these only for custom or alias models when the built-in model registry is not enough.
| Key | Type | Default | Env | Description |
|---|---|---|---|---|
model_capabilities.supports_reasoning_effort |
bool | false |
KENT_MODEL_CAPABILITIES_SUPPORTS_REASONING_EFFORT |
Override-marks the configured model as supporting reasoning effort / thinking levels. |
model_capabilities.supports_vision_inputs |
bool | false |
KENT_MODEL_CAPABILITIES_SUPPORTS_VISION_INPUTS |
Marks the configured model as supporting multimodal image and PDF inputs. |
If both values stay false, Kent falls back to the built-in model capability registry.
Provider Capability Overrides
Section titled “Provider Capability Overrides”Use these only for custom providers or models (such as local models).
| Key | Type | Default | Env | Description |
|---|---|---|---|---|
provider_capabilities.provider_id |
string | "" |
KENT_PROVIDER_CAPABILITIES_PROVIDER_ID |
Required whenever you set provider capability overrides. |
provider_capabilities.supports_responses_api |
bool | false |
KENT_PROVIDER_CAPABILITIES_SUPPORTS_RESPONSES_API |
Marks the provider as supporting the Responses API. |
provider_capabilities.supports_responses_compact |
bool | false |
KENT_PROVIDER_CAPABILITIES_SUPPORTS_RESPONSES_COMPACT |
Marks the provider as supporting server-side compaction. |
provider_capabilities.supports_native_web_search |
bool | false |
KENT_PROVIDER_CAPABILITIES_SUPPORTS_NATIVE_WEB_SEARCH |
Marks the provider as supporting native web search. |
provider_capabilities.supports_reasoning_encrypted |
bool | false |
KENT_PROVIDER_CAPABILITIES_SUPPORTS_REASONING_ENCRYPTED |
Marks the provider as supporting encrypted reasoning items. |
provider_capabilities.supports_server_side_context_edit |
bool | false |
KENT_PROVIDER_CAPABILITIES_SUPPORTS_SERVER_SIDE_CONTEXT_EDIT |
Marks the provider as supporting server-side context editing. |
provider_capabilities.supports_provider_verbosity |
bool | false |
KENT_PROVIDER_CAPABILITIES_SUPPORTS_PROVIDER_VERBOSITY |
Controls Responses text.verbosity for unknown models; known models use catalog facts. |
provider_capabilities.is_openai_first_party |
bool | false |
KENT_PROVIDER_CAPABILITIES_IS_OPENAI_FIRST_PARTY |
Marks the provider as first-party OpenAI semantics, which gates some Responses-specific behavior such as fast mode and phase protocol features. |
Known models always use the built-in catalog. For unknown non-empty models, supports_provider_verbosity controls whether Kent sends text.verbosity. Without a provider override, OpenAI and ChatGPT Codex built-ins enable it; OpenAI-compatible and Anthropic built-ins disable it.
[tools] is a per-tool boolean table in config.toml.
File-based tool toggles merge with defaults. KENT_TOOLS and kent run --tools behave differently: they replace the entire tool set with the CSV you provide.
| Key | Default | What enabling it exposes |
|---|---|---|
tools.ask_question |
task-dependent | Tool to ask interactive questions |
tools.shell |
true |
The primary shell tool. Internally this maps to exec_command. |
tools.patch |
model-dependent | Freeform patch grammar edit tool |
tools.edit |
model-dependent | JSON text replacement/create/delete edit tool. Intended for models that are not trained to apply patches. |
tools.trigger_handoff |
true |
Tool agents can use to proactively compact their own context. |
tools.view_image |
model-dependent | Ability to view PNG, JPEG, still GIF, and PDF files (if supported) |
tools.web_search |
provider-dependent | Tool to search the web |
tools.write_stdin |
true |
Interaction with background shells. |
Notes:
tools.web_search = truedoes not force web search on. Native search still depends onweb_search = "native"and provider support.tools.patchandtools.editare mutually exclusive. If both are left at their defaults, Kent choosespatchfor models that are trained on freeform patch syntax, otherwiseedit. To forceedit, setedit = trueandpatch = false.
Ripgrep config
Section titled “Ripgrep config”Kent also installs an optimized, editable ripgrep config at:
~/.kent/rg.confKent creates rg.conf in the config+data root when missing and exports it to shell tools via RIPGREP_CONFIG_PATH only when you have not already set RIPGREP_CONFIG_PATH yourself.
Subagents
Section titled “Subagents”[subagents.<role>] is a file-only table for named headless subagent roles. Fast is always-present, but you can add custom agents here.
max_subagent_depth is a root-level TOML setting rather than a role setting. It has no environment-variable or kent run flag override.
More info on the Subagents page.
Skills
Section titled “Skills”[skills] is a file-only per-skill boolean table in config.toml. Disabled skills remain visible in clients but are omitted from model context. Keys are matched case-insensitively.
[skills]"<skill name>" = false
[subagents.worker.skills]"<skill name>" = falseNotes:
[subagents.<role>.skills]overlays per-skill toggles for that role.- Use
"quoted names"to refer to skill keys containing spaces.