Skip to main content
Version: 0.0.5

Config reference

graft has two configuration layers: a global config at the XDG data path and a per-project config at .graft/config.json. Read and write them with graft config get / graft config set.

Global config

The global config lives at ~/.local/share/graft/config.json (XDG data home). It is the base layer; all fields fall back to it when the project config has no override.

KeyTypeDefaultDescription
scopestringagentsWhich capability is synced: agents, skills, or slash.
sync.gitAutoboolfalseAuto-commit graft's tracking branches vs. using the builtin-git path only.
providers.modestringallProvider selection: all (all supported providers except disabled) or specific (only providers.enabled).
providers.enabled[]string[]Active providers when mode=specific.
providers.disabled[]string[]Excluded providers when mode=all.
themestringdarkColor theme: dark, dark-dim, light, or colorblind.
skills.enabledbooltrueMaster switch for the init/sync skill-apply hook.
skills.autoInstallboolfalseInstall missing referenced skills without prompting (equivalent to --yes).
skills.providers[]string[]Restrict the skill hook to these supporting provider ids. Empty = all supporting providers.

Per-project config

The per-project config lives at .graft/config.json inside the workspace. It travels with the repo and overrides global provider selection and scope for that project. Global-only keys (theme, skills, sync.gitAuto) have no project meaning.

KeyTypeDefaultDescription
scopestring(global)Override synced capability for this project.
providers.modestring(global)Override provider mode for this project.
providers.enabled[]string[](global)Override active providers for this project.
providers.disabled[]string[](global)Override excluded providers for this project.

When a project sets providers, the project value wins entirely; the global effective set is not merged.

Provider ids

The supported provider id strings (use in providers.enabled[] / providers.disabled[]):

Provider idToolNotes
claude-codeClaude Code
codexCodex
gemini-cliGemini CLIDeprecated 2026-06-15; excluded from active sync.
cursorCursor
github-copilotGitHub Copilot
opencodeOpenCode
roo-codeRoo Code
gooseGoose
grok-cliGrok CLI
antigravityAntigravityCatalog entry present; unregistered in sync engine (pending research spike).

See Providers.

Usage examples

# View the resolved config for this project
graft config get

# View global config only
graft config get -g

# Set scope globally
graft config set -g --scope agents

# Restrict sync to specific providers (project)
graft config set --providers.mode specific --providers.enabled claude-code,opencode

# Exclude a provider (project, mode=all)
graft config set --providers.mode all --providers.disabled antigravity

# Toggle skills hook off globally
graft config set -g --skills.enabled false

# Change color theme globally
graft config set -g --theme dark-dim

Config resolution order

  1. Project config (.graft/config.json) — provider selection and scope, when set.
  2. Global config (~/.local/share/graft/config.json) — everything else.

graft config get (no -g) shows the resolved view: what a sync would actually use.