Skip to content

Configuration

Lane Holloway edited this page Oct 22, 2026 · 2 revisions

Configuration

Settings live in ~/.config/fast-lane/config.json (or under $XDG_CONFIG_HOME); -config <path> uses another file. Everything here can be changed in the app: auto rules on the Rules tab, everything else on the Settings tab, and watched repos on the Repos tab. Changes made in the app are saved right away and apply from the next poll or session. Edits to the file by hand apply when Fast Lane restarts. Don't edit the file while Fast Lane is running, since it saves its own copy over yours.

A config with every setting, showing the defaults where there are any:

{
  "poll_interval": "2m",
  "workspace_dir": "~/.local/share/fast-lane/workspaces",
  "code_dirs": ["~/Code", "~/code", "~/src", "~/Projects", "~/Developer", "~/dev", "~/repos"],
  "max_concurrent": 2,
  "max_auto_runs": 5,
  "inbox": { "enabled": true, "auto_run": true },
  "claude": {
    "path": "claude",
    "model": "claude-opus-5-5",
    "effort": "medium",
    "permission_mode": "manual",
    "allowed_tools": [
      "Read", "Grep", "Glob",
      "Bash(git status:*)", "Bash(git diff:*)", "Bash(git log:*)", "Bash(git show:*)",
      "Bash(gh pr view:*)", "Bash(gh pr diff:*)", "Bash(gh pr checks:*)",
      "Bash(gh issue view:*)", "Bash(gh run view:*)", "Bash(gh run list:*)",
      "Bash(gh api --method GET:*)", "Bash(gh api -X GET:*)"
    ],
    "max_budget_usd": 5,
    "extra_args": []
  },
  "prompts": {
    "issue": "Triage issue #{{.Number}} in {{.Repo}}: {{.Title}}\n\n{{.Body}}"
  },
  "auto_rules": {
    "pull_request:checks_failed": { "authors": ["you"], "allow": ["edit", "update_pr"] }
  },
  "repos": [
    {
      "full_name": "you/your-repo",
      "local_path": "~/Code/your-repo",
      "events": ["pull_request", "issue", "dependabot_alert", "code_scanning_alert"],
      "auto_run": true
    }
  ]
}

Polling and limits

Setting Default Does
poll_interval 2m How often watched repos and the inbox are checked. At least 30s.
max_concurrent 2 How many Claude sessions run at once.
max_auto_runs 5 How many times auto-run may act on one item. Sessions you start don't count.

Folders

Setting Default Does
workspace_dir ~/.local/share/fast-lane/workspaces Where repos without a local checkout are cloned, and session worktrees live (under .worktrees/).
code_dirs the usual places Searched for local checkouts. [] means always clone.

Claude Code

Setting Default Does
claude.path claude The claude executable, by name or full path.
claude.model Claude Code's default Passed to --model, such as claude-opus-5-5. A rule's model replaces it.
claude.effort Claude Code's default Passed to --effort: low, medium, high, xhigh or max. A rule's effort replaces it.
claude.permission_mode manual Passed to --permission-mode (manual, acceptEdits, auto, …). Prompts the mode doesn't settle come to you as dialogs.
claude.allowed_tools read-only tools Claude Code permission rules pre-approved in every session. A rule's allow adds to these.
claude.max_budget_usd no cap Caps what one session may spend, passed to --max-budget-usd.
claude.extra_args none Appended to every claude command.

Inbox

Setting Default Does
inbox.enabled true Read review requests, mentions and assignments from your notifications.
inbox.auto_run true Run Claude on them without asking. See Inbox.
inbox.full_auto false Run them in full auto.

Prompts and rules

  • prompts replaces built-in instructions by key, such as issue or pull_request:checks_failed. See Prompts.
  • auto_rules decides what runs on its own. See Auto rules.

Repos

Each watched repo has:

Setting Does
full_name owner/name
events The kinds to watch: pull_request, issue, dependabot_alert, code_scanning_alert.
auto_run Whether its triggers run Claude without asking. Off for new repos.
full_auto Run every trigger in full auto. Implies auto_run.
local_path A checkout to make worktrees from, overriding the one found in code_dirs.
auto_rules Rules for this repo only. When set, they replace the global rules for it.

A config that doesn't load, such as a rule filter that can't apply to its kind or an unknown action, stops Fast Lane at startup with a message saying what and where.

State

Fast Lane keeps its state in ~/.local/state/fast-lane/ (or under $XDG_STATE_HOME): state.json holds what it has seen and dismissed, each item's last snapshot and the changes that fired, inbox items, and session history. logs/ holds each session's raw stream-json log, useful when something goes wrong.

Clone this wiki locally