# Koshi 0.6.0 — Config commands (/docs/v0.6/cli/config)



## Find the directory [#find-the-directory]

```bash
koshi config path
```

Prints the config directory for the current platform.

## Explain a setting [#explain-a-setting]

```bash
koshi config explain koshi.pane.min-cols
koshi config explain koshi.auto-close-session
koshi config explain keybinding.chord-timeout-ms
koshi config explain theme.colors.accent
koshi config explain profile.version
```

Keys include their file kind. An unknown key exits `2` and suggests the nearest
known key.

## Check every file [#check-every-file]

```bash
koshi config check
```

Scans:

```text
koshi.kdl
keybinding.kdl
themes/*.kdl
profile/*.kdl
```

It reports all read and schema errors together and changes nothing. Each path
must be a regular file or a symlink to one.

## Migrate schemas [#migrate-schemas]

```bash
koshi config migrate
```

Migration validates every file before writing, applies each registered version
step in order, and validates after each step. An unreadable file, malformed
KDL, unsupported version, or missing step stops the run before any file is
written. Unknown keys and bad values are preserved by migration, though
`koshi config check` still reports them.

Changed files use atomic replacement one at a time. Symlinks remain symlinks
and their targets change. A write error lists files already completed and marks
the failed file as possibly changed.

Current schema version is `2`. Version `1` files migrate to version `2`.
Session servers and the router run this migration before reading config at
startup. If startup migration fails, they report the error and continue with
the files as they are. Migration does not repair invalid fields.
