Core Settings
Directory where your worktrees will be created. Supports tilde expansion.
Worktree List
How worktrees are sorted in the list.Options:
switched- Last accessed by you (default)active- Last commit datepath- Alphabetical
Pane arrangement. Toggle at runtime with
L.Options:default- Worktrees left, status/log stacked right; notes split left when presenttop- Worktrees full-width top, notes row below when present, status/log side-by-side bottom
Refresh git metadata and working tree status in the background. Set to false to rely on manual refresh with
r.Background refresh interval in seconds.
Periodically refresh CI status for GitHub repositories. When enabled, CI checks are refreshed automatically for open PRs or branches with pending CI jobs. Disabled by default as it uses the GitHub API rate limit (5,000 requests/hour for authenticated users).
Maximum length for worktree names in the table display. Set to 0 to disable truncation.
UI & Display
TUI theme. Leave empty to auto-detect based on terminal background colour (defaults to
rose-pine for dark terminals, dracula-light for light terminals).See Themes for the complete list of built-in themes and custom theme options.Icon set for file trees, PR views, and UI indicators.Options:
nerd-font-v3- Nerd Font iconstext- Text-only (no icons)
Search
Start with the filter focused and automatically select the first match when you press Enter.
Show fuzzy suggestions in input dialogues.
Enable MRU (Most Recently Used) sorting for command palette.
Number of recent commands to show in command palette.
Diff & Pager
Diff formatter/pager used for rendering diffs. Set to empty string (
"") to disable diff formatting and use plain git diff output.Examples: delta, diff-so-fancy, diffnav, lumenExtra arguments passed to
git_pager. If you omit this setting and git_pager is delta, LazyWorktree automatically selects a syntax theme matching your UI theme.Set to true for interactive diff viewers that need terminal control (e.g.,
diffnav, tig). Interactive tools cannot be piped through less. When true, only unstaged changes (git diff) are shown.Set to true for command-based diff viewers that run their own git commands (e.g.,
lumen which accepts lumen diff). When true, LazyWorktree calls <git_pager> diff [args...] directly instead of piping git diff output.Pager used for show_output custom commands. Defaults to
$PAGER environment variable or less if unset.Pager for CI check logs (accessed with CI environment variables:
v key on CI checks). When set, runs interactively with direct terminal control. Falls back to pager if not configured.Example to strip GitHub Actions timestamps:LW_CI_JOB_NAME, LW_CI_JOB_NAME_CLEAN, LW_CI_RUN_ID, LW_CI_STARTED_ATMaximum number of untracked files to show diffs for. Set to 0 to disable diff display for untracked files.
Maximum characters to read from diff output. Set to 0 to disable truncation.
Editor
Editor for opening files from the Status pane (triggered with
e key). Defaults to $EDITOR environment variable, then nvim, then vi.Lifecycle Hooks
Commands to run after creating a new worktree. Executes when creating worktrees from branches, PRs, issues, or changes. Execution order: global config commands first, then repository-specific commands from
.wt files.Special built-in command:link_topsymlinks- Symlinks untracked/ignored files from main worktree root, non-empty editor configs (.vscode,.idea,.cursor,.claude), createstmp/directory, runsdirenv allowif.envrcexists
WORKTREE_PATH, WORKTREE_BRANCH, WORKTREE_NAME, MAIN_WORKTREE_PATH, REPO_NAMEExamples:Commands to run before deleting a worktree. Executes when deleting individual worktrees or pruning merged worktrees. Execution order: global config commands first, then repository-specific commands from
.wt files.Environment variables available: Same as init_commandsExamples:Optional path to store all worktree notes in a single shared JSON file. Useful when synchronising notes across systems. In this mode, notes are keyed by repo/worktree (relative to
worktree_dir), rather than absolute paths.Example: ~/.local/share/lazyworktree/worktree-notes.jsonGit Operations
Merge method for the “Absorb worktree” action and Sync (
S) behaviour.Options:rebase- Rebases onto main, then fast-forwards main to the branch (default)merge- Creates a merge commit on main
Disable all PR/MR fetching and display.
Branch Naming
See Branch Naming for detailed information on these settings.Template for issue branch names when creating worktrees from issues.Available placeholders:
{number}, {title}, {generated}Template for PR branch and worktree names when creating from pull requests.Available placeholders:
{number}, {title}, {generated}, {pr_author}Script to generate branch name suggestions when creating worktrees from changes, issues, or PRs.For issues/PRs: outputs a title used in the
{generated} placeholderFor diffs: outputs a complete branch nameThe script receives content on stdin and has access to environment variables: LAZYWORKTREE_TYPE, LAZYWORKTREE_NUMBER, LAZYWORKTREE_TEMPLATE, LAZYWORKTREE_SUGGESTED_NAMEScript to generate an initial worktree note when creating from a PR/MR or issue. The script receives title + body on stdin.Environment variables:
LAZYWORKTREE_TYPE, LAZYWORKTREE_NUMBER, LAZYWORKTREE_TITLE, LAZYWORKTREE_URLSession Management
Prefix for tmux/zellij session names. Command palette filters sessions by this prefix.
Security
Security setting for executing commands from
.wt files.Options:tofu- Trust On First Use - prompts you the first time or when commands change (default)never- Skips all commands from.wtfilesalways- Executes without prompting (use with caution)
Debug log file path for troubleshooting. When set, LazyWorktree writes debug information to this file. Leave commented out unless diagnosing issues.Example:
/tmp/lazyworktree-debug.log