# Settings & Files


kli reads two configuration files, and they hold different things.

- `settings.json` configures behavior: theme, keybindings, default model and
  provider, session storage, capabilities, profiles, and observability. kli reads
  a global copy under `~/.config/kli/` and a project copy under `<repo>/.kli/`,
  deep-merges the project over the global, then applies the active profile's
  overlay on top.
- `config.json` is global-only and holds three keys for extension discovery:
  `enabled`, `disabled`, and `extension-dirs`.

Both are forgiving: a malformed file is reported and skipped rather than stopping
kli.

## Pages

- [Settings](/kli/config/settings) — every `settings.json` key, with its type,
  default, and merge behavior.
- [config.json](/kli/config/config-json) — the extension discovery file.
- [Capabilities](/kli/config/capabilities) — the capability vocabulary and what
  each one gates.
- [Profiles](/kli/config/profiles) — the built-in profiles and how precedence is
  resolved.
- [Files and paths](/kli/config/files-and-paths) — every path kli reads and
  writes.
