---
title: "/kotharo:config: Kotharo"
version: v0.8.3
canonical: https://kotharo.com/docs/config/
---

# /kotharo:config

`/kotharo:config` works like `git config` for Kotharo. It shows each setting and the file it comes from, and sets or removes one after your OK. `/kotharo:setup` is the guided way to set the common ones; this is the direct way to set any of them.

## Where settings live

Settings resolve in seven layers. Each overrides the ones above it. Tables merge and arrays replace.

| Layer | File | For |
|---|---|---|
| core | the plugin's `defaults/profile.toml` | everyone |
| profile | your team profile's `profile.toml` | the team |
| plugin | the plugin's own options, today `jira_site` | you, every repo |
| user | `~/.claude/kotharo.toml` | you, every repo |
| repo | `.claude/kotharo.toml`, committed | everyone on this repo |
| toolchain | the `### Toolchain` section of `CLAUDE.md` | this repo's tool bindings |
| local | `.claude/kotharo.local.toml`, gitignored | you, this repo |

Every file is checked like a team profile: it may set only keys the core defaults define, with the same types. A file that breaks this is refused with its error, and nothing changes.

## Show settings

Every setting, each line ending with the layer and file it came from:

```
/kotharo:config show --origin
```

One setting, or every value under a table:

```
/kotharo:config show --origin autonomy.level
```

```
/kotharo:config show --origin lanes.small-fix
```

A line starting with `ignored:` is a value from your team profile that would relax a safety default. Those take effect only from your own file or the repo's, as below.

## Set a setting

Name the key, the value and the layer: `--repo` for this repo and everyone on it, `--local` for you on this repo, or `--user` for all your repos. Leave the layer out and it asks.

```
/kotharo:config set autonomy.level guided --repo
```

```
/kotharo:config set roles.dev.tier opus --local
```

It previews the change first: the value before and after, each with its source, the files it would write, and any warning. A list value is comma separated, such as `scope,merge`. Only after your OK does it write. If `.claude/kotharo.local.toml` isn't in `.gitignore`, it asks whether to add it as part of the same OK.

Setting a tool binding, such as `slots.ticketing`, with `--repo` writes the line in the `### Toolchain` section of `CLAUDE.md`, so the repo's bindings stay in one place.

A change to `.claude/kotharo.toml` or `CLAUDE.md` is a change to the repo. It shows in `git status`, and you commit it like any other.

## Remove a setting

`unset` removes one key from one layer, and shows the value it falls back to and where that comes from:

```
/kotharo:config unset roles.dev.tier --local
```

`reset` removes a whole layer's file, after showing every key it sets and what each falls back to:

```
/kotharo:config reset --local
```

## Safety defaults

A value that relaxes a safety default, such as `deploy.dev_auto_deploy = true`, takes effect only from your own `~/.claude/kotharo.toml` or the repo's committed `.claude/kotharo.toml`. A team profile can't turn one on for you, and the local file can't hold one or undo a stricter value from a layer above it. The same goes for a looser [autonomy level](https://kotharo.com/docs/autonomy-levels/).

Nothing in any layer loosens your `CLAUDE.md` rules or the core rules.

Next: [Adapters](https://kotharo.com/docs/adapters/). [All docs](https://kotharo.com/docs/)

Written for Kotharo v0.8.3.
