Skip to content

Configuration

This is the full configuration reference. For a friendlier overview, see Settings & Customization.

Kangentic resolves settings in three layers:

  1. Built-in defaults — sensible defaults for all settings
  2. Global user config — your personal defaults for all projects
  3. Project overrides — per-repository settings

Effective config = deep-merge(defaults, global config, project config).

Global: %APPDATA%/kangentic/config.json

Project: <project>/.kangentic/config.json

Project settings override global settings when both are present.

KeyTypeDefaultScopeDescription
themestring"dark"BothUI theme: dark, light, moon, forest, ocean, ember, sand, mint, sky, peach
sidebarVisiblebooleantrueGlobal onlyShow/hide the sidebar
boardLayoutstring"horizontal"Global onlyBoard scroll direction: horizontal or vertical
cardDensitystring"default"Global onlyTask card density: compact, default, or comfortable
columnWidthstring"default"Global onlyColumn width: narrow, default, or wide
terminalPanelVisiblebooleantrueGlobal onlyShow the bottom terminal panel
statusBarVisiblebooleantrueGlobal onlyShow the status bar at the bottom of the window
animationsEnabledbooleantrueGlobal onlyEnable transition animations across the UI
showBoardSearchbooleantrueGlobal onlyShow the search bar above board columns
skipDeleteConfirmbooleanfalseGlobal onlySkip confirmation dialog on task delete
skipBoardConfigConfirmbooleanfalseGlobal onlySkip confirmation when applying board config changes
autoFocusIdleSessionbooleanfalseGlobal onlyAuto-switch to session tab when agent goes idle
skipDoneWorktreeConfirmbooleanfalseGlobal onlySkip the confirmation dialog when a task moves to Done. Written by the Done-move dialog’s “don’t ask again” checkbox (not surfaced in the Settings panel)
restoreWindowPositionbooleantrueGlobal onlyRestore window position and size from last session
statusBarPeriodstring"live"Global onlyDefault time period for usage stats: live, today, week, month, all
KeyTypeDefaultScopeDescription
backlog.prioritiesarraySee belowBothCustomizable priority levels with labels and colors
backlog.labelColorsobject{}BothDefault color mappings for backlog labels ({ "label-name": "#hex" })

Default priorities:

IndexLabelColor
0None#6b7280
1Low#3b82f6
2Medium#eab308
3High#f97316
4Urgent#ef4444
KeyTypeDefaultScopeDescription
terminal.shellstring | nullnullBothShell executable path. null = auto-detect
terminal.fontFamilystring"Menlo, Consolas, \"Courier New\", monospace"BothTerminal font family
terminal.fontSizenumber14BothTerminal font size (px)
terminal.scrollbackLinesnumber5000BothTerminal scrollback buffer size (lines)
terminal.cursorStylestring"block"BothCursor style: block, underline, or bar
terminal.showPreviewbooleanfalseGlobal onlyShow terminal preview in task cards
terminal.panelHeightnumber250Global onlyBottom panel height (px)
terminal.panelCollapsedbooleanfalseGlobal onlyPersisted collapsed state of the bottom terminal panel

As of v0.15.0, agent settings are unified across all supported agents (Claude Code, Codex CLI, Gemini CLI, Aider, Cursor CLI, GitHub Copilot CLI, and Warp/Oz CLI). The claude.* keys from previous releases have been renamed to agent.*.

KeyTypeDefaultScopeDescription
agent.permissionModestring"acceptEdits"BothDefault permission mode for spawned agents
agent.cliPathsobject{}Global onlyPer-agent CLI path overrides, keyed by agent name (claude, codex, gemini, aider, cursor, copilot, warp). null = auto-detect. Example: { "claude": null, "codex": "/usr/local/bin/codex", "cursor": "/usr/local/bin/agent" }
agent.maxConcurrentSessionsnumber8Global onlyMax concurrent PTY sessions across all agents
agent.queueOverflowstring"queue"Global onlyOverflow behavior: queue or reject
agent.idleTimeoutMinutesnumber0Global onlyAuto-suspend sessions after N minutes idle. 0 = disabled
agent.autoResumeSessionsOnRestartbooleantrueGlobal onlyWhen true, agent sessions that were running at last close auto-resume when Kangentic restarts. When false, sessions stay paused and require a manual Resume click on each task. Turn off if auto-resuming many agents at once overwhelms your machine.

Each agent advertises its own supported permission modes, and the Edit Column and Settings dropdowns update dynamically when you switch agents. The full set of modes is:

ModeBehaviorSupported by
planRead-only tools auto-approved; edits require approvalClaude, Codex, Gemini, Aider, Copilot, Warp
defaultUses the agent’s built-in defaults (e.g., Claude Code’s .claude/settings.json allowlist)Claude, Codex, Gemini, Aider, Cursor, Copilot, Warp
acceptEditsFile edits auto-approved; other actions promptClaude, Codex, Gemini, Aider, Copilot
bypassPermissionsFull autonomy, no permission prompts at allClaude, Codex, Gemini, Aider, Cursor, Copilot, Warp
dontAskDeny everything not already allowed, no interactive promptsClaude, Codex, Copilot
autoClassifier-driven auto-approvalClaude, Copilot

Per-agent defaults:

AgentDefault permission modeNotes
Claude CodeacceptEdits
Codex CLIacceptEdits
Gemini CLIacceptEdits
GitHub Copilot CLIacceptEdits
AiderbypassPermissionsAider is an edit-first CLI that expects broad file-write access
Cursor CLIbypassPermissionsNon-interactive mode is the default so the stream-JSON init event fires and the ContextBar model pill resolves
Warp (Oz CLI)defaultPermission-mode labels are informational only; Warp manages permissions via agent profiles (--profile)

Permission mode is resolved in priority order:

  1. Column’s permission_strategy (if set)
  2. Action’s permissionMode config (if set)
  3. agent.permissionMode from config
KeyTypeDefaultScopeDescription
git.worktreesEnabledbooleantrueBothCreate isolated git worktrees per task
git.autoCleanupbooleantrueBothDelete branches when worktrees are removed
git.defaultBaseBranchstring"main"BothDefault base branch for worktrees
git.copyFilesstring[][]BothFiles to copy from repo root into new worktrees
git.initScriptstring | nullnullBothShell script to run after worktree creation
KeyTypeDefaultScopeDescription
contextBar.showShellbooleantrueGlobal onlyShow shell name in context bar
contextBar.showVersionbooleantrueGlobal onlyShow Claude Code version
contextBar.showModelbooleantrueGlobal onlyShow model name
contextBar.showCostbooleantrueGlobal onlyShow session cost
contextBar.showTokensbooleantrueGlobal onlyShow token usage
contextBar.showContextFractionbooleantrueGlobal onlyShow context window fraction
contextBar.showProgressBarbooleantrueGlobal onlyShow context window progress bar
contextBar.showRateLimitsbooleantrueGlobal onlyShow Claude 5-hour session and weekly plan-usage rate-limit bars (Claude only)
KeyTypeDefaultScopeDescription
sidebar.widthnumber400Global onlySidebar width in pixels
KeyTypeDefaultScopeDescription
notifications.desktop.onAgentIdlebooleantrueGlobal onlyDesktop notification when agent goes idle
notifications.desktop.onAgentCrashbooleantrueGlobal onlyDesktop notification when agent crashes
notifications.desktop.onPlanCompletebooleantrueGlobal onlyDesktop notification when planning completes
notifications.toasts.onAgentIdlebooleantrueGlobal onlyIn-app toast when agent goes idle
notifications.toasts.onAgentCrashbooleantrueGlobal onlyIn-app toast when agent crashes
notifications.toasts.onPlanCompletebooleantrueGlobal onlyIn-app toast when planning completes
notifications.toasts.durationSecondsnumber4BothHow long toasts display
notifications.toasts.maxCountnumber5Global onlyMaximum simultaneous toasts on screen
notifications.cooldownSecondsnumber10Global onlyMinimum seconds between repeated notifications

Each column (swimlane) can override settings individually:

FieldTypeDefaultDescription
permission_strategystring | nullnullPermission mode override for this column
auto_spawnbooleantrueWhether moving a task here spawns an agent
auto_commandstring | nullnullCommand injected into running sessions on task arrival
plan_exit_target_idstring | nullnullTarget column when plan-mode agent exits
agent_overridestring | nullnullUse a specific agent for sessions in this column (one of "claude", "codex", "gemini", "aider", "cursor", "copilot", "warp"). null inherits the project default agent
handoff_contextbooleanfalseWhen enabled, hand the prior agent’s native session history file to the next agent when a task moves into this column. Enables multi-agent context handoff (supported for Claude, Codex, and Gemini; no-op for agents without a parseable native history file)

See Custom Workflows for details on how these interact.

Kangentic includes 10 built-in themes:

  • Dark — Default dark theme
  • Moon — Cool-toned dark theme
  • Forest — Green-accented dark theme
  • Ocean — Blue-accented dark theme
  • Ember — Warm orange-accented dark theme

Set the theme in the settings panel or in your global config file.

These settings cannot be overridden per-project:

  • agent.maxConcurrentSessions
  • agent.queueOverflow
  • agent.cliPaths
  • agent.idleTimeoutMinutes
  • agent.autoResumeSessionsOnRestart
  • sidebarVisible
  • showBoardSearch
  • skipDeleteConfirm
  • skipDoneWorktreeConfirm
  • skipBoardConfigConfirm
  • autoFocusIdleSession
  • boardLayout
  • cardDensity
  • columnWidth
  • terminalPanelVisible
  • statusBarVisible
  • animationsEnabled
  • sidebar.width
  • terminal.panelHeight
  • terminal.panelCollapsed
  • terminal.showPreview
  • restoreWindowPosition
  • statusBarPeriod
  • notifications.* (all notification settings)
  • contextBar.* (all context bar settings)
KeyTypeDefaultScopeDescription
mcpServer.enabledbooleantrueBothEnable/disable the MCP server that lets agents interact with the board

When enabled, each agent session gets access to MCP tools for creating tasks, searching the board, browsing the backlog, and reading session transcripts. As of v0.15.0 the MCP server runs as an in-process streamable HTTP transport (replacing the earlier file-bridge). Disable this if you don’t want agents to be able to modify the board.

VariableDescription
KANGENTIC_DATA_DIROverride the config/data directory path
KANGENTIC_LOG_LEVELSet log verbosity: debug, info, warn, error
KANGENTIC_TELEMETRYSet to off to disable anonymous usage analytics

Kangentic collects anonymous usage analytics via Aptabase. No personal data, code, or file paths are collected. Opt out by setting KANGENTIC_TELEMETRY=0.

See Privacy & Analytics for full details on what is collected and how to opt out.